mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-12 21:05:36 +00:00
Bug 1117228 - Lazy load Reader.js. r=mfinkle
--HG-- extra : rebase_source : 46b921b7d3a3d9d533475b91d6e8277692db3a79
This commit is contained in:
parent
4bae9832db
commit
3cfec96fb1
@ -15,40 +15,19 @@ let Reader = {
|
||||
STATUS_FETCH_FAILED_UNSUPPORTED_FORMAT: 3,
|
||||
STATUS_FETCHED_ARTICLE: 4,
|
||||
|
||||
MESSAGES: [
|
||||
"Reader:AddToList",
|
||||
"Reader:ArticleGet",
|
||||
"Reader:FaviconRequest",
|
||||
"Reader:ListStatusRequest",
|
||||
"Reader:RemoveFromList",
|
||||
"Reader:Share",
|
||||
"Reader:ShowToast",
|
||||
"Reader:ToolbarVisibility",
|
||||
"Reader:SystemUIVisibility",
|
||||
"Reader:UpdateIsArticle",
|
||||
],
|
||||
|
||||
init: function() {
|
||||
for (let msg of this.MESSAGES) {
|
||||
window.messageManager.addMessageListener(msg, this);
|
||||
}
|
||||
|
||||
Services.obs.addObserver(this, "Reader:Added", false);
|
||||
Services.obs.addObserver(this, "Reader:Removed", false);
|
||||
Services.obs.addObserver(this, "Gesture:DoubleTap", false);
|
||||
},
|
||||
|
||||
observe: function Reader_observe(aMessage, aTopic, aData) {
|
||||
switch (aTopic) {
|
||||
case "Reader:Added": {
|
||||
window.messageManager.broadcastAsyncMessage("Reader:Added", { url: aData });
|
||||
let mm = window.getGroupMessageManager("browsers");
|
||||
mm.broadcastAsyncMessage("Reader:Added", { url: aData });
|
||||
break;
|
||||
}
|
||||
case "Reader:Removed": {
|
||||
let uri = Services.io.newURI(aData, null, null);
|
||||
ReaderMode.removeArticleFromCache(uri).catch(e => Cu.reportError("Error removing article from cache: " + e));
|
||||
|
||||
window.messageManager.broadcastAsyncMessage("Reader:Removed", { url: aData });
|
||||
let mm = window.getGroupMessageManager("browsers");
|
||||
mm.broadcastAsyncMessage("Reader:Removed", { url: aData });
|
||||
break;
|
||||
}
|
||||
case "Gesture:DoubleTap": {
|
||||
|
@ -109,9 +109,6 @@ XPCOMUtils.defineLazyModuleGetter(this, "SharedPreferences",
|
||||
XPCOMUtils.defineLazyModuleGetter(this, "Notifications",
|
||||
"resource://gre/modules/Notifications.jsm");
|
||||
|
||||
// XXX: Make this into a module?
|
||||
Services.scriptloader.loadSubScript("chrome://browser/content/Reader.js", this);
|
||||
|
||||
XPCOMUtils.defineLazyModuleGetter(this, "GMPInstallManager",
|
||||
"resource://gre/modules/GMPInstallManager.jsm");
|
||||
|
||||
@ -149,6 +146,7 @@ XPCOMUtils.defineLazyModuleGetter(this, "GMPInstallManager",
|
||||
["Feedback", ["Feedback:Show"], "chrome://browser/content/Feedback.js"],
|
||||
["SelectionHandler", ["TextSelection:Get"], "chrome://browser/content/SelectionHandler.js"],
|
||||
["EmbedRT", ["GeckoView:ImportScript"], "chrome://browser/content/EmbedRT.js"],
|
||||
["Reader", ["Reader:Added", "Reader:Removed", "Gesture:DoubleTap"], "chrome://browser/content/Reader.js"],
|
||||
].forEach(function (aScript) {
|
||||
let [name, notifications, script] = aScript;
|
||||
XPCOMUtils.defineLazyGetter(window, name, function() {
|
||||
@ -166,6 +164,39 @@ XPCOMUtils.defineLazyModuleGetter(this, "GMPInstallManager",
|
||||
});
|
||||
});
|
||||
|
||||
// Lazily-loaded browser scripts that use message listeners.
|
||||
[
|
||||
["Reader", [
|
||||
"Reader:AddToList",
|
||||
"Reader:ArticleGet",
|
||||
"Reader:FaviconRequest",
|
||||
"Reader:ListStatusRequest",
|
||||
"Reader:RemoveFromList",
|
||||
"Reader:Share",
|
||||
"Reader:ShowToast",
|
||||
"Reader:ToolbarVisibility",
|
||||
"Reader:SystemUIVisibility",
|
||||
"Reader:UpdateIsArticle",
|
||||
], "chrome://browser/content/Reader.js"],
|
||||
].forEach(aScript => {
|
||||
let [name, messages, script] = aScript;
|
||||
XPCOMUtils.defineLazyGetter(window, name, function() {
|
||||
let sandbox = {};
|
||||
Services.scriptloader.loadSubScript(script, sandbox);
|
||||
return sandbox[name];
|
||||
});
|
||||
|
||||
let mm = window.getGroupMessageManager("browsers");
|
||||
let listener = (message) => {
|
||||
mm.removeMessageListener(message.name, listener);
|
||||
mm.addMessageListener(message.name, window[name]);
|
||||
window[name].receiveMessage(message);
|
||||
};
|
||||
messages.forEach((message) => {
|
||||
mm.addMessageListener(message, listener);
|
||||
});
|
||||
});
|
||||
|
||||
// Lazily-loaded JS modules that use observer notifications
|
||||
[
|
||||
["Home", ["HomeBanner:Get", "HomePanels:Get", "HomePanels:Authenticate", "HomePanels:RefreshView",
|
||||
@ -453,7 +484,6 @@ var BrowserApp = {
|
||||
#ifdef NIGHTLY_BUILD
|
||||
ShumwayUtils.init();
|
||||
#endif
|
||||
Reader.init();
|
||||
|
||||
let url = null;
|
||||
let pinned = false;
|
||||
|
Loading…
Reference in New Issue
Block a user