Bug 1310346 - Fix RDM browser_toolbox_swap_browsers.js for e10s-multi. r=ochameau draft
authorJ. Ryan Stinnett <jryans@gmail.com>
Fri, 14 Oct 2016 17:52:47 -0500
changeset 426016 8da65540ca3603294a77b59ecb688b6bcae0f6a6
parent 424408 38171e4619fb49c80f0342b6c4a91970c5faccf5
child 534060 fc636e7f407c1dde4d0c9b77ca46ed92e8510b71
push id32583
push userbmo:jryans@gmail.com
push dateMon, 17 Oct 2016 16:04:54 +0000
reviewersochameau
bugs1310346
milestone52.0a1
Bug 1310346 - Fix RDM browser_toolbox_swap_browsers.js for e10s-multi. r=ochameau MozReview-Commit-ID: JwuqF3SdxtQ
devtools/client/responsive.html/test/browser/browser_toolbox_swap_browsers.js
devtools/client/responsive.html/test/browser/head.js
--- a/devtools/client/responsive.html/test/browser/browser_toolbox_swap_browsers.js
+++ b/devtools/client/responsive.html/test/browser/browser_toolbox_swap_browsers.js
@@ -15,68 +15,104 @@ function getServerConnections(browser) {
     const { DebuggerServer } = require("devtools/server/main");
     if (!DebuggerServer._connections) {
       return 0;
     }
     return Object.getOwnPropertyNames(DebuggerServer._connections);
   });
 }
 
-let checkServerConnectionCount = Task.async(function* (browser, expected) {
+let checkServerConnectionCount = Task.async(function* (browser, expected, msg) {
   let conns = yield getServerConnections(browser);
-  is(conns.length || 0, expected, "Server connection count");
+  is(conns.length || 0, expected, "Server connection count: " + msg);
 });
 
 let checkToolbox = Task.async(function* (tab, location) {
   let target = TargetFactory.forTab(tab);
   ok(!!gDevTools.getToolbox(target), `Toolbox exists ${location}`);
 });
 
 add_task(function* () {
   let tab = yield addTab(TEST_URL);
 
-  // Open toolbox outside RDM
+  info("Open toolbox outside RDM");
   {
     // 0: No DevTools connections yet
-    yield checkServerConnectionCount(tab.linkedBrowser, 0);
+    yield checkServerConnectionCount(tab.linkedBrowser, 0,
+      "0: No DevTools connections yet");
     let { toolbox } = yield openInspector();
-    // 2: One for each tab (starting tab plus the one we opened).  Only one truly needed,
-    //    but calling listTabs will create one for each tab.  `registerTestActor` calls
-    //    this, triggering the extra tab's actor to be made.
-    yield checkServerConnectionCount(tab.linkedBrowser, 2);
+    if (E10S_MULTI_ENABLED) {
+      // 1: Two tabs open, but only one per content process
+      yield checkServerConnectionCount(tab.linkedBrowser, 1,
+        "1: Two tabs open, but only one per content process");
+    } else {
+      // 2: One for each tab (starting tab plus the one we opened)
+      yield checkServerConnectionCount(tab.linkedBrowser, 2,
+        "2: One for each tab (starting tab plus the one we opened)");
+    }
     yield checkToolbox(tab, "outside RDM");
     let { ui } = yield openRDM(tab);
-    // 3: RDM UI uses an extra connection
-    yield checkServerConnectionCount(ui.getViewportBrowser(), 3);
+    if (E10S_MULTI_ENABLED) {
+      // 2: RDM UI adds an extra connection, 1 + 1 = 2
+      yield checkServerConnectionCount(ui.getViewportBrowser(), 2,
+        "2: RDM UI uses an extra connection");
+    } else {
+      // 3: RDM UI adds an extra connection, 2 + 1 = 3
+      yield checkServerConnectionCount(ui.getViewportBrowser(), 3,
+        "3: RDM UI uses an extra connection");
+    }
     yield checkToolbox(tab, "after opening RDM");
     yield closeRDM(tab);
-    // 2: RDM UI closed, back to one for each tab
-    yield checkServerConnectionCount(tab.linkedBrowser, 2);
+    if (E10S_MULTI_ENABLED) {
+      // 1: RDM UI closed, return to previous connection count
+      yield checkServerConnectionCount(tab.linkedBrowser, 1,
+        "1: RDM UI closed, return to previous connection count");
+    } else {
+      // 2: RDM UI closed, return to previous connection count
+      yield checkServerConnectionCount(tab.linkedBrowser, 2,
+        "2: RDM UI closed, return to previous connection count");
+    }
     yield checkToolbox(tab, tab.linkedBrowser, "after closing RDM");
     yield toolbox.destroy();
     // 0: All DevTools usage closed
-    yield checkServerConnectionCount(tab.linkedBrowser, 0);
+    yield checkServerConnectionCount(tab.linkedBrowser, 0,
+      "0: All DevTools usage closed");
   }
 
-  // Open toolbox inside RDM
+  info("Open toolbox inside RDM");
   {
     // 0: No DevTools connections yet
-    yield checkServerConnectionCount(tab.linkedBrowser, 0);
+    yield checkServerConnectionCount(tab.linkedBrowser, 0,
+      "0: No DevTools connections yet");
     let { ui } = yield openRDM(tab);
     // 1: RDM UI uses an extra connection
-    yield checkServerConnectionCount(ui.getViewportBrowser(), 1);
+    yield checkServerConnectionCount(ui.getViewportBrowser(), 1,
+      "1: RDM UI uses an extra connection");
     let { toolbox } = yield openInspector();
-    // 3: One for each tab (starting tab plus the one we opened).  Only one truly needed,
-    //    but calling listTabs will create one for each tab.  `registerTestActor` calls
-    //    this, triggering the extra tab's actor to be made.
-    yield checkServerConnectionCount(ui.getViewportBrowser(), 3);
+    if (E10S_MULTI_ENABLED) {
+      // 2: Two tabs open, but only one per content process
+      yield checkServerConnectionCount(ui.getViewportBrowser(), 2,
+        "2: Two tabs open, but only one per content process");
+    } else {
+      // 3: One for each tab (starting tab plus the one we opened)
+      yield checkServerConnectionCount(ui.getViewportBrowser(), 3,
+        "3: One for each tab (starting tab plus the one we opened)");
+    }
     yield checkToolbox(tab, ui.getViewportBrowser(), "inside RDM");
     yield closeRDM(tab);
-    // 2: RDM UI closed, back to one for each tab
-    yield checkServerConnectionCount(tab.linkedBrowser, 2);
+    if (E10S_MULTI_ENABLED) {
+      // 1: RDM UI closed, one less connection
+      yield checkServerConnectionCount(tab.linkedBrowser, 1,
+        "1: RDM UI closed, one less connection");
+    } else {
+      // 2: RDM UI closed, one less connection
+      yield checkServerConnectionCount(tab.linkedBrowser, 2,
+        "2: RDM UI closed, one less connection");
+    }
     yield checkToolbox(tab, tab.linkedBrowser, "after closing RDM");
     yield toolbox.destroy();
     // 0: All DevTools usage closed
-    yield checkServerConnectionCount(tab.linkedBrowser, 0);
+    yield checkServerConnectionCount(tab.linkedBrowser, 0,
+      "0: All DevTools usage closed");
   }
 
   yield removeTab(tab);
 });
--- a/devtools/client/responsive.html/test/browser/head.js
+++ b/devtools/client/responsive.html/test/browser/head.js
@@ -26,16 +26,17 @@ Services.scriptloader.loadSubScript(
   "chrome://mochitests/content/browser/devtools/client/shared/test/test-actor-registry.js",
   this);
 
 // Import helpers for the inspector that are also shared with others
 Services.scriptloader.loadSubScript(
   "chrome://mochitests/content/browser/devtools/client/inspector/test/shared-head.js",
   this);
 
+const E10S_MULTI_ENABLED = Services.prefs.getIntPref("dom.ipc.processCount") > 1;
 const TEST_URI_ROOT = "http://example.com/browser/devtools/client/responsive.html/test/browser/";
 const OPEN_DEVICE_MODAL_VALUE = "OPEN_DEVICE_MODAL";
 
 const { _loadPreferredDevices } = require("devtools/client/responsive.html/actions/devices");
 const { getOwnerWindow } = require("sdk/tabs/utils");
 const asyncStorage = require("devtools/shared/async-storage");
 const { addDevice, removeDevice } = require("devtools/client/shared/devices");