summaryrefslogtreecommitdiffstats
path: root/application/basilisk/base/content/browser-refreshblocker.js
diff options
context:
space:
mode:
authorwolfbeast <mcwerewolf@gmail.com>2018-07-18 08:24:24 +0200
committerwolfbeast <mcwerewolf@gmail.com>2018-07-18 08:24:24 +0200
commitfc61780b35af913801d72086456f493f63197da6 (patch)
treef85891288a7bd988da9f0f15ae64e5c63f00d493 /application/basilisk/base/content/browser-refreshblocker.js
parent69f7f9e5f1475891ce11cc4f431692f965b0cd30 (diff)
parent50d3e596bbe89c95615f96eb71f6bc5be737a1db (diff)
downloadUXP-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.js84
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);
+ }
+ }
+};