Bug 1246291 - Only initialize RefreshBlocker if enabled. r?Mossop
MozReview-Commit-ID: B9dn4vX9VV7
--- a/browser/base/content/tab-content.js
+++ b/browser/base/content/tab-content.js
@@ -684,58 +684,82 @@ var DOMFullscreenHandler = {
break;
}
}
}
};
DOMFullscreenHandler.init();
var RefreshBlocker = {
+ PREF: "accessibility.blockautorefresh",
+
init() {
+ if (Services.prefs.getBoolPref(this.PREF)) {
+ this.enable();
+ }
+
+ Services.prefs.addObserver(this.PREF, this, false);
+ },
+
+ uninit() {
+ if (Services.prefs.getBoolPref(this.PREF)) {
+ this.disable();
+ }
+
+ Services.prefs.removeObserver(this.PREF, this);
+ },
+
+ observe(subject, topic, data) {
+ if (topic == "nsPref:changed" && data == this.PREF) {
+ if (Services.prefs.getBoolPref(this.PREF)) {
+ this.enable();
+ } else {
+ this.disable();
+ }
+ }
+ },
+
+ enable() {
this._filter = Cc["@mozilla.org/appshell/component/browser-status-filter;1"]
.createInstance(Ci.nsIWebProgress);
this._filter.addProgressListener(this, Ci.nsIWebProgress.NOTIFY_REFRESH);
let webProgress = docShell.QueryInterface(Ci.nsIInterfaceRequestor)
.getInterface(Ci.nsIWebProgress);
webProgress.addProgressListener(this._filter, Ci.nsIWebProgress.NOTIFY_REFRESH);
addMessageListener("RefreshBlocker:Refresh", this);
},
- uninit() {
+ disable() {
let webProgress = docShell.QueryInterface(Ci.nsIInterfaceRequestor)
.getInterface(Ci.nsIWebProgress);
webProgress.removeProgressListener(this._filter);
this._filter.removeProgressListener(this);
this._filter = null;
removeMessageListener("RefreshBlocker:Refresh", this);
},
onRefreshAttempted(aWebProgress, aURI, aDelay, aSameURI) {
- if (Services.prefs.getBoolPref("accessibility.blockautorefresh")) {
- let win = aWebProgress.DOMWindow;
- let outerWindowID = win.QueryInterface(Ci.nsIInterfaceRequestor)
- .getInterface(Ci.nsIDOMWindowUtils)
- .outerWindowID;
+ let win = aWebProgress.DOMWindow;
+ let outerWindowID = win.QueryInterface(Ci.nsIInterfaceRequestor)
+ .getInterface(Ci.nsIDOMWindowUtils)
+ .outerWindowID;
- sendAsyncMessage("RefreshBlocker:Blocked", {
- URI: aURI.spec,
- originCharset: aURI.originCharset,
- delay: aDelay,
- sameURI: aSameURI,
- outerWindowID,
- });
+ sendAsyncMessage("RefreshBlocker:Blocked", {
+ URI: aURI.spec,
+ originCharset: aURI.originCharset,
+ delay: aDelay,
+ sameURI: aSameURI,
+ outerWindowID,
+ });
- return false;
- }
-
- return true;
+ return false;
},
receiveMessage(message) {
let data = message.data;
if (message.name == "RefreshBlocker:Refresh") {
let win = Services.wm.getOuterWindowWithId(data.outerWindowID);
let refreshURI = win.QueryInterface(Ci.nsIInterfaceRequestor)