diff options
author | JustOff <Off.Just.Off@gmail.com> | 2018-05-06 14:47:23 +0300 |
---|---|---|
committer | JustOff <Off.Just.Off@gmail.com> | 2018-05-06 14:47:23 +0300 |
commit | 5839168a9f01111c5cf4eef3effa79c8b2d4bb95 (patch) | |
tree | 5b234e861a885ae3a9f9f7c8dd313b15a724af8f /application/palemoon/base | |
parent | 39615877073d4399fac925be648446fc497ae18d (diff) | |
download | UXP-5839168a9f01111c5cf4eef3effa79c8b2d4bb95.tar UXP-5839168a9f01111c5cf4eef3effa79c8b2d4bb95.tar.gz UXP-5839168a9f01111c5cf4eef3effa79c8b2d4bb95.tar.lz UXP-5839168a9f01111c5cf4eef3effa79c8b2d4bb95.tar.xz UXP-5839168a9f01111c5cf4eef3effa79c8b2d4bb95.zip |
[PALEMOON] Replace fullscreen permission dialog with a warning
Diffstat (limited to 'application/palemoon/base')
-rw-r--r-- | application/palemoon/base/content/browser-fullScreen.js | 100 | ||||
-rw-r--r-- | application/palemoon/base/content/browser.css | 12 | ||||
-rw-r--r-- | application/palemoon/base/content/browser.xul | 12 |
3 files changed, 13 insertions, 111 deletions
diff --git a/application/palemoon/base/content/browser-fullScreen.js b/application/palemoon/base/content/browser-fullScreen.js index d36225c4d..6afd247be 100644 --- a/application/palemoon/base/content/browser-fullScreen.js +++ b/application/palemoon/base/content/browser-fullScreen.js @@ -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.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> |