Bug 1314861: Lazily load UI modules, as much as possible. r=rpl

MozReview-Commit-ID: JdHHw639Lwv

--HG--
extra : rebase_source : a575e65cb5d15913541cbbc02aec2da08167b7e6
This commit is contained in:
Kris Maglione 2017-04-07 16:28:42 -07:00
parent 27b14b143b
commit b9b75a06d8
13 changed files with 87 additions and 90 deletions

View File

@ -10,8 +10,16 @@ module.metadata = {
}
};
exports.ActionButton = require('./ui/button/action').ActionButton;
exports.ToggleButton = require('./ui/button/toggle').ToggleButton;
exports.Sidebar = require('./ui/sidebar').Sidebar;
exports.Frame = require('./ui/frame').Frame;
exports.Toolbar = require('./ui/toolbar').Toolbar;
lazyRequire(this, './ui/button/action', 'ActionButton');
lazyRequire(this, './ui/button/toggle', 'ToggleButton');
lazyRequire(this, './ui/sidebar', 'Sidebar');
lazyRequire(this, './ui/frame', 'Frame');
lazyRequire(this, './ui/toolbar', 'Toolbar');
module.exports = Object.freeze({
get ActionButton() { return ActionButton; },
get ToggleButton() { return ToggleButton; },
get Sidebar() { return Sidebar; },
get Frame() { return Frame; },
get Toolbar() { return Toolbar; },
});

View File

@ -13,22 +13,22 @@ module.metadata = {
const { Class } = require('../../core/heritage');
const { merge } = require('../../util/object');
const { Disposable } = require('../../core/disposable');
const { on, off, emit, setListeners } = require('../../event/core');
lazyRequire(this, '../../event/core', "on", "off", "emit", "setListeners");
const { EventTarget } = require('../../event/target');
const { getNodeView } = require('../../view/core');
lazyRequire(this, '../../view/core', "getNodeView");
const view = require('./view');
lazyRequireModule(this, './view', "view");
const { buttonContract, stateContract } = require('./contract');
const { properties, render, state, register, unregister,
getDerivedStateFor } = require('../state');
const { events: stateEvents } = require('../state/events');
const { events: viewEvents } = require('./view/events');
const events = require('../../event/utils');
lazyRequire(this, '../state', "properties", "render", "state", "register",
"unregister", "getDerivedStateFor");
lazyRequire(this, '../state/events', { "events": "stateEvents" });
lazyRequire(this, './view/events', { "events": "viewEvents" });
lazyRequireModule(this, '../../event/utils', "events");
const { getActiveTab } = require('../../tabs/utils');
lazyRequire(this, '../../tabs/utils', "getActiveTab");
const { id: addonID } = require('../../self');
const { identify } = require('../id');
lazyRequire(this, '../../self', { "id": "addonID" });
lazyRequire(this, '../id', "identify");
const buttons = new Map();

View File

@ -4,8 +4,8 @@
'use strict';
const { contract } = require('../../util/contract');
const { isLocalURL } = require('../../url');
const { isNil, isObject, isString } = require('../../lang/type');
lazyRequire(this, '../../url', "isLocalURL");
lazyRequire(this, '../../lang/type', "isNil", "isObject", "isString");
const { required, either, string, boolean, object, number } = require('../../deprecated/api-utils');
const { merge } = require('../../util/object');
const { freeze } = Object;

View File

@ -11,24 +11,24 @@ module.metadata = {
};
const { Class } = require('../../core/heritage');
const { merge } = require('../../util/object');
lazyRequire(this, '../../util/object', "merge");
const { Disposable } = require('../../core/disposable');
const { on, off, emit, setListeners } = require('../../event/core');
lazyRequire(this, '../../event/core', "on", "off", "emit", "setListeners");
const { EventTarget } = require('../../event/target');
const { getNodeView } = require('../../view/core');
lazyRequire(this, '../../view/core', "getNodeView");
const view = require('./view');
lazyRequireModule(this, "./view", "view");
const { toggleButtonContract, toggleStateContract } = require('./contract');
const { properties, render, state, register, unregister,
setStateFor, getStateFor, getDerivedStateFor } = require('../state');
const { events: stateEvents } = require('../state/events');
const { events: viewEvents } = require('./view/events');
const events = require('../../event/utils');
lazyRequire(this, '../state', "properties", "render", "state", "register", "unregister",
"setStateFor", "getStateFor", "getDerivedStateFor");
lazyRequire(this, '../state/events', { "events": "stateEvents" });
lazyRequire(this, './view/events', { "events": "viewEvents" });
lazyRequireModule(this, '../../event/utils', "events");
const { getActiveTab } = require('../../tabs/utils');
lazyRequire(this, '../../tabs/utils', "getActiveTab");
const { id: addonID } = require('../../self');
const { identify } = require('../id');
lazyRequire(this, '../../self', { "id": "addonID" });
lazyRequire(this, '../id', "identify");
const buttons = new Map();

View File

@ -11,18 +11,18 @@ module.metadata = {
};
const { Cu } = require('chrome');
const { on, off, emit } = require('../../event/core');
lazyRequire(this, '../../event/core', "on", "off", "emit");
const { data } = require('sdk/self');
lazyRequire(this, 'sdk/self', "data");
const { isObject, isNil } = require('../../lang/type');
lazyRequire(this, '../../lang/type', "isObject", "isNil");
const { getMostRecentBrowserWindow } = require('../../window/utils');
const { ignoreWindow } = require('../../private-browsing/utils');
lazyRequire(this, '../../window/utils', "getMostRecentBrowserWindow");
lazyRequire(this, '../../private-browsing/utils', "ignoreWindow");
const { CustomizableUI } = Cu.import('resource:///modules/CustomizableUI.jsm', {});
const { AREA_PANEL, AREA_NAVBAR } = CustomizableUI;
const { events: viewEvents } = require('./view/events');
lazyRequire(this, './view/events', { "events": "viewEvents" });
const XUL_NS = 'http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul';

View File

@ -10,7 +10,6 @@ module.metadata = {
}
};
require("./frame/view");
const { Frame } = require("./frame/model");
exports.Frame = Frame;

