mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 1055464 - Add RefreshBlocker front-end. r=Mossop
This commit is contained in:
parent
550fe853bb
commit
fd6d107555
84
browser/base/content/browser-refreshblocker.js
Normal file
84
browser/base/content/browser-refreshblocker.js
Normal file
@ -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);
|
||||
}
|
||||
}
|
||||
};
|
@ -923,6 +923,7 @@ var gBrowserInit = {
|
||||
DevEdition.init();
|
||||
AboutPrivateBrowsingListener.init();
|
||||
TrackingProtection.init();
|
||||
RefreshBlocker.init();
|
||||
|
||||
let mm = window.getGroupMessageManager("browsers");
|
||||
mm.loadFrameScript("chrome://browser/content/tab-content.js", true);
|
||||
@ -1446,6 +1447,8 @@ var gBrowserInit = {
|
||||
|
||||
TrackingProtection.uninit();
|
||||
|
||||
RefreshBlocker.uninit();
|
||||
|
||||
gMenuButtonUpdateBadge.uninit();
|
||||
|
||||
gMenuButtonBadgeManager.uninit();
|
||||
@ -4696,54 +4699,6 @@ var TabsProgressListener = {
|
||||
|
||||
FullZoom.onLocationChange(aLocationURI, false, aBrowser);
|
||||
},
|
||||
|
||||
onRefreshAttempted: function (aBrowser, aWebProgress, aURI, aDelay, aSameURI) {
|
||||
if (gPrefService.getBoolPref("accessibility.blockautorefresh")) {
|
||||
let brandBundle = document.getElementById("bundle_brand");
|
||||
let brandShortName = brandBundle.getString("brandShortName");
|
||||
let refreshButtonText =
|
||||
gNavigatorBundle.getString("refreshBlocked.goButton");
|
||||
let refreshButtonAccesskey =
|
||||
gNavigatorBundle.getString("refreshBlocked.goButton.accesskey");
|
||||
let message =
|
||||
gNavigatorBundle.getFormattedString(aSameURI ? "refreshBlocked.refreshLabel"
|
||||
: "refreshBlocked.redirectLabel",
|
||||
[brandShortName]);
|
||||
let docShell = aWebProgress.DOMWindow
|
||||
.QueryInterface(Ci.nsIInterfaceRequestor)
|
||||
.getInterface(Ci.nsIWebNavigation)
|
||||
.QueryInterface(Ci.nsIDocShell);
|
||||
let notificationBox = gBrowser.getNotificationBox(aBrowser);
|
||||
let notification = notificationBox.getNotificationWithValue("refresh-blocked");
|
||||
if (notification) {
|
||||
notification.label = message;
|
||||
notification.refreshURI = aURI;
|
||||
notification.delay = aDelay;
|
||||
notification.docShell = docShell;
|
||||
} else {
|
||||
let buttons = [{
|
||||
label: refreshButtonText,
|
||||
accessKey: refreshButtonAccesskey,
|
||||
callback: function (aNotification, aButton) {
|
||||
var refreshURI = aNotification.docShell
|
||||
.QueryInterface(Ci.nsIRefreshURI);
|
||||
refreshURI.forceRefreshURI(aNotification.refreshURI,
|
||||
aNotification.delay, true);
|
||||
}
|
||||
}];
|
||||
notification =
|
||||
notificationBox.appendNotification(message, "refresh-blocked",
|
||||
"chrome://browser/skin/Info.png",
|
||||
notificationBox.PRIORITY_INFO_MEDIUM,
|
||||
buttons);
|
||||
notification.refreshURI = aURI;
|
||||
notification.delay = aDelay;
|
||||
notification.docShell = docShell;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
function nsBrowserAccess() { }
|
||||
|
@ -24,6 +24,7 @@
|
||||
<script type="application/javascript" src="chrome://browser/content/browser-gestureSupport.js"/>
|
||||
<script type="application/javascript" src="chrome://browser/content/browser-places.js"/>
|
||||
<script type="application/javascript" src="chrome://browser/content/browser-plugins.js"/>
|
||||
<script type="application/javascript" src="chrome://browser/content/browser-refreshblocker.js"/>
|
||||
#ifdef MOZ_SAFE_BROWSING
|
||||
<script type="application/javascript" src="chrome://browser/content/browser-safebrowsing.js"/>
|
||||
#endif
|
||||
|
@ -89,6 +89,7 @@ browser.jar:
|
||||
content/browser/browser-gestureSupport.js (content/browser-gestureSupport.js)
|
||||
content/browser/browser-places.js (content/browser-places.js)
|
||||
content/browser/browser-plugins.js (content/browser-plugins.js)
|
||||
content/browser/browser-refreshblocker.js (content/browser-refreshblocker.js)
|
||||
#ifdef MOZ_SAFE_BROWSING
|
||||
content/browser/browser-safebrowsing.js (content/browser-safebrowsing.js)
|
||||
#endif
|
||||
|
@ -37,6 +37,7 @@ const SCRIPTS = [
|
||||
"browser/base/content/browser-gestureSupport.js",
|
||||
"browser/base/content/browser-places.js",
|
||||
"browser/base/content/browser-plugins.js",
|
||||
"browser/base/content/browser-refreshblocker.js",
|
||||
"browser/base/content/browser-safebrowsing.js",
|
||||
"browser/base/content/browser-sidebar.js",
|
||||
"browser/base/content/browser-social.js",
|
||||
|
Loading…
Reference in New Issue
Block a user