Bug 1245420 - Sort devtools/client/framework tests and clean-up browser_toolbox_toggle.js; r=ochameau
--- a/devtools/client/framework/test/browser.ini
+++ b/devtools/client/framework/test/browser.ini
@@ -23,54 +23,53 @@ support-files =
[browser_ignore_toolbox_network_requests.js]
[browser_keybindings_01.js]
[browser_keybindings_02.js]
[browser_keybindings_03.js]
[browser_new_activation_workflow.js]
[browser_target_events.js]
[browser_target_remote.js]
[browser_target_support.js]
-[browser_two_tabs.js]
-skip-if = e10s && debug && os == 'win' # Bug 1231869
+[browser_toolbox_custom_host.js]
[browser_toolbox_dynamic_registration.js]
[browser_toolbox_getpanelwhenready.js]
[browser_toolbox_highlight.js]
[browser_toolbox_hosts.js]
[browser_toolbox_hosts_size.js]
[browser_toolbox_minimize.js]
skip-if = true # Bug 1177463 - Temporarily hide the minimize button
[browser_toolbox_options.js]
[browser_toolbox_options_disable_buttons.js]
[browser_toolbox_options_disable_cache-01.js]
[browser_toolbox_options_disable_cache-02.js]
[browser_toolbox_options_disable_js.js]
+[browser_toolbox_options_enable_serviceworkers_testing.js]
# [browser_toolbox_raise.js] # Bug 962258
# skip-if = os == "win"
[browser_toolbox_ready.js]
[browser_toolbox_select_event.js]
skip-if = e10s # Bug 1069044 - destroyInspector may hang during shutdown
+[browser_toolbox_selected_tool_unavailable.js]
[browser_toolbox_sidebar.js]
[browser_toolbox_sidebar_events.js]
[browser_toolbox_sidebar_existing_tabs.js]
[browser_toolbox_sidebar_overflow_menu.js]
+[browser_toolbox_split_console.js]
[browser_toolbox_tabsswitch_shortcuts.js]
[browser_toolbox_textbox_context_menu.js]
+[browser_toolbox_theme_registration.js]
[browser_toolbox_toggle.js]
[browser_toolbox_tool_ready.js]
[browser_toolbox_tool_remote_reopen.js]
[browser_toolbox_transport_events.js]
[browser_toolbox_view_source_01.js]
[browser_toolbox_view_source_02.js]
[browser_toolbox_view_source_03.js]
[browser_toolbox_view_source_04.js]
[browser_toolbox_window_reload_target.js]
[browser_toolbox_window_shortcuts.js]
skip-if = os == "mac" && os_version == "10.8" || os == "win" && os_version == "5.1" # Bug 851129 - Re-enable browser_toolbox_window_shortcuts.js test after leaks are fixed
[browser_toolbox_window_title_changes.js]
[browser_toolbox_zoom.js]
-[browser_toolbox_custom_host.js]
-[browser_toolbox_theme_registration.js]
-[browser_toolbox_options_enable_serviceworkers_testing.js]
-[browser_toolbox_selected_tool_unavailable.js]
-[browser_toolbox_split_console.js]
-
+[browser_two_tabs.js]
+skip-if = e10s && debug && os == 'win' # Bug 1231869
# We want this test to run for mochitest-dt as well, so we include it here:
[../../../../browser/base/content/test/general/browser_parsable_css.js]
--- a/devtools/client/framework/test/browser_toolbox_tabsswitch_shortcuts.js
+++ b/devtools/client/framework/test/browser_toolbox_tabsswitch_shortcuts.js
@@ -1,89 +1,64 @@
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */
requestLongerTimeout(2);
var {Toolbox} = require("devtools/client/framework/toolbox");
-var toolbox, toolIDs, idIndex, secondTime = false,
- reverse = false, nextKey = null, prevKey = null;
-
-function test() {
- addTab("about:blank").then(function() {
- let target = TargetFactory.forTab(gBrowser.selectedTab);
- idIndex = 0;
+add_task(function*() {
+ let tab = yield addTab("about:blank");
+ let target = TargetFactory.forTab(tab);
+ yield target.makeRemote();
- target.makeRemote().then(() => {
- toolIDs = gDevTools.getToolDefinitionArray()
- .filter(def => def.isTargetSupported(target))
- .map(def => def.id);
- gDevTools.showToolbox(target, toolIDs[0], Toolbox.HostType.BOTTOM)
- .then(testShortcuts);
- });
- });
-}
+ let toolIDs = gDevTools.getToolDefinitionArray()
+ .filter(def => def.isTargetSupported(target))
+ .map(def => def.id);
-function testShortcuts(aToolbox, aIndex) {
- if (aIndex === undefined) {
- aIndex = 1;
- } else if (aIndex == toolIDs.length) {
- aIndex = 0;
- if (secondTime) {
- secondTime = false;
- reverse = true;
- aIndex = toolIDs.length - 2;
- }
- else {
- secondTime = true;
- }
+ let toolbox = yield gDevTools.showToolbox(target, toolIDs[0],
+ Toolbox.HostType.BOTTOM);
+ let nextKey = toolbox.doc.getElementById("toolbox-next-tool-key")
+ .getAttribute("key");
+ let prevKey = toolbox.doc.getElementById("toolbox-previous-tool-key")
+ .getAttribute("key");
+
+ // Iterate over all tools, starting from options to netmonitor, in normal
+ // order.
+ for (let i = 1; i < toolIDs.length; i++) {
+ yield testShortcuts(toolbox, i, nextKey, toolIDs);
}
- else if (aIndex == -1) {
- aIndex = toolIDs.length - 1;
- if (secondTime) {
- tidyUp();
- return;
- }
- secondTime = true;
+
+ // Iterate again, in the same order, starting from netmonitor (so next one is
+ // 0: options).
+ for (let i = 0; i < toolIDs.length; i++) {
+ yield testShortcuts(toolbox, i, nextKey, toolIDs);
}
- toolbox = aToolbox;
- if (!nextKey) {
- nextKey = toolbox.doc.getElementById("toolbox-next-tool-key")
- .getAttribute("key");
- prevKey = toolbox.doc.getElementById("toolbox-previous-tool-key")
- .getAttribute("key");
+ // Iterate over all tools in reverse order, starting from netmonitor to
+ // options.
+ for (let i = toolIDs.length - 2; i >= 0; i--) {
+ yield testShortcuts(toolbox, i, prevKey, toolIDs);
}
- info("Toolbox fired a `ready` event");
- toolbox.once("select", onSelect);
+ // Iterate again, in reverse order again, starting from options (so next one
+ // is length-1: netmonitor).
+ for (let i = toolIDs.length - 1; i >= 0; i--) {
+ yield testShortcuts(toolbox, i, prevKey, toolIDs);
+ }
- let key = (reverse ? prevKey: nextKey);
- let modifiers = {
- accelKey: true
- };
- idIndex = aIndex;
- info("Testing shortcut to switch to tool " + aIndex + ":" + toolIDs[aIndex] +
+ yield toolbox.destroy();
+ gBrowser.removeCurrentTab();
+});
+
+function* testShortcuts(toolbox, index, key, toolIDs) {
+ info("Testing shortcut to switch to tool " + index + ":" + toolIDs[index] +
" using key " + key);
- EventUtils.synthesizeKey(key, modifiers, toolbox.doc.defaultView);
-}
-function onSelect(event, id) {
+ let onToolSelected = toolbox.once("select");
+ EventUtils.synthesizeKey(key, {accelKey: true}, toolbox.doc.defaultView);
+ let id = yield onToolSelected;
+
info("toolbox-select event from " + id);
- is(toolIDs.indexOf(id), idIndex,
+ is(toolIDs.indexOf(id), index,
"Correct tool is selected on pressing the shortcut for " + id);
- // Execute soon to reset the stack trace.
- executeSoon(() => {
- testShortcuts(toolbox, idIndex + (reverse ? -1: 1));
- });
}
-
-function tidyUp() {
- toolbox.destroy().then(function() {
- gBrowser.removeCurrentTab();
-
- toolbox = toolIDs = idIndex = Toolbox = secondTime = reverse = nextKey =
- prevKey = null;
- finish();
- });
-}
--- a/devtools/client/framework/test/browser_toolbox_textbox_context_menu.js
+++ b/devtools/client/framework/test/browser_toolbox_textbox_context_menu.js
@@ -1,16 +1,15 @@
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */
const URL = "data:text/html;charset=utf8,test for textbox context menu";
add_task(function*() {
- let tab = yield addTab(URL);
- let toolbox = yield gDevTools.showToolbox(TargetFactory.forTab(tab));
+ let toolbox = yield openNewTabAndToolbox(URL, "inspector");
let textboxContextMenu = toolbox.textboxContextMenuPopup;
ok(textboxContextMenu, "The textbox context menu is loaded in the toolbox");
let cmdUndo = textboxContextMenu.querySelector("[command=cmd_undo]");
let cmdDelete = textboxContextMenu.querySelector("[command=cmd_delete]");
let cmdSelectAll = textboxContextMenu.querySelector("[command=cmd_selectAll]");
let cmdCut = textboxContextMenu.querySelector("[command=cmd_cut]");
--- a/devtools/client/framework/test/browser_toolbox_toggle.js
+++ b/devtools/client/framework/test/browser_toolbox_toggle.js
@@ -6,16 +6,18 @@
// Test toggling the toolbox with ACCEL+SHIFT+I / ACCEL+ALT+I and F12 in docked
// and detached (window) modes.
const URL = "data:text/html;charset=utf-8,Toggling devtools using shortcuts";
var {Toolbox} = require("devtools/client/framework/toolbox");
add_task(function*() {
+ Services.prefs.clearUserPref("devtools.toolbox.selectedTool");
+
// Test with ACCEL+SHIFT+I / ACCEL+ALT+I (MacOSX) ; modifiers should match :
// - toolbox-key-toggle in devtools/client/framework/toolbox-window.xul
// - key_devToolboxMenuItem in browser/base/content/browser.xul
info("Test toggle using CTRL+SHIFT+I/CMD+ALT+I");
yield testToggle("I", {
accelKey: true,
shiftKey: !navigator.userAgent.match(/Mac/),
altKey: navigator.userAgent.match(/Mac/)