summaryrefslogtreecommitdiffstats
path: root/devtools/client/framework/test/browser_toolbox_raise.js
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/client/framework/test/browser_toolbox_raise.js')
-rw-r--r--devtools/client/framework/test/browser_toolbox_raise.js68
1 files changed, 68 insertions, 0 deletions
diff --git a/devtools/client/framework/test/browser_toolbox_raise.js b/devtools/client/framework/test/browser_toolbox_raise.js
new file mode 100644
index 0000000000..1912d349d4
--- /dev/null
+++ b/devtools/client/framework/test/browser_toolbox_raise.js
@@ -0,0 +1,68 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+const TEST_URL = "data:text/html,test for opening toolbox in different hosts";
+
+var { Toolbox } = require("resource://devtools/client/framework/toolbox.js");
+
+add_task(async function () {
+ const tab1 = await addTab(TEST_URL);
+ const tab2 = BrowserTestUtils.addTab(gBrowser);
+
+ const toolbox = await gDevTools.showToolboxForTab(tab1);
+ await testBottomHost(toolbox, tab1, tab2);
+
+ await testWindowHost(toolbox);
+
+ Services.prefs.setCharPref("devtools.toolbox.host", Toolbox.HostType.BOTTOM);
+
+ await toolbox.destroy();
+ gBrowser.removeCurrentTab();
+ gBrowser.removeCurrentTab();
+});
+
+async function testBottomHost(toolbox, tab1, tab2) {
+ // switch to another tab and test toolbox.raise()
+ gBrowser.selectedTab = tab2;
+ await new Promise(executeSoon);
+ is(
+ gBrowser.selectedTab,
+ tab2,
+ "Correct tab is selected before calling raise"
+ );
+
+ await toolbox.raise();
+ is(
+ gBrowser.selectedTab,
+ tab1,
+ "Correct tab was selected after calling raise"
+ );
+}
+
+async function testWindowHost(toolbox) {
+ await toolbox.switchHost(Toolbox.HostType.WINDOW);
+
+ info("Wait for the toolbox to be focused when switching to window host");
+ // We can't wait for the "focus" event on toolbox.win.parent as this document is created while calling switchHost.
+ await waitFor(() => {
+ return Services.focus.activeWindow == toolbox.topWindow;
+ });
+
+ const onBrowserWindowFocused = new Promise(resolve =>
+ window.addEventListener("focus", resolve, { once: true, capture: true })
+ );
+
+ info("Focusing the browser window");
+ window.focus();
+
+ info("Wait for the browser window to be focused");
+ await onBrowserWindowFocused;
+
+ // Now raise toolbox.
+ await toolbox.raise();
+ is(
+ Services.focus.activeWindow,
+ toolbox.topWindow,
+ "the toolbox window is immediately focused after raise resolution"
+ );
+}