diff --git a/toolkit/components/extensions/test/xpcshell/test_ext_startup_perf.js b/toolkit/components/extensions/test/xpcshell/test_ext_startup_perf.js index 386191422c64..29a9e4ff4dae 100644 --- a/toolkit/components/extensions/test/xpcshell/test_ext_startup_perf.js +++ b/toolkit/components/extensions/test/xpcshell/test_ext_startup_perf.js @@ -6,9 +6,26 @@ const STARTUP_APIS = [ "backgroundPage", ]; -// Tests that only the minimal set of API scripts are loaded at startup -// for a simple extension. -add_task(async function test_loaded_api_scripts() { +const STARTUP_MODULES = [ + "resource://gre/modules/Extension.jsm", + "resource://gre/modules/ExtensionCommon.jsm", + "resource://gre/modules/ExtensionParent.jsm", + // FIXME: This is only loaded at startup for new extension installs. + // Otherwise the data comes from the startup cache. We should test for + // this. + "resource://gre/modules/ExtensionPermissions.jsm", + "resource://gre/modules/ExtensionUtils.jsm", +]; + +if (!Services.prefs.getBoolPref("extensions.webextensions.remote")) { + STARTUP_MODULES.push( + "resource://gre/modules/ExtensionChild.jsm", + "resource://gre/modules/ExtensionPageChild.jsm"); +} + +// Tests that only the minimal set of API scripts and modules are loaded at +// startup for a simple extension. +add_task(async function test_loaded_scripts() { await ExtensionTestUtils.startAddonManager(); let extension = ExtensionTestUtils.loadExtension({ @@ -28,5 +45,13 @@ add_task(async function test_loaded_api_scripts() { deepEqual(loadedAPIs.sort(), STARTUP_APIS, "No extra APIs should be loaded at startup for a simple extension"); + + const loader = Cc["@mozilla.org/moz/jsloader;1"].getService(Ci.xpcIJSModuleLoader); + let loadedModules = loader.loadedModules() + .filter(url => url.startsWith("resource://gre/modules/Extension")); + + deepEqual(loadedModules.sort(), STARTUP_MODULES.sort(), + "No extra extension modules should be loaded at startup for a simple extension"); + await extension.unload(); });