diff options
Diffstat (limited to 'devtools/client/aboutdebugging/test/browser_addons_debugging_initial_state.js')
-rw-r--r-- | devtools/client/aboutdebugging/test/browser_addons_debugging_initial_state.js | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/devtools/client/aboutdebugging/test/browser_addons_debugging_initial_state.js b/devtools/client/aboutdebugging/test/browser_addons_debugging_initial_state.js new file mode 100644 index 000000000..8a63d0061 --- /dev/null +++ b/devtools/client/aboutdebugging/test/browser_addons_debugging_initial_state.js @@ -0,0 +1,73 @@ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ +"use strict"; + +// Test that addons debugging controls are properly enabled/disabled depending +// on the values of the relevant preferences: +// - devtools.chrome.enabled +// - devtools.debugger.remote-enabled + +const ADDON_ID = "test-devtools@mozilla.org"; +const ADDON_NAME = "test-devtools"; + +const TEST_DATA = [ + { + chromeEnabled: false, + debuggerRemoteEnable: false, + expected: false, + }, { + chromeEnabled: false, + debuggerRemoteEnable: true, + expected: false, + }, { + chromeEnabled: true, + debuggerRemoteEnable: false, + expected: false, + }, { + chromeEnabled: true, + debuggerRemoteEnable: true, + expected: true, + } +]; + +add_task(function* () { + for (let testData of TEST_DATA) { + yield testCheckboxState(testData); + } +}); + +function* testCheckboxState(testData) { + info("Set preferences as defined by the current test data."); + yield new Promise(resolve => { + let options = {"set": [ + ["devtools.chrome.enabled", testData.chromeEnabled], + ["devtools.debugger.remote-enabled", testData.debuggerRemoteEnable], + ]}; + 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, + }); + + info("Test checkbox checked state."); + let addonDebugCheckbox = document.querySelector("#enable-addon-debugging"); + is(addonDebugCheckbox.checked, testData.expected, + "Addons debugging checkbox should be in expected state."); + + info("Test debug buttons disabled state."); + let debugButtons = [...document.querySelectorAll("#addons .debug-button")]; + ok(debugButtons.every(b => b.disabled != testData.expected), + "Debug buttons should be in the expected state"); + + info("Uninstall test addon installed earlier."); + yield uninstallAddon({document, id: ADDON_ID, name: ADDON_NAME}); + + yield closeAboutDebugging(tab); +} |