gecko-dev/gfx/vr/FxRWindowManager.cpp
Daosheng Mu 183d99c002 Bug 1587942 - Forwarding keyboard show/hide events to VR host API. r=thomasmo,PhilipLamb,masayuki,imanol
Forwarding keyboard focus/blur events to VR browser that runs at another process. We will need to set these events in VR shmem, then VR host can receive these states from other process.

Differential Revision: https://phabricator.services.mozilla.com/D48903

--HG--
extra : moz-landing-system : lando
2019-10-18 01:24:56 +00:00

50 lines
1.6 KiB
C++

/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#include "FxRWindowManager.h"
#include "mozilla/Assertions.h"
#include "nsPIDOMWindow.h"
#include "mozilla/ClearOnShutdown.h"
#include "nsWindow.h"
static mozilla::StaticAutoPtr<FxRWindowManager> sFxrWinMgrInstance;
FxRWindowManager* FxRWindowManager::GetInstance() {
if (sFxrWinMgrInstance == nullptr) {
sFxrWinMgrInstance = new FxRWindowManager();
ClearOnShutdown(&sFxrWinMgrInstance);
}
return sFxrWinMgrInstance;
}
FxRWindowManager::FxRWindowManager() : mWindow(nullptr) {}
// Track this new Firefox Reality window instance
void FxRWindowManager::AddWindow(nsPIDOMWindowOuter* aWindow) {
if (mWindow != nullptr) {
MOZ_CRASH("Only one window is supported");
}
mWindow = aWindow;
}
// Returns true if the window at the provided ID was created for Firefox Reality
bool FxRWindowManager::IsFxRWindow(uint64_t aOuterWindowID) {
return (mWindow != nullptr) && (mWindow->WindowID() == aOuterWindowID);
}
// Returns true if the window was created for Firefox Reality
bool FxRWindowManager::IsFxRWindow(const nsWindow* aWindow) const {
return (mWindow != nullptr) &&
(aWindow ==
mozilla::widget::WidgetUtils::DOMWindowToWidget(mWindow).take());
}
uint64_t FxRWindowManager::GetWindowID() const {
MOZ_ASSERT(mWindow);
return mWindow->WindowID();
}