View File

@ -12,19 +12,19 @@ module.metadata = {
const { Class } = require("../../core/heritage");
const { EventTarget } = require("../../event/target");
const { emit, off, setListeners } = require("../../event/core");
lazyRequire(this, "../../event/core", "emit", "off", "setListeners");
const { Reactor, foldp, send, merges } = require("../../event/utils");
const { Disposable } = require("../../core/disposable");
const { OutputPort } = require("../../output/system");
const { InputPort } = require("../../input/system");
const { identify } = require("../id");
const { pairs, object, map, each } = require("../../util/sequence");
const { patch, diff } = require("diffpatcher/index");
const { isLocalURL } = require("../../url");
lazyRequire(this, "../id", "identify");
const { pairs, object, each } = require("../../util/sequence");
lazyRequire(this, "diffpatcher/index", "patch", "diff");
lazyRequire(this, "../../url", "isLocalURL");
const { compose } = require("../../lang/functional");
const { contract } = require("../../util/contract");
const { id: addonID, data: { url: resolve }} = require("../../self");
const { Frames } = require("../../input/frame");
require("./view");
const output = new OutputPort({ id: "frame-change" });

View File

@ -12,16 +12,13 @@ module.metadata = {
const { Cu, Ci } = require("chrome");
const { CustomizableUI } = Cu.import('resource:///modules/CustomizableUI.jsm', {});
const { subscribe, send, Reactor, foldp, lift, merges, keepIf } = require("../../event/utils");
const { InputPort } = require("../../input/system");
const { send, Reactor } = require("../../event/utils");
const { OutputPort } = require("../../output/system");
const { LastClosed } = require("../../input/browser");
const { pairs, keys, object, each } = require("../../util/sequence");
lazyRequire(this, "../../util/sequence", "pairs", "keys", "object", "each");
const { curry, compose } = require("../../lang/functional");
const { getFrameElement, getOuterId,
getByOuterId, getOwnerBrowserWindow } = require("../../window/utils");
const { patch, diff } = require("diffpatcher/index");
const { encode } = require("../../base64");
lazyRequire(this, "../../window/utils", "getFrameElement", "getOuterId", "getByOuterId", "getOwnerBrowserWindow");
lazyRequire(this, "diffpatcher/index", "patch", "diff");
lazyRequire(this, "../../base64", "encode");
const { Frames } = require("../../input/frame");
const XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";

View File

@ -8,7 +8,7 @@ module.metadata = {
};
const method = require('../../method/core');
const { uuid } = require('../util/uuid');
lazyRequire(this, '../util/uuid', "uuid");
// NOTE: use lang/functional memoize when it is updated to use WeakMap
function memoize(f) {

View File

@ -13,27 +13,26 @@ module.metadata = {
const { Class } = require('../core/heritage');
const { merge } = require('../util/object');
const { Disposable } = require('../core/disposable');
const { off, emit, setListeners } = require('../event/core');
lazyRequire(this, '../event/core', "off", "emit", "setListeners");
const { EventTarget } = require('../event/target');
const { URL } = require('../url');
const { add, remove, has, clear, iterator } = require('../lang/weak-set');
const { id: addonID, data } = require('../self');
const { WindowTracker } = require('../deprecated/window-utils');
const { isShowing } = require('./sidebar/utils');
const { isBrowser, getMostRecentBrowserWindow, windows, isWindowPrivate } = require('../window/utils');
lazyRequire(this, '../url', "URL");
lazyRequire(this, '../self', { "id": "addonID" }, "data");
lazyRequire(this, '../deprecated/window-utils', 'WindowTracker');
lazyRequire(this, './sidebar/utils', "isShowing");
lazyRequire(this, '../window/utils', "isBrowser", "getMostRecentBrowserWindow", "windows", "isWindowPrivate");
const { ns } = require('../core/namespace');
const { remove: removeFromArray } = require('../util/array');
const { show, hide, toggle } = require('./sidebar/actions');
const { Worker } = require('../deprecated/sync-worker');
lazyRequire(this, '../util/array', { "remove": "removeFromArray" });
lazyRequire(this, './sidebar/actions', "show", "hide", "toggle");
lazyRequire(this, '../deprecated/sync-worker', "Worker");
const { contract: sidebarContract } = require('./sidebar/contract');
const { create, dispose, updateTitle, updateURL, isSidebarShowing, showSidebar, hideSidebar } = require('./sidebar/view');
const { defer } = require('../core/promise');
const { models, views, viewsFor, modelFor } = require('./sidebar/namespace');
const { isLocalURL } = require('../url');
lazyRequire(this, './sidebar/view', "create", "dispose", "updateTitle", "updateURL", "isSidebarShowing", "showSidebar", "hideSidebar");
lazyRequire(this, '../core/promise', "defer");
lazyRequire(this, './sidebar/namespace', "models", "views", "viewsFor", "modelFor");
lazyRequire(this, '../url', "isLocalURL");
const { ensure } = require('../system/unload');
const { identify } = require('./id');
const { uuid } = require('../util/uuid');
const { viewFor } = require('../view/core');
lazyRequire(this, './id', "identify");
lazyRequire(this, '../util/uuid', "uuid");
lazyRequire(this, '../view/core', "viewFor");
const resolveURL = (url) => url ? data.url(url) : url;
@ -41,8 +40,6 @@ const sidebarNS = ns();
const WEB_PANEL_BROWSER_ID = 'web-panels-browser';
var sidebars = {};
const Sidebar = Class({
implements: [ Disposable ],
extends: EventTarget,
@ -209,8 +206,6 @@ const Sidebar = Class({
});
views.set(this, bars);
add(sidebars, this);
},
get id() {
return (modelFor(this) || {}).id;
@ -259,8 +254,6 @@ const Sidebar = Class({
off(this);
remove(sidebars, this);
// stop tracking windows
if (internals.tracker) {
internals.tracker.unload();

View File

@ -10,11 +10,11 @@ module.metadata = {
}
};
const { models, buttons, views, viewsFor, modelFor } = require('./namespace');
const { isBrowser, getMostRecentBrowserWindow, windows, isWindowPrivate } = require('../../window/utils');
const { setStateFor } = require('../state');
const { defer } = require('../../core/promise');
const { isPrivateBrowsingSupported, data } = require('../../self');
lazyRequire(this, './namespace', "models", "buttons", "views", "viewsFor", "modelFor");
lazyRequire(this, '../../window/utils', "isBrowser", "getMostRecentBrowserWindow", "windows", "isWindowPrivate");
lazyRequire(this, '../state', "setStateFor");
lazyRequire(this, '../../core/promise', "defer");
lazyRequire(this, '../../self', "isPrivateBrowsingSupported", "data");
const XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
const WEB_PANEL_BROWSER_ID = 'web-panels-browser';

View File

@ -21,19 +21,19 @@ const { events: browserEvents } = require('../browser/events');
const { events: tabEvents } = require('../tab/events');
const { events: stateEvents } = require('./state/events');
const { windows, isInteractive, getFocusedBrowser } = require('../window/utils');
const { getActiveTab, getOwnerWindow } = require('../tabs/utils');
lazyRequire(this, '../window/utils', "windows", "isInteractive", "getFocusedBrowser");
lazyRequire(this, '../tabs/utils', "getActiveTab", "getOwnerWindow");
const { ignoreWindow } = require('../private-browsing/utils');
lazyRequire(this, '../private-browsing/utils', "ignoreWindow");
const { freeze } = Object;
const { merge } = require('../util/object');
const { on, off, emit } = require('../event/core');
lazyRequire(this, '../event/core', "on", "off", "emit");
const { add, remove, has, clear, iterator } = require('../lang/weak-set');
const { isNil } = require('../lang/type');
lazyRequire(this, '../lang/weak-set', "add", "remove", "has", "clear", "iterator");
lazyRequire(this, '../lang/type', "isNil");
const { viewFor } = require('../view/core');
lazyRequire(this, '../view/core', "viewFor");
const components = new WeakMap();

View File

@ -20,10 +20,10 @@ const { CustomizationInput } = require("../../input/customizable-ui");
const { pairs, map, isEmpty, object,
each, keys, values } = require("../../util/sequence");
const { curry, flip } = require("../../lang/functional");
const { patch, diff } = require("diffpatcher/index");
lazyRequire(this, "diffpatcher/index", "patch", "diff");
const prefs = require("../../preferences/service");
const { getByOuterId } = require("../../window/utils");
const { ignoreWindow } = require('../../private-browsing/utils');
lazyRequire(this, "../../window/utils", "getByOuterId");
lazyRequire(this, '../../private-browsing/utils', "ignoreWindow");
const XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
const PREF_ROOT = "extensions.sdk-toolbar-collapsed.";