Bug 1480244: Part 5 - Run most framescripts in shared scope. r=mconley

Creating non-shared scopes for frame scripts is fairly expensive. After these
changes it's even more expensive. However, many frame scripts have no use for
the shared scopes at all. Run-once scripts which execute in closures, for
instance, make no use of them. And after bug 1472491, neither do most of our
default frame scripts.

MozReview-Commit-ID: 9PK7bYdQ0yh

--HG--
extra : rebase_source : db2516d2f00a75e233e1957649f2b62a9299b7cd
This commit is contained in:
Kris Maglione 2018-08-10 13:58:18 -07:00
Родитель e890d39c82
Коммит f99ee35b82
16 изменённых файлов: 25 добавлений и 25 удалений

Просмотреть файл

@ -1315,8 +1315,8 @@ var gBrowserInit = {
ZoomUI.init(window);
let mm = window.getGroupMessageManager("browsers");
mm.loadFrameScript("chrome://browser/content/tab-content.js", true);
mm.loadFrameScript("chrome://browser/content/content.js", true);
mm.loadFrameScript("chrome://browser/content/tab-content.js", true, true);
mm.loadFrameScript("chrome://browser/content/content.js", true, true);
mm.loadFrameScript("chrome://global/content/content-HybridContentTelemetry.js", true);
window.messageManager.addMessageListener("Browser:LoadURI", RedirectLoad);
@ -5206,7 +5206,7 @@ const AccessibilityRefreshBlocker = {
if (!this._loaded) {
this._loaded = true;
let mm = window.getGroupMessageManager("browsers");
mm.loadFrameScript("chrome://browser/content/content-refreshblocker.js", true);
mm.loadFrameScript("chrome://browser/content/content-refreshblocker.js", true, true);
}
}
};

Просмотреть файл

@ -64,12 +64,12 @@ function getBrowser(sidebar) {
document.documentElement.appendChild(stack);
return readyPromise.then(() => {
browser.messageManager.loadFrameScript("chrome://browser/content/content.js", false);
browser.messageManager.loadFrameScript("chrome://browser/content/content.js", false, true);
ExtensionParent.apiManager.emit("extension-browser-inserted", browser);
if (sidebar.browserStyle) {
browser.messageManager.loadFrameScript(
"chrome://extensions/content/ext-browser-content.js", false);
"chrome://extensions/content/ext-browser-content.js", false, true);
browser.messageManager.sendAsyncMessage("Extension:InitBrowser", {
stylesheets: ExtensionParent.extensionStylesheets,

Просмотреть файл

@ -311,10 +311,10 @@ class BasePopup {
let mm = browser.messageManager;
// Sets the context information for context menus.
mm.loadFrameScript("chrome://browser/content/content.js", true);
mm.loadFrameScript("chrome://browser/content/content.js", true, true);
mm.loadFrameScript(
"chrome://extensions/content/ext-browser-content.js", false);
"chrome://extensions/content/ext-browser-content.js", false, true);
mm.sendAsyncMessage("Extension:InitBrowser", {
allowScriptsToClose: true,

Просмотреть файл

@ -142,7 +142,7 @@ add_task(async function testDuplicatePinnedTab() {
let {selectedBrowser} = gBrowser;
let frameScriptUrl = `data:,(${frameScript}).call(this)`;
selectedBrowser.messageManager.loadFrameScript(frameScriptUrl, false);
selectedBrowser.messageManager.loadFrameScript(frameScriptUrl, false, true);
let message = await waitForMessage(selectedBrowser.messageManager, "test:find:selectionTest");
info("Test that text was highlighted properly.");

Просмотреть файл

@ -1101,7 +1101,7 @@ var SessionStoreInternal = {
});
// Load the frame script after registering listeners.
mm.loadFrameScript("chrome://browser/content/content-sessionStore.js", true);
mm.loadFrameScript("chrome://browser/content/content-sessionStore.js", true, true);
// and create its data object
this._windows[aWindow.__SSi] = { tabs: [], selected: 0, _closedTabs: [], busy: false };

Просмотреть файл

@ -131,7 +131,7 @@ function startup(data) {
ChromeUtils.import("resource://formautofill/FormAutofillContent.jsm");
}, true);
/* eslint-enable no-unused-vars */
Services.mm.loadFrameScript("chrome://formautofill/content/FormAutofillFrameScript.js", true);
Services.mm.loadFrameScript("chrome://formautofill/content/FormAutofillFrameScript.js", true, true);
}
function shutdown() {

2
browser/extensions/onboarding/bootstrap.js поставляемый
Просмотреть файл

@ -174,7 +174,7 @@ function onBrowserReady() {
OnboardingTourType.check();
OnboardingTelemetry.init(startupData);
Services.mm.loadFrameScript("resource://onboarding/onboarding.js", true);
Services.mm.loadFrameScript("resource://onboarding/onboarding.js", true, true);
initContentMessageListener();
}

Просмотреть файл

@ -507,10 +507,10 @@ var BrowserApp = {
// Don't delay loading content.js because when we restore reader mode tabs,
// we require the reader mode scripts in content.js right away.
let mm = window.getGroupMessageManager("browsers");
mm.loadFrameScript("chrome://browser/content/content.js", true);
mm.loadFrameScript("chrome://browser/content/content.js", true, true);
// Listen to manifest messages
mm.loadFrameScript("chrome://global/content/manifestMessages.js", true);
mm.loadFrameScript("chrome://global/content/manifestMessages.js", true, true);
// We can't delay registering WebChannel listeners: if the first page is
// about:accounts, which can happen when starting the Firefox Account flow

Просмотреть файл

@ -25,7 +25,7 @@ Services
addEventListener("load", function(event) {
let subframe = event.target != content.document;
sendAsyncMessage("tps:loadEvent", {subframe: subframe, url: event.target.documentURI});
}, true)`), true);
}, true)`), true, true);
var BrowserTabs = {
/**

Просмотреть файл

@ -523,7 +523,7 @@ GlobalManager = {
Components.utils.import("resource://gre/modules/Services.jsm");
Services.obs.notifyObservers(this, "tab-content-frameloader-created", "");
`, false);
`, false, true);
let viewType = browser.getAttribute("webextension-view-type");
if (viewType) {

Просмотреть файл

@ -35,7 +35,7 @@ XPCOMUtils.defineLazyGetter(this, "Management", () => {
return Management;
});
Services.mm.loadFrameScript("chrome://global/content/browser-content.js", true);
Services.mm.loadFrameScript("chrome://global/content/browser-content.js", true, true);
ActorManagerParent.flush();
@ -168,7 +168,7 @@ class ContentPage {
loadFrameScript(func) {
let frameScript = `data:text/javascript,(${encodeURI(func)}).call(this)`;
this.browser.messageManager.loadFrameScript(frameScript, true);
this.browser.messageManager.loadFrameScript(frameScript, true, true);
}
addFrameScriptHelper(func) {
@ -678,7 +678,7 @@ var ExtensionTestUtils = {
// fail sanity checks on debug builds the first time we try to
// create a wrapper, because we should never have a global without a
// cached wrapper.
Services.mm.loadFrameScript("data:text/javascript,//", true);
Services.mm.loadFrameScript("data:text/javascript,//", true, true);
let tmpD = this.profileDir.clone();

Просмотреть файл

@ -107,7 +107,7 @@ async function testPolicy(customCSP = null) {
}, true);
}
let frameScriptURL = `data:,(${encodeURI(frameScript)}).call(this)`;
Services.mm.loadFrameScript(frameScriptURL, true);
Services.mm.loadFrameScript(frameScriptURL, true, true);
info(`Testing CSP for policy: ${content_security_policy}`);

Просмотреть файл

@ -36,7 +36,7 @@ async function withHandlingUserInput(extension, fn) {
let {messageManager} = extension.extension.groupFrameLoader;
if (!extensionHandlers.has(extension)) {
messageManager.loadFrameScript(`data:,(${frameScript}).call(this)`, false);
messageManager.loadFrameScript(`data:,(${frameScript}).call(this)`, false, true);
extensionHandlers.add(extension);
}

Просмотреть файл

@ -65,8 +65,8 @@ MainProcessSingleton.prototype = {
// Load this script early so that console.* is initialized
// before other frame scripts.
Services.mm.loadFrameScript("chrome://global/content/browser-content.js", true);
Services.ppmm.loadProcessScript("chrome://global/content/process-content.js", true);
Services.mm.loadFrameScript("chrome://global/content/browser-content.js", true, true);
Services.ppmm.loadProcessScript("chrome://global/content/process-content.js", true, true);
Services.mm.addMessageListener("Search:AddEngine", this.addSearchEngine);
Services.ppmm.loadProcessScript("resource:///modules/ContentObservers.js", true);
break;

Просмотреть файл

@ -43,7 +43,7 @@ function amManager() {
ChromeUtils.import("resource://gre/modules/AddonManager.jsm");
/* globals AddonManagerPrivate*/
Services.mm.loadFrameScript(CHILD_SCRIPT, true);
Services.mm.loadFrameScript(CHILD_SCRIPT, true, true);
Services.mm.addMessageListener(MSG_INSTALL_ENABLED, this);
Services.mm.addMessageListener(MSG_INSTALL_ADDON, this);
Services.mm.addMessageListener(MSG_PROMISE_REQUEST, this);

Просмотреть файл

@ -3094,8 +3094,8 @@ var gDetailView = {
}
mm.loadFrameScript("chrome://extensions/content/ext-browser-content.js",
false);
mm.loadFrameScript("chrome://browser/content/content.js", false);
false, true);
mm.loadFrameScript("chrome://browser/content/content.js", false, true);
mm.addMessageListener("Extension:BrowserContentLoaded", messageListener);
mm.addMessageListener("Extension:BrowserResized", messageListener);