Bug 1117228 - Lazy load Reader.js. r=mfinkle

--HG--
extra : rebase_source : 46b921b7d3a3d9d533475b91d6e8277692db3a79
This commit is contained in:
Margaret Leibovic 2015-01-06 14:06:38 -08:00
parent 4bae9832db
commit 3cfec96fb1
2 changed files with 38 additions and 29 deletions

View File

@ -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": {

View File

@ -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;