Commit a15a2a5b authored by Kris Maglione's avatar Kris Maglione
Browse files

Bug 1393621: Part 2 - Add test for API modules loaded at startup. r=zombie

MozReview-Commit-ID: 6gyDqsaImmX

--HG--
extra : rebase_source : 17a7a3c83ab0939371baf98b484b092e1681b34a
parent 78609e83
Loading
Loading
Loading
Loading
+11 −16
Original line number Diff line number Diff line
@@ -10,22 +10,17 @@ 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);

+32 −0
Original line number Diff line number Diff line
/* -*- 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() {
  await ExtensionTestUtils.startAddonManager();

  let extension = ExtensionTestUtils.loadExtension({
    useAddonManager: "temporary",
    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();
});
+1 −0
Original line number Diff line number Diff line
@@ -58,6 +58,7 @@ skip-if = true # This test no longer tests what it is meant to test.
[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