зеркало из https://github.com/mozilla/gecko-dev.git
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:
Родитель
e890d39c82
Коммит
f99ee35b82
|
@ -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() {
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче