summaryrefslogtreecommitdiffstats
path: root/devtools/client/aboutdebugging/test/browser_addons_toggle_debug.js
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/client/aboutdebugging/test/browser_addons_toggle_debug.js')
-rw-r--r--devtools/client/aboutdebugging/test/browser_addons_toggle_debug.js65
1 files changed, 65 insertions, 0 deletions
diff --git a/devtools/client/aboutdebugging/test/browser_addons_toggle_debug.js b/devtools/client/aboutdebugging/test/browser_addons_toggle_debug.js
new file mode 100644
index 000000000..1f67cac5b
--- /dev/null
+++ b/devtools/client/aboutdebugging/test/browser_addons_toggle_debug.js
@@ -0,0 +1,65 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+"use strict";
+
+// Test that individual Debug buttons are disabled when "Addons debugging"
+// is disabled.
+// Test that the buttons are updated dynamically if the preference changes.
+
+const ADDON_ID = "test-devtools@mozilla.org";
+const ADDON_NAME = "test-devtools";
+
+add_task(function* () {
+ info("Turn off addon debugging.");
+ yield new Promise(resolve => {
+ let options = {"set": [
+ ["devtools.chrome.enabled", false],
+ ["devtools.debugger.remote-enabled", false],
+ ]};
+ SpecialPowers.pushPrefEnv(options, resolve);
+ });
+
+ let { tab, document } = yield openAboutDebugging("addons");
+ yield waitForInitialAddonList(document);
+
+ info("Install a test addon.");
+ yield installAddon({
+ document,
+ path: "addons/unpacked/install.rdf",
+ name: ADDON_NAME,
+ });
+
+ let addonDebugCheckbox = document.querySelector("#enable-addon-debugging");
+ ok(!addonDebugCheckbox.checked, "Addons debugging should be disabled.");
+
+ info("Check all debug buttons are disabled.");
+ let debugButtons = [...document.querySelectorAll("#addons .debug-button")];
+ ok(debugButtons.every(b => b.disabled), "Debug buttons should be disabled");
+
+ info("Click on 'Enable addons debugging' checkbox.");
+ let addonsContainer = document.getElementById("addons");
+ let onAddonsMutation = waitForMutation(addonsContainer,
+ { subtree: true, attributes: true });
+ addonDebugCheckbox.click();
+ yield onAddonsMutation;
+
+ info("Check all debug buttons are enabled.");
+ ok(addonDebugCheckbox.checked, "Addons debugging should be enabled.");
+ debugButtons = [...document.querySelectorAll("#addons .debug-button")];
+ ok(debugButtons.every(b => !b.disabled), "Debug buttons should be enabled");
+
+ info("Click again on 'Enable addons debugging' checkbox.");
+ onAddonsMutation = waitForMutation(addonsContainer,
+ { subtree: true, attributes: true });
+ addonDebugCheckbox.click();
+ yield onAddonsMutation;
+
+ info("Check all debug buttons are disabled again.");
+ debugButtons = [...document.querySelectorAll("#addons .debug-button")];
+ ok(debugButtons.every(b => b.disabled), "Debug buttons should be disabled");
+
+ info("Uninstall addon installed earlier.");
+ yield uninstallAddon({document, id: ADDON_ID, name: ADDON_NAME});
+
+ yield closeAboutDebugging(tab);
+});