diff options
author | wolfbeast <mcwerewolf@gmail.com> | 2018-07-18 08:24:24 +0200 |
---|---|---|
committer | wolfbeast <mcwerewolf@gmail.com> | 2018-07-18 08:24:24 +0200 |
commit | fc61780b35af913801d72086456f493f63197da6 (patch) | |
tree | f85891288a7bd988da9f0f15ae64e5c63f00d493 /application/basilisk/base/content/browser-refreshblocker.js | |
parent | 69f7f9e5f1475891ce11cc4f431692f965b0cd30 (diff) | |
parent | 50d3e596bbe89c95615f96eb71f6bc5be737a1db (diff) | |
download | UXP-2018.07.18.tar UXP-2018.07.18.tar.gz UXP-2018.07.18.tar.lz UXP-2018.07.18.tar.xz UXP-2018.07.18.zip |
Merge commit '50d3e596bbe89c95615f96eb71f6bc5be737a1db' into Basilisk-releasev2018.07.18
# Conflicts:
# browser/app/profile/firefox.js
# browser/components/preferences/jar.mn
Diffstat (limited to 'application/basilisk/base/content/browser-refreshblocker.js')
-rw-r--r-- | application/basilisk/base/content/browser-refreshblocker.js | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/application/basilisk/base/content/browser-refreshblocker.js b/application/basilisk/base/content/browser-refreshblocker.js new file mode 100644 index 000000000..025d45421 --- /dev/null +++ b/application/basilisk/base/content/browser-refreshblocker.js @@ -0,0 +1,84 @@ +/* -*- 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/. */ + +/** + * If the user has opted into blocking refresh and redirect attempts by + * default, this handles showing the notification to the user which + * gives them the option to let the refresh or redirect proceed. + */ +var RefreshBlocker = { + init() { + gBrowser.addEventListener("RefreshBlocked", this); + }, + + uninit() { + gBrowser.removeEventListener("RefreshBlocked", this); + }, + + handleEvent: function(event) { + if (event.type == "RefreshBlocked") { + this.block(event.originalTarget, event.detail); + } + }, + + /** + * Shows the blocked refresh / redirect notification for some browser. + * + * @param browser (<xul:browser>) + * The browser that had the refresh blocked. This will be the browser + * for which we'll show the notification on. + * @param data (object) + * An object with the following properties: + * + * URI (string) + * The URI that a page is attempting to refresh or redirect to. + * + * delay (int) + * The delay (in milliseconds) before the page was going to reload + * or redirect. + * + * sameURI (bool) + * true if we're refreshing the page. false if we're redirecting. + * + * outerWindowID (int) + * The outerWindowID of the frame that requested the refresh or + * redirect. + */ + block(browser, data) { + let brandBundle = document.getElementById("bundle_brand"); + let brandShortName = brandBundle.getString("brandShortName"); + let message = + gNavigatorBundle.getFormattedString(data.sameURI ? "refreshBlocked.refreshLabel" + : "refreshBlocked.redirectLabel", + [brandShortName]); + + let notificationBox = gBrowser.getNotificationBox(browser); + let notification = notificationBox.getNotificationWithValue("refresh-blocked"); + + if (notification) { + notification.label = message; + } else { + let refreshButtonText = + gNavigatorBundle.getString("refreshBlocked.goButton"); + let refreshButtonAccesskey = + gNavigatorBundle.getString("refreshBlocked.goButton.accesskey"); + + let buttons = [{ + label: refreshButtonText, + accessKey: refreshButtonAccesskey, + callback: function (notification, button) { + if (browser.messageManager) { + browser.messageManager.sendAsyncMessage("RefreshBlocker:Refresh", data); + } + } + }]; + + notificationBox.appendNotification(message, "refresh-blocked", + "chrome://browser/skin/Info.png", + notificationBox.PRIORITY_INFO_MEDIUM, + buttons); + } + } +}; |