fune/browser/fxr/content/fxr-fullScreen.js
thomasmo fe82b4a4db Bug 1587521 - Enable FullScreen in FxR for Desktop r=mconley,Gijs
Bug 1587521 - Enable FullScreen in FxR for Desktop

This change enables Fullscreen functionality in the UI for Firefox Reality for Desktop. On Fullscreen, the window (rather than the desktop) is taken over, and it is up to the host to render the contents as fullscreen.

To mitigate the impact on Desktop's implementation, browser-fullScreenAndPointerLock.js is forked and removes the dependencies on browser.js. These two files will be rationalized at a later time.

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

--HG--
rename : browser/base/content/browser-fullScreenAndPointerLock.js => browser/fxr/content/fxr-fullScreen.js
extra : moz-landing-system : lando
2019-10-18 00:15:08 +00:00

64 lines
2.1 KiB
JavaScript

/* -*- indent-tabs-mode: nil; js-indent-level: 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/. */
// This file is loaded into the browser window scope.
/* eslint-env mozilla/browser-window */
// fxr-fullScreen.js is a provisional, stripped-down clone of
// browser\base\content\browser-fullScreenAndPointerLock.js
// that is adapted for Firefox Reality on Desktop.
// The bug to track its removal is
// Bug 1587946 - Rationalize the fork of browser-fullScreenAndPointerLock.js
var FullScreen = {
init() {
// Called when the Firefox window go into fullscreen.
addEventListener("fullscreen", this, true);
if (window.fullScreen) {
this.toggle();
}
},
toggle() {
var enterFS = window.fullScreen;
if (enterFS) {
document.documentElement.setAttribute("inFullscreen", true);
} else {
document.documentElement.removeAttribute("inFullscreen");
}
},
handleEvent(event) {
if (event.type === "fullscreen") {
this.toggle();
}
},
enterDomFullscreen(aBrowser, aActor) {
if (!document.fullscreenElement) {
return;
}
// If it is a remote browser, send a message to ask the content
// to enter fullscreen state. We don't need to do so if it is an
// in-process browser, since all related document should have
// entered fullscreen state at this point.
// This should be done before the active tab check below to ensure
// that the content document handles the pending request. Doing so
// before the check is fine since we also check the activeness of
// the requesting document in content-side handling code.
if (aBrowser.isRemoteBrowser) {
aActor.sendAsyncMessage("DOMFullscreen:Entered", {});
}
document.documentElement.setAttribute("inDOMFullscreen", true);
},
cleanupDomFullscreen(aActor) {
aActor.sendAsyncMessage("DOMFullscreen:CleanUp", {});
document.documentElement.removeAttribute("inDOMFullscreen");
},
};