Bug 1393621: Part 2 - Add test for API modules loaded at startup. r?zombie
MozReview-Commit-ID: 6gyDqsaImmX
--- a/toolkit/components/extensions/test/xpcshell/head.js
+++ b/toolkit/components/extensions/test/xpcshell/head.js
@@ -5,32 +5,27 @@ const {classes: Cc, interfaces: Ci, util
/* exported createHttpServer, promiseConsoleOutput, cleanupDir */
Components.utils.import("resource://gre/modules/AppConstants.jsm");
Components.utils.import("resource://gre/modules/Services.jsm");
Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
Components.utils.import("resource://gre/modules/Timer.jsm");
Components.utils.import("resource://testing-common/AddonTestUtils.jsm");
-XPCOMUtils.defineLazyModuleGetter(this, "ContentTask",
- "resource://testing-common/ContentTask.jsm");
-XPCOMUtils.defineLazyModuleGetter(this, "Extension",
- "resource://gre/modules/Extension.jsm");
-XPCOMUtils.defineLazyModuleGetter(this, "ExtensionData",
- "resource://gre/modules/Extension.jsm");
-XPCOMUtils.defineLazyModuleGetter(this, "ExtensionTestUtils",
- "resource://testing-common/ExtensionXPCShellUtils.jsm");
-XPCOMUtils.defineLazyModuleGetter(this, "FileUtils",
- "resource://gre/modules/FileUtils.jsm");
-XPCOMUtils.defineLazyModuleGetter(this, "HttpServer",
- "resource://testing-common/httpd.js");
-XPCOMUtils.defineLazyModuleGetter(this, "NetUtil",
- "resource://gre/modules/NetUtil.jsm");
-XPCOMUtils.defineLazyModuleGetter(this, "Schemas",
- "resource://gre/modules/Schemas.jsm");
+XPCOMUtils.defineLazyModuleGetters(this, {
+ ContentTask: "resource://testing-common/ContentTask.jsm",
+ Extension: "resource://gre/modules/Extension.jsm",
+ ExtensionData: "resource://gre/modules/Extension.jsm",
+ ExtensionParent: "resource://gre/modules/ExtensionParent.jsm",
+ ExtensionTestUtils: "resource://testing-common/ExtensionXPCShellUtils.jsm",
+ FileUtils: "resource://gre/modules/FileUtils.jsm",
+ HttpServer: "resource://testing-common/httpd.js",
+ NetUtil: "resource://gre/modules/NetUtil.jsm",
+ Schemas: "resource://gre/modules/Schemas.jsm",
+});
Services.prefs.setBoolPref("extensions.webextensions.remote", false);
ExtensionTestUtils.init(this);
/**
* Creates a new HttpServer for testing, and begins listening on the
* specified port. Automatically shuts down the server when the test
new file mode 100644
--- /dev/null
+++ b/toolkit/components/extensions/test/xpcshell/test_ext_startup_perf.js
@@ -0,0 +1,29 @@
+/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* vim: set sts=2 sw=2 et tw=80: */
+"use strict";
+
+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() {
+ let extension = ExtensionTestUtils.loadExtension({
+ background() {},
+ manifest: {},
+ });
+
+ await extension.startup();
+
+ const {apiManager} = ExtensionParent;
+
+ const loadedAPIs = Array.from(apiManager.modules.values())
+ .filter(m => m.loaded || m.asyncLoaded)
+ .map(m => m.namespaceName);
+
+ deepEqual(loadedAPIs.sort(), STARTUP_APIS,
+ "No extra APIs should be loaded at startup for a simple extension");
+
+ await extension.unload();
+});
--- a/toolkit/components/extensions/test/xpcshell/xpcshell-common.ini
+++ b/toolkit/components/extensions/test/xpcshell/xpcshell-common.ini
@@ -53,16 +53,17 @@ skip-if = true # This test no longer tes
[test_ext_runtime_sendMessage.js]
[test_ext_runtime_sendMessage_errors.js]
[test_ext_runtime_sendMessage_no_receiver.js]
[test_ext_runtime_sendMessage_self.js]
[test_ext_shutdown_cleanup.js]
[test_ext_simple.js]
[test_ext_startup_cache.js]
skip-if = os == "android"
+[test_ext_startup_perf.js]
[test_ext_storage.js]
[test_ext_storage_sync.js]
head = head.js head_sync.js
skip-if = os == "android"
[test_ext_storage_sync_crypto.js]
skip-if = os == "android"
[test_ext_storage_telemetry.js]
skip-if = os == "android" # checking for telemetry needs to be updated: 1384923