diff options
author | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
---|---|---|
committer | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
commit | 5f8de423f190bbb79a62f804151bc24824fa32d8 (patch) | |
tree | 10027f336435511475e392454359edea8e25895d /browser/base/content/browser-refreshblocker.js | |
parent | 49ee0794b5d912db1f95dce6eb52d781dc210db5 (diff) | |
download | UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.gz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.lz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.xz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.zip |
Add m-esr52 at 52.6.0
Diffstat (limited to 'browser/base/content/browser-refreshblocker.js')
-rw-r--r-- | browser/base/content/browser-refreshblocker.js | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/browser/base/content/browser-refreshblocker.js b/browser/base/content/browser-refreshblocker.js new file mode 100644 index 000000000..025d45421 --- /dev/null +++ b/browser/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); + } + } +}; |