Skip to content

Instantly share code, notes, and snippets.

@rpl
Created April 13, 2016 18:41
Show Gist options
  • Save rpl/317a0eef57aba69a131eaf59d8daa312 to your computer and use it in GitHub Desktop.
Save rpl/317a0eef57aba69a131eaf59d8daa312 to your computer and use it in GitHub Desktop.
"rename webNavigation MessageManager message names" proposals
diff --git a/toolkit/modules/addons/WebNavigation.jsm b/toolkit/modules/addons/WebNavigation.jsm
--- a/toolkit/modules/addons/WebNavigation.jsm
+++ b/toolkit/modules/addons/WebNavigation.jsm
@@ -20,23 +20,25 @@ Cu.import("resource://gre/modules/Servic
// onCreatedNavigationTarget, onHistoryStateUpdated
var Manager = {
listeners: new Map(),
init() {
Services.mm.addMessageListener("Extension:DOMContentLoaded", this);
Services.mm.addMessageListener("Extension:StateChange", this);
- Services.mm.addMessageListener("Extension:LocationChange", this);
+ Services.mm.addMessageListener("Extension:DocumentChange", this);
+ Services.mm.addMessageListener("Extension:HistoryChange", this);
Services.mm.loadFrameScript("resource://gre/modules/WebNavigationContent.js", true);
},
uninit() {
Services.mm.removeMessageListener("Extension:StateChange", this);
- Services.mm.removeMessageListener("Extension:LocationChange", this);
+ Services.mm.removeMessageListener("Extension:DocumentChange", this);
+ Services.mm.removeMessageListener("Extension:HistoryChange", this);
Services.mm.removeMessageListener("Extension:DOMContentLoaded", this);
Services.mm.removeDelayedFrameScript("resource://gre/modules/WebNavigationContent.js");
Services.mm.broadcastAsyncMessage("Extension:DisableWebNavigation");
},
addListener(type, listener) {
if (this.listeners.size == 0) {
this.init();
@@ -65,18 +67,22 @@ var Manager = {
},
receiveMessage({name, data, target}) {
switch (name) {
case "Extension:StateChange":
this.onStateChange(target, data);
break;
- case "Extension:LocationChange":
- this.onLocationChange(target, data);
+ case "Extension:DocumentChange":
+ this.onDocumentChange(target, data);
+ break;
+
+ case "Extension:HistoryChange":
+ this.onHistoryChange(target, data);
break;
case "Extension:DOMContentLoaded":
this.onLoad(target, data);
break;
}
},
@@ -92,25 +98,29 @@ var Manager = {
} else {
let error = `Error code ${data.status}`;
this.fire("onErrorOccurred", browser, data, {error, url});
}
}
}
},
- onLocationChange(browser, data) {
+ onDocumentChange(browser, data) {
+ let url = data.location;
+
+ this.fire("onCommitted", browser, data, {url});
+ },
+
+ onHistoryChange(browser, data) {
let url = data.location;
if (data.isReferenceFragmentUpdated) {
this.fire("onReferenceFragmentUpdated", browser, data, {url});
} else if (data.isHistoryStateUpdated) {
this.fire("onHistoryStateUpdated", browser, data, {url});
- } else {
- this.fire("onCommitted", browser, data, {url});
}
},
onLoad(browser, data) {
this.fire("onDOMContentLoaded", browser, data, {url: data.url});
},
fire(type, browser, data, extra) {
diff --git a/toolkit/modules/addons/WebNavigationContent.js b/toolkit/modules/addons/WebNavigationContent.js
--- a/toolkit/modules/addons/WebNavigationContent.js
+++ b/toolkit/modules/addons/WebNavigationContent.js
@@ -64,17 +64,17 @@ var WebProgressListener = {
};
sendAsyncMessage("Extension:StateChange", data);
if (stateFlags & Ci.nsIWebProgressListener.STATE_IS_DOCUMENT) {
// For some reason we don't fire onLocationChange for the
// initial navigation of a sub-frame. So we need to simulate
// it here.
- this.processStateDocument({
+ this.processDocumentChange({
webProgress, request, locationURI,
flags: 0,
});
}
},
onLocationChange: function onLocationChange(webProgress, request, locationURI, flags) {
let {DOMWindow, loadType} = webProgress;
@@ -112,28 +112,28 @@ var WebProgressListener = {
if (isHistoryStateUpdated || isReferenceFragmentUpdated) {
let data = {
isHistoryStateUpdated, isReferenceFragmentUpdated,
location: locationURI ? locationURI.spec : "",
windowId: webProgress.DOMWindowID,
parentWindowId: WebNavigationFrames.getParentWindowId(webProgress.DOMWindow),
};
- sendAsyncMessage("Extension:LocationChange", data);
+ sendAsyncMessage("Extension:HistoryChange", data);
}
},
- processStateDocument({webProgress, request, locationURI, flags}) {
+ processDocumentChange({webProgress, request, locationURI, flags}) {
let data = {
location: locationURI ? locationURI.spec : "",
windowId: webProgress.DOMWindowID,
parentWindowId: WebNavigationFrames.getParentWindowId(webProgress.DOMWindow),
};
- sendAsyncMessage("Extension:LocationChange", data);
+ sendAsyncMessage("Extension:DocumentChange", data);
},
QueryInterface: XPCOMUtils.generateQI([Ci.nsIWebProgressListener, Ci.nsISupportsWeakReference]),
};
var disabled = false;
WebProgressListener.init();
addEventListener("unload", () => {
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment