Bug 1245420 - Sort devtools/client/framework tests and clean-up browser_toolbox_toggle.js; r=ochameau draft
authorPatrick Brosset <pbrosset@mozilla.com>
Wed, 03 Feb 2016 10:09:32 +0100
changeset 328403 c0fe27f7dad19707053d70c2bf74284cff573a20
parent 328402 ce6b2fdabc3ecd709abf5de6dbe963edd44d18fb
child 513821 d73c7a6ce85dbecfa8245212e31debdffc93a125
push id10364
push userpbrosset@mozilla.com
push dateWed, 03 Feb 2016 09:31:56 +0000
reviewersochameau
bugs1245420
milestone47.0a1
Bug 1245420 - Sort devtools/client/framework tests and clean-up browser_toolbox_toggle.js; r=ochameau
devtools/client/framework/test/browser.ini
devtools/client/framework/test/browser_toolbox_tabsswitch_shortcuts.js
devtools/client/framework/test/browser_toolbox_textbox_context_menu.js
devtools/client/framework/test/browser_toolbox_toggle.js
--- 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/)