summaryrefslogtreecommitdiff
path: root/toolkit/devtools/framework/test/browser_toolbox_raise.js
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/devtools/framework/test/browser_toolbox_raise.js')
-rw-r--r--toolkit/devtools/framework/test/browser_toolbox_raise.js88
1 files changed, 88 insertions, 0 deletions
diff --git a/toolkit/devtools/framework/test/browser_toolbox_raise.js b/toolkit/devtools/framework/test/browser_toolbox_raise.js
new file mode 100644
index 000000000..ca2e7611b
--- /dev/null
+++ b/toolkit/devtools/framework/test/browser_toolbox_raise.js
@@ -0,0 +1,88 @@
+/* vim: set ts=2 et sw=2 tw=80: */
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+Cu.import("resource://gre/modules/Services.jsm");
+let temp = {}
+Cu.import("resource:///modules/devtools/gDevTools.jsm", temp);
+let DevTools = temp.DevTools;
+
+Cu.import("resource://gre/modules/devtools/Loader.jsm", temp);
+let devtools = temp.devtools;
+
+let Toolbox = devtools.Toolbox;
+
+let toolbox, target, tab1, tab2;
+
+function test() {
+ gBrowser.selectedTab = tab1 = gBrowser.addTab();
+ tab2 = gBrowser.addTab();
+ target = TargetFactory.forTab(gBrowser.selectedTab);
+
+ gBrowser.selectedBrowser.addEventListener("load", function onLoad(evt) {
+ gBrowser.selectedBrowser.removeEventListener(evt.type, onLoad, true);
+ gDevTools.showToolbox(target)
+ .then(testBottomHost, console.error)
+ .then(null, console.error);
+ }, true);
+
+ content.location = "data:text/html,test for opening toolbox in different hosts";
+}
+
+function testBottomHost(aToolbox) {
+ toolbox = aToolbox;
+
+ // switch to another tab and test toolbox.raise()
+ gBrowser.selectedTab = tab2;
+ executeSoon(function() {
+ is(gBrowser.selectedTab, tab2, "Correct tab is selected before calling raise");
+ toolbox.raise();
+ executeSoon(function() {
+ is(gBrowser.selectedTab, tab1, "Correct tab was selected after calling raise");
+
+ toolbox.switchHost(Toolbox.HostType.WINDOW).then(testWindowHost).then(null, console.error);
+ });
+ });
+}
+
+function testWindowHost() {
+ // Make sure toolbox is not focused.
+ window.addEventListener("focus", onFocus, true);
+
+ // Need to wait for focus as otherwise window.focus() is overridden by
+ // toolbox window getting focused first on Linux and Mac.
+ let onToolboxFocus = () => {
+ toolbox._host._window.removeEventListener("focus", onToolboxFocus, true);
+ info("focusing main window.");
+ window.focus()
+ };
+ // Need to wait for toolbox window to get focus.
+ toolbox._host._window.addEventListener("focus", onToolboxFocus, true);
+}
+
+function onFocus() {
+ info("Main window is focused before calling toolbox.raise()")
+ window.removeEventListener("focus", onFocus, true);
+
+ // Check if toolbox window got focus.
+ let onToolboxFocusAgain = () => {
+ toolbox._host._window.removeEventListener("focus", onToolboxFocusAgain, false);
+ ok(true, "Toolbox window is the focused window after calling toolbox.raise()");
+ cleanup();
+ };
+ toolbox._host._window.addEventListener("focus", onToolboxFocusAgain, false);
+
+ // Now raise toolbox.
+ toolbox.raise();
+}
+
+function cleanup() {
+ Services.prefs.setCharPref("devtools.toolbox.host", Toolbox.HostType.BOTTOM);
+
+ toolbox.destroy().then(function() {
+ DevTools = Toolbox = toolbox = target = null;
+ gBrowser.removeCurrentTab();
+ gBrowser.removeCurrentTab();
+ finish();
+ });
+}