summaryrefslogtreecommitdiffstats
path: root/browser/base/content/browser-refreshblocker.js
diff options
context:
space:
mode:
authorMatt A. Tobin <mattatobin@localhost.localdomain>2018-02-02 04:16:08 -0500
committerMatt A. Tobin <mattatobin@localhost.localdomain>2018-02-02 04:16:08 -0500
commit5f8de423f190bbb79a62f804151bc24824fa32d8 (patch)
tree10027f336435511475e392454359edea8e25895d /browser/base/content/browser-refreshblocker.js
parent49ee0794b5d912db1f95dce6eb52d781dc210db5 (diff)
downloadUXP-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.js84
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);
+ }
+ }
+};