summaryrefslogtreecommitdiffstats
path: root/devtools/client/aboutdebugging/test/browser/browser_aboutdebugging_devtoolstoolbox_shortcuts.js
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/client/aboutdebugging/test/browser/browser_aboutdebugging_devtoolstoolbox_shortcuts.js')
-rw-r--r--devtools/client/aboutdebugging/test/browser/browser_aboutdebugging_devtoolstoolbox_shortcuts.js106
1 files changed, 106 insertions, 0 deletions
diff --git a/devtools/client/aboutdebugging/test/browser/browser_aboutdebugging_devtoolstoolbox_shortcuts.js b/devtools/client/aboutdebugging/test/browser/browser_aboutdebugging_devtoolstoolbox_shortcuts.js
new file mode 100644
index 0000000000..b03a206350
--- /dev/null
+++ b/devtools/client/aboutdebugging/test/browser/browser_aboutdebugging_devtoolstoolbox_shortcuts.js
@@ -0,0 +1,106 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+/* import-globals-from helper-collapsibilities.js */
+Services.scriptloader.loadSubScript(
+ CHROME_URL_ROOT + "helper-collapsibilities.js",
+ this
+);
+
+/**
+ * Test shortcut keys on about:devtools-toolbox page.
+ */
+add_task(async function () {
+ info("Force all debug target panes to be expanded");
+ prepareCollapsibilitiesTest();
+
+ const { document, tab, window } = await openAboutDebugging();
+ await selectThisFirefoxPage(document, window.AboutDebugging.store);
+ const { devtoolsBrowser, devtoolsTab, devtoolsWindow } =
+ await openAboutDevtoolsToolbox(document, tab, window);
+
+ info("Check whether the shortcut keys which opens devtools is disabled");
+ await assertShortcutKeys(devtoolsBrowser, false);
+
+ info("Switch to the inspector programmatically");
+ const toolbox = getToolbox(devtoolsWindow);
+ await toolbox.selectTool("inspector");
+
+ info(
+ "Use the Webconsole keyboard shortcut and wait for the panel to be selected"
+ );
+ const onToolReady = toolbox.once("webconsole-ready");
+ EventUtils.synthesizeKey(
+ "K",
+ {
+ accelKey: true,
+ shiftKey: !navigator.userAgent.match(/Mac/),
+ altKey: navigator.userAgent.match(/Mac/),
+ },
+ devtoolsWindow
+ );
+ await onToolReady;
+
+ info("Force to select about:debugging page");
+ await updateSelectedTab(gBrowser, tab, window.AboutDebugging.store);
+
+ info("Check whether the shortcut keys which opens devtools is enabled");
+ await assertShortcutKeys(tab.linkedBrowser, true);
+
+ await closeAboutDevtoolsToolbox(document, devtoolsTab, window);
+ await removeTab(tab);
+});
+
+async function assertShortcutKeys(browser, shouldBeEnabled) {
+ await assertShortcutKey(browser.contentWindow, "VK_F12", {}, shouldBeEnabled);
+ await assertShortcutKey(
+ browser.contentWindow,
+ "I",
+ {
+ accelKey: true,
+ shiftKey: !navigator.userAgent.match(/Mac/),
+ altKey: navigator.userAgent.match(/Mac/),
+ },
+ shouldBeEnabled
+ );
+}
+
+async function assertShortcutKey(win, key, modifiers, shouldBeEnabled) {
+ info(`Assert shortcut key [${key}]`);
+
+ if (shouldBeEnabled) {
+ await assertShortcutKeyEnabled(win, key, modifiers);
+ } else {
+ await assertShortcutKeyDisabled(win, key, modifiers);
+ }
+}
+
+async function assertShortcutKeyDisabled(win, key, modifiers) {
+ let isReadyCalled = false;
+ const toolboxListener = () => {
+ isReadyCalled = true;
+ };
+ gDevTools.on("toolbox-ready", toolboxListener);
+
+ EventUtils.synthesizeKey(key, modifiers, win);
+ await wait(1000);
+ ok(!isReadyCalled, `Devtools should not be opened by ${key}`);
+
+ gDevTools.off("toolbox-ready", toolboxListener);
+}
+
+async function assertShortcutKeyEnabled(win, key, modifiers) {
+ // Open devtools
+ const onToolboxReady = gDevTools.once("toolbox-ready");
+ EventUtils.synthesizeKey(key, modifiers, win);
+ await onToolboxReady;
+ ok(true, `Devtools should be opened by ${key}`);
+
+ // Close devtools
+ const onToolboxDestroyed = gDevTools.once("toolbox-destroyed");
+ EventUtils.synthesizeKey(key, modifiers, win);
+ await onToolboxDestroyed;
+ ok(true, `Devtopls should be closed by ${key}`);
+}