summaryrefslogtreecommitdiffstats
path: root/application/palemoon/base
diff options
context:
space:
mode:
authorMoonchild <mcwerewolf@gmail.com>2018-05-06 20:44:37 +0200
committerGitHub <noreply@github.com>2018-05-06 20:44:37 +0200
commit61394bf4ff79650ee4b3f3951331c8a8775de6e3 (patch)
tree85111dd8e0b0d22377dc0f3eb18a672055c9dd11 /application/palemoon/base
parent1fbd4d95796ff084e84e4b9e32d1c23aa2672825 (diff)
parent79f8a278d95be21ce6f0999a304da5bdd9924dca (diff)
downloadUXP-61394bf4ff79650ee4b3f3951331c8a8775de6e3.tar
UXP-61394bf4ff79650ee4b3f3951331c8a8775de6e3.tar.gz
UXP-61394bf4ff79650ee4b3f3951331c8a8775de6e3.tar.lz
UXP-61394bf4ff79650ee4b3f3951331c8a8775de6e3.tar.xz
UXP-61394bf4ff79650ee4b3f3951331c8a8775de6e3.zip
Merge pull request #334 from JustOff/PR_fullscreen_warning
[PALEMOON] Replace the fullscreen permission dialog with a warning and update the permission management
Diffstat (limited to 'application/palemoon/base')
-rw-r--r--application/palemoon/base/content/browser-fullScreen.js102
-rw-r--r--application/palemoon/base/content/browser.css12
-rw-r--r--application/palemoon/base/content/browser.js2
-rw-r--r--application/palemoon/base/content/browser.xul12
-rw-r--r--application/palemoon/base/content/pageinfo/pageInfo.xul29
-rw-r--r--application/palemoon/base/content/pageinfo/permissions.js14
6 files changed, 15 insertions, 156 deletions
diff --git a/application/palemoon/base/content/browser-fullScreen.js b/application/palemoon/base/content/browser-fullScreen.js
index ffe1da450..6afd247be 100644
--- a/application/palemoon/base/content/browser-fullScreen.js
+++ b/application/palemoon/base/content/browser-fullScreen.js
@@ -91,7 +91,7 @@ var FullScreen = {
if (!document.mozFullScreen)
return;
- // However, if we receive a "MozEnteredDomFullScreen" event for a document
+ // However, if we receive a "MozDOMFullscreen:NewOrigin" event for a document
// which is not a subdocument of a currently active (ie. visible) browser
// or iframe, we know that we've switched to a different frame since the
// request to enter full-screen was made, so we should exit full-screen
@@ -247,66 +247,20 @@ var FullScreen = {
this.warningBox.setAttribute("hidden", true);
this.warningBox.removeAttribute("fade-warning-out");
- this.warningBox.removeAttribute("obscure-browser");
this.warningBox = null;
},
- setFullscreenAllowed: function(isApproved) {
- // The "remember decision" checkbox is hidden when showing for documents that
- // the permission manager can't handle (documents with URIs without a host).
- // We simply require those to be approved every time instead.
- let rememberCheckbox = document.getElementById("full-screen-remember-decision");
- let uri = this.fullscreenDoc.nodePrincipal.URI;
- if (!rememberCheckbox.hidden) {
- if (rememberCheckbox.checked)
- Services.perms.add(uri,
- "fullscreen",
- isApproved ? Services.perms.ALLOW_ACTION : Services.perms.DENY_ACTION,
- Services.perms.EXPIRE_NEVER);
- else if (isApproved) {
- // The user has only temporarily approved fullscren for this fullscreen
- // session only. Add the permission (so Goanna knows to approve any further
- // fullscreen requests for this host in this fullscreen session) but add
- // a listener to revoke the permission when the chrome document exits
- // fullscreen.
- Services.perms.add(uri,
- "fullscreen",
- Services.perms.ALLOW_ACTION,
- Services.perms.EXPIRE_SESSION);
- var onFullscreenchange = function onFullscreenchange(event) {
- if (event.target == document && document.mozFullScreenElement == null) {
- // The chrome document has left fullscreen. Remove the temporary permission grant.
- Services.perms.remove(uri, "fullscreen");
- document.removeEventListener("mozfullscreenchange", onFullscreenchange);
- }
- }
- document.addEventListener("mozfullscreenchange", onFullscreenchange);
- }
- }
- if (this.warningBox)
- this.warningBox.setAttribute("fade-warning-out", "true");
- // If the document has been granted fullscreen, notify Goanna so it can resume
- // any pending pointer lock requests, otherwise exit fullscreen; the user denied
- // the fullscreen request.
- if (isApproved)
- Services.obs.notifyObservers(this.fullscreenDoc, "fullscreen-approved", "");
- else
- document.mozCancelFullScreen();
- },
-
warningBox: null,
warningFadeOutTimeout: null,
fullscreenDoc: null,
- // Shows the fullscreen approval UI, or if the domain has already been approved
- // for fullscreen, shows a warning that the site has entered fullscreen for a short
- // duration.
+ // Shows a warning that the site has entered fullscreen for a short duration.
showWarning: function(targetDoc) {
- if (!document.mozFullScreen ||
- !gPrefService.getBoolPref("full-screen-api.approval-required"))
+ let timeout = gPrefService.getIntPref("full-screen-api.warning.timeout");
+ if (!document.mozFullScreen || timeout <= 0)
return;
- // Set the strings on the fullscreen approval UI.
+ // Set the strings on the fullscreen warning UI.
this.fullscreenDoc = targetDoc;
let uri = this.fullscreenDoc.nodePrincipal.URI;
let host = null;
@@ -314,11 +268,8 @@ var FullScreen = {
host = uri.host;
} catch (e) { }
let hostLabel = document.getElementById("full-screen-domain-text");
- let rememberCheckbox = document.getElementById("full-screen-remember-decision");
- let isApproved = false;
if (host) {
- // Document's principal's URI has a host. Display a warning including the hostname and
- // show UI to enable the user to permanently grant this host permission to enter fullscreen.
+ // Document's principal's URI has a host. Display a warning including the hostname.
let utils = {};
Cu.import("resource://gre/modules/DownloadUtils.jsm", utils);
let displayHost = utils.DownloadUtils.getURIHost(uri.spec)[0];
@@ -326,17 +277,8 @@ var FullScreen = {
hostLabel.textContent = bundle.formatStringFromName("fullscreen.entered", [displayHost], 1);
hostLabel.removeAttribute("hidden");
-
- rememberCheckbox.label = bundle.formatStringFromName("fullscreen.rememberDecision", [displayHost], 1);
- rememberCheckbox.checked = false;
- rememberCheckbox.removeAttribute("hidden");
-
- // Note we only allow documents whose principal's URI has a host to
- // store permission grants.
- isApproved = Services.perms.testPermission(uri, "fullscreen") == Services.perms.ALLOW_ACTION;
} else {
hostLabel.setAttribute("hidden", "true");
- rememberCheckbox.setAttribute("hidden", "true");
}
// Note: the warning box can be non-null if the warning box from the previous request
@@ -354,32 +296,12 @@ var FullScreen = {
this.warningBox.removeAttribute("fade-warning-out");
}
- // If fullscreen mode has not yet been approved for the fullscreen
- // document's domain, show the approval UI and don't auto fade out the
- // fullscreen warning box. Otherwise, we're just notifying of entry into
- // fullscreen mode. Note if the resource's host is null, we must be
- // showing a local file or a local data URI, and we require explicit
- // approval every time.
- let authUI = document.getElementById("full-screen-approval-pane");
- if (isApproved) {
- authUI.setAttribute("hidden", "true");
- this.warningBox.removeAttribute("obscure-browser");
- } else {
- // Partially obscure the <browser> element underneath the approval UI.
- this.warningBox.setAttribute("obscure-browser", "true");
- authUI.removeAttribute("hidden");
- }
-
- // If we're not showing the fullscreen approval UI, we're just notifying the user
- // of the transition, so set a timeout to fade the warning out after a few moments.
- if (isApproved)
- this.warningFadeOutTimeout =
- setTimeout(
- function() {
- if (this.warningBox)
- this.warningBox.setAttribute("fade-warning-out", "true");
- }.bind(this),
- 3000);
+ // Set a timeout to fade the warning out after a few moments.
+ this.warningFadeOutTimeout = setTimeout(() => {
+ if (this.warningBox) {
+ this.warningBox.setAttribute("fade-warning-out", "true");
+ }
+ }, timeout);
},
showNavToolbox: function(trackMouse = true) {
diff --git a/application/palemoon/base/content/browser.css b/application/palemoon/base/content/browser.css
index 6fd2c5ce1..a2970aefc 100644
--- a/application/palemoon/base/content/browser.css
+++ b/application/palemoon/base/content/browser.css
@@ -504,6 +504,7 @@ window[chromehidden~="toolbar"] toolbar:not(.toolbar-primary):not(#nav-bar):not(
width: 100%;
height: 100%;
z-index: 2147483647 !important;
+ pointer-events: none;
}
#full-screen-warning-container[fade-warning-out] {
@@ -512,22 +513,13 @@ window[chromehidden~="toolbar"] toolbar:not(.toolbar-primary):not(#nav-bar):not(
opacity: 0.0;
}
-/* When the modal fullscreen approval UI is showing, don't allow interaction
- with the page, but when we're just showing the warning upon entering
- fullscreen on an already approved page, do allow interaction with the page.
- */
-#full-screen-warning-container:not([obscure-browser]) {
- pointer-events: none;
-}
-
#full-screen-warning-message {
/* We must specify a max-width, otherwise word-wrap:break-word doesn't
work in descendant <description> and <label> elements. Bug 630864. */
max-width: 800px;
}
-#full-screen-domain-text,
-#full-screen-remember-decision > .checkbox-label-box > .checkbox-label {
+#full-screen-domain-text {
word-wrap: break-word;
/* We must specify a min-width, otherwise word-wrap:break-word doesn't work. Bug 630864. */
min-width: 1px;
diff --git a/application/palemoon/base/content/browser.js b/application/palemoon/base/content/browser.js
index 72d51ce4a..c1643caa4 100644
--- a/application/palemoon/base/content/browser.js
+++ b/application/palemoon/base/content/browser.js
@@ -1157,7 +1157,7 @@ var gBrowserInit = {
// Called when we enter DOM full-screen mode. Note we can already be in browser
// full-screen mode when we enter DOM full-screen mode.
- window.addEventListener("MozEnteredDomFullscreen", onMozEnteredDomFullscreen, true);
+ window.addEventListener("MozDOMFullscreen:NewOrigin", onMozEnteredDomFullscreen, true);
if (window.fullScreen)
onFullScreen();
diff --git a/application/palemoon/base/content/browser.xul b/application/palemoon/base/content/browser.xul
index 9b37f7b6f..f9030056e 100644
--- a/application/palemoon/base/content/browser.xul
+++ b/application/palemoon/base/content/browser.xul
@@ -974,18 +974,6 @@
<vbox id="full-screen-warning-message" align="center">
<description id="full-screen-domain-text"/>
<description class="full-screen-description" value="&fullscreenExitHint.value;"/>
- <vbox id="full-screen-approval-pane" align="center">
- <description class="full-screen-description" value="&fullscreenApproval.value;"/>
- <hbox>
- <button label="&fullscreenAllowButton.label;"
- oncommand="FullScreen.setFullscreenAllowed(true);"
- class="full-screen-approval-button"/>
- <button label="&fullscreenExitButton.label;"
- oncommand="FullScreen.setFullscreenAllowed(false);"
- class="full-screen-approval-button"/>
- </hbox>
- <checkbox id="full-screen-remember-decision"/>
- </vbox>
</vbox>
</hbox>
</hbox>
diff --git a/application/palemoon/base/content/pageinfo/pageInfo.xul b/application/palemoon/base/content/pageinfo/pageInfo.xul
index 5bca1b495..943fa805c 100644
--- a/application/palemoon/base/content/pageinfo/pageInfo.xul
+++ b/application/palemoon/base/content/pageinfo/pageInfo.xul
@@ -52,7 +52,6 @@
<command id="cmd_cookieDef" oncommand="onCheckboxClick('cookie');"/>
<command id="cmd_desktop-notificationDef" oncommand="onCheckboxClick('desktop-notification');"/>
<command id="cmd_installDef" oncommand="onCheckboxClick('install');"/>
- <command id="cmd_fullscreenDef" oncommand="onCheckboxClick('fullscreen');"/>
<command id="cmd_geoDef" oncommand="onCheckboxClick('geo');"/>
<command id="cmd_indexedDBDef" oncommand="onCheckboxClick('indexedDB');"/>
<command id="cmd_pluginsDef" oncommand="onCheckboxClick('plugins');"/>
@@ -61,12 +60,9 @@
<command id="cmd_cookieToggle" oncommand="onRadioClick('cookie');"/>
<command id="cmd_desktop-notificationToggle" oncommand="onRadioClick('desktop-notification');"/>
<command id="cmd_installToggle" oncommand="onRadioClick('install');"/>
- <command id="cmd_fullscreenToggle" oncommand="onRadioClick('fullscreen');"/>
<command id="cmd_geoToggle" oncommand="onRadioClick('geo');"/>
<command id="cmd_indexedDBToggle" oncommand="onRadioClick('indexedDB');"/>
<command id="cmd_pluginsToggle" oncommand="onPluginRadioClick(event);"/>
- <command id="cmd_pointerLockDef" oncommand="onCheckboxClick('pointerLock');"/>
- <command id="cmd_pointerLockToggle" oncommand="onRadioClick('pointerLock');"/>
</commandset>
<keyset id="pageInfoKeySet">
@@ -405,31 +401,6 @@
</radiogroup>
</hbox>
</vbox>
- <vbox class="permission" id="permFullscreenRow">
- <label class="permissionLabel" id="permFullscreenLabel"
- value="&permFullscreen;" control="fullscreenRadioGroup"/>
- <hbox id="permFullscreenBox" role="group" aria-labelledby="permFullscreenLabel">
- <checkbox id="fullscreenDef" command="cmd_fullscreenDef" label="&permUseDefault;"/>
- <spacer flex="1"/>
- <radiogroup id="fullscreenRadioGroup" orient="horizontal">
- <radio id="fullscreen#0" command="cmd_fullscreenToggle" label="&permAskAlways;"/>
- <radio id="fullscreen#1" command="cmd_fullscreenToggle" label="&permAllow;"/>
- <radio id="fullscreen#2" command="cmd_fullscreenToggle" label="&permBlock;"/>
- </radiogroup>
- </hbox>
- </vbox>
- <vbox class="permission" id="permPointerLockRow" >
- <label class="permissionLabel" id="permPointerLockLabel"
- value="&permPointerLock2;" control="pointerLockRadioGroup"/>
- <hbox id="permPointerLockBox" role="group" aria-labelledby="permPointerLockLabel">
- <checkbox id="pointerLockDef" command="cmd_pointerLockDef" label="&permAskAlways;"/>
- <spacer flex="1"/>
- <radiogroup id="pointerLockRadioGroup" orient="horizontal">
- <radio id="pointerLock#1" command="cmd_pointerLockToggle" label="&permAllow;"/>
- <radio id="pointerLock#2" command="cmd_pointerLockToggle" label="&permBlock;"/>
- </radiogroup>
- </hbox>
- </vbox>
</vbox>
</vbox>
diff --git a/application/palemoon/base/content/pageinfo/permissions.js b/application/palemoon/base/content/pageinfo/permissions.js
index 68261ce6e..e0fb01f76 100644
--- a/application/palemoon/base/content/pageinfo/permissions.js
+++ b/application/palemoon/base/content/pageinfo/permissions.js
@@ -76,20 +76,6 @@ var gPermObj = {
{
return UNKNOWN;
},
- fullscreen: function getFullscreenDefaultPermissions()
- {
- if (!gPrefs.getBoolPref("full-screen-api.enabled")) {
- return DENY;
- }
- return UNKNOWN;
- },
- pointerLock: function getPointerLockPermissions()
- {
- if (!gPrefs.getBoolPref("full-screen-api.pointer-lock.enabled")) {
- return DENY;
- }
- return ALLOW;
- },
};
var permissionObserver = {