summaryrefslogtreecommitdiffstats
path: root/toolkit/components/webextensions/test/mochitest/test_chrome_ext_background_debug_global.html
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/components/webextensions/test/mochitest/test_chrome_ext_background_debug_global.html')
-rw-r--r--toolkit/components/webextensions/test/mochitest/test_chrome_ext_background_debug_global.html166
1 files changed, 0 insertions, 166 deletions
diff --git a/toolkit/components/webextensions/test/mochitest/test_chrome_ext_background_debug_global.html b/toolkit/components/webextensions/test/mochitest/test_chrome_ext_background_debug_global.html
deleted file mode 100644
index 0edf5ea86..000000000
--- a/toolkit/components/webextensions/test/mochitest/test_chrome_ext_background_debug_global.html
+++ /dev/null
@@ -1,166 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<head>
- <title>WebExtension test</title>
- <script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
- <script src="chrome://mochikit/content/tests/SimpleTest/SpawnTask.js"></script>
- <script src="chrome://mochikit/content/tests/SimpleTest/ExtensionTestUtils.js"></script>
- <script type="text/javascript" src="chrome_head.js"></script>
- <script type="text/javascript" src="head.js"></script>
- <link rel="stylesheet" href="chrome://mochikit/contents/tests/SimpleTest/test.css"/>
-</head>
-<body>
-
-<script type="text/javascript">
-"use strict";
-
-Cu.import("resource://devtools/client/framework/ToolboxProcess.jsm");
-Cu.import("resource://gre/modules/AddonManager.jsm");
-
-const {
- XPIProvider,
-} = Components.utils.import("resource://gre/modules/addons/XPIProvider.jsm");
-
-/**
- * This test is asserting that ext-backgroundPage.js successfully sets its
- * debug global in the AddonWrapper provided by XPIProvider.jsm
- *
- * It does _not_ test any functionality in devtools and does not guarantee
- * debugging is actually working correctly end-to-end.
- */
-
-function background() {
- window.testThing = "test!";
- browser.test.notifyPass("background script ran");
-}
-
-const ID = "debug@tests.mozilla.org";
-let extensionData = {
- useAddonManager: "temporary",
- background,
- manifest: {
- applications: {gecko: {id: ID}},
- },
-};
-
-add_task(function* () {
- let extension = ExtensionTestUtils.loadExtension(extensionData);
- yield extension.startup();
-
- yield extension.awaitFinish("background script ran");
-
- yield new Promise(function(resolve) {
- window.BrowserToolboxProcess.emit("connectionchange", "opened", {
- setAddonOptions(id, options) {
- if (id === ID) {
- let context = Cu.waiveXrays(options.global);
- ok(context.chrome, "global context has a chrome object");
- ok(context.browser, "global context has a browser object");
- is("test!", context.testThing, "global context is the background script context");
- resolve();
- }
- },
- });
- });
-
- let addon = yield new Promise((resolve, reject) => {
- AddonManager.getAddonByID(ID, addon => addon ? resolve(addon) : reject());
- });
-
- ok(addon, `Got the addon wrapper for ${addon.id}`);
-
- function waitForDebugGlobalChanges(times, initialAddonInstanceID) {
- return new Promise((resolve) => {
- AddonManager.addAddonListener({
- count: 0,
- notNullGlobalsCount: 0,
- undefinedPrivateWrappersCount: 0,
- lastAddonInstanceID: initialAddonInstanceID,
- onPropertyChanged(newAddon, changedPropNames) {
- if (newAddon.id != addon.id ||
- !changedPropNames.includes("debugGlobal")) {
- return;
- }
-
- ok(!(newAddon.setDebugGlobal) && !(newAddon.getDebugGlobal),
- "The addon wrapper should not be a PrivateWrapper");
-
- let activeAddon = XPIProvider.activeAddons.get(addon.id);
-
- let addonInstanceID;
-
- if (!activeAddon) {
- // The addon has been disable, the preferred global should be null
- addonInstanceID = this.lastAddonInstanceID;
- delete this.lastAddonInstanceID;
- } else {
- addonInstanceID = activeAddon.instanceID;
- this.lastAddonInstanceID = addonInstanceID;
- }
-
- ok(addonInstanceID, `Got the addon instanceID for ${addon.id}`);
-
- AddonManager.getAddonByInstanceID(addonInstanceID).then((privateWrapper) => {
- this.count += 1;
-
- if (!privateWrapper) {
- // The addon has been uninstalled
- this.undefinedPrivateWrappersCount += 1;
- } else {
- ok((privateWrapper.getDebugGlobal), "Got the addon PrivateWrapper");
-
- if (privateWrapper.getDebugGlobal()) {
- this.notNullGlobalsCount += 1;
- }
- }
-
- if (this.count == times) {
- AddonManager.removeAddonListener(this);
- resolve({
- counters: {
- count: this.count,
- notNullGlobalsCount: this.notNullGlobalsCount,
- undefinedPrivateWrappersCount: this.undefinedPrivateWrappersCount,
- },
- lastAddonInstanceID: this.lastAddonInstanceID,
- });
- }
- });
- },
- });
- });
- }
-
- // two calls expected, one for the shutdown and one for the startup
- // of the background page.
- let waitForDebugGlobalChangesOnReload = waitForDebugGlobalChanges(2);
-
- info("Addon reload...");
- yield addon.reload();
-
- info("Addon completed startup after reload");
-
- let {
- counters: reloadCounters,
- lastAddonInstanceID,
- } = yield waitForDebugGlobalChangesOnReload;
-
- isDeeply(reloadCounters, {count: 2, notNullGlobalsCount: 1, undefinedPrivateWrappersCount: 0},
- "Got the expected number of onPropertyChanged calls on reload");
-
- // one more call expected for the shutdown.
- let waitForDebugGlobalChangesOnShutdown = waitForDebugGlobalChanges(1, lastAddonInstanceID);
-
- info("extension unloading...");
- yield extension.unload();
- info("extension unloaded");
-
- let {counters: unloadCounters} = yield waitForDebugGlobalChangesOnShutdown;
-
- isDeeply(unloadCounters, {count: 1, notNullGlobalsCount: 0, undefinedPrivateWrappersCount: 1},
- "Got the expected number of onPropertyChanged calls on shutdown");
-});
-</script>
-
-</body>
-</html>