Bug 1243975 - Enable browser_webconsole_bug_632817.js in e10s;r=linclark draft
authorBrian Grinstead <bgrinstead@mozilla.com>
Mon, 21 Mar 2016 09:47:11 -0700
changeset 342917 0be6bd1214ec42f4dee2bd39753e5dc18045292a
parent 342907 9e9f949b36c80f6794a22cbd137c1bce5d9e7098
child 516659 b44f61a65fddc6ac2864bf5857b423049661d283
push id13495
push userbgrinstead@mozilla.com
push dateMon, 21 Mar 2016 16:56:37 +0000
reviewerslinclark
bugs1243975
milestone48.0a1
Bug 1243975 - Enable browser_webconsole_bug_632817.js in e10s;r=linclark MozReview-Commit-ID: C2UgQf2SoOm
devtools/client/webconsole/test/browser.ini
devtools/client/webconsole/test/browser_webconsole_bug_632817.js
--- a/devtools/client/webconsole/test/browser.ini
+++ b/devtools/client/webconsole/test/browser.ini
@@ -244,17 +244,16 @@ skip-if = e10s # Bug 1042253 - webconsol
 [browser_webconsole_bug_622303_persistent_filters.js]
 [browser_webconsole_bug_623749_ctrl_a_select_all_winnt.js]
 skip-if = os != "win"
 [browser_webconsole_bug_630733_response_redirect_headers.js]
 [browser_webconsole_bug_632275_getters_document_width.js]
 [browser_webconsole_bug_632347_iterators_generators.js]
 skip-if = e10s # Bug 1042253 - webconsole tests disabled with e10s
 [browser_webconsole_bug_632817.js]
-skip-if = e10s # Bug 1042253 - webconsole tests disabled with e10s
 [browser_webconsole_bug_642108_pruneTest.js]
 [browser_webconsole_autocomplete_and_selfxss.js]
 [browser_webconsole_bug_644419_log_limits.js]
 [browser_webconsole_bug_646025_console_file_location.js]
 [browser_webconsole_bug_651501_document_body_autocomplete.js]
 [browser_webconsole_bug_653531_highlighter_console_helper.js]
 skip-if = e10s # Bug 1042253 - webconsole tests disabled with e10s
 [browser_webconsole_bug_658368_time_methods.js]
--- a/devtools/client/webconsole/test/browser_webconsole_bug_632817.js
+++ b/devtools/client/webconsole/test/browser_webconsole_bug_632817.js
@@ -15,176 +15,145 @@ const TEST_IMG = "http://example.com/bro
                  "test/test-image.png";
 
 const TEST_DATA_JSON_CONTENT =
   '{ id: "test JSON data", myArray: [ "foo", "bar", "baz", "biff" ] }';
 
 const TEST_URI = "data:text/html;charset=utf-8,Web Console network logging " +
                  "tests";
 
-var lastRequest = null;
-var requestCallback = null;
-var hud, browser;
+let hud;
 
-function test() {
+add_task(function*() {
   const PREF = "devtools.webconsole.persistlog";
   const NET_PREF = "devtools.webconsole.filter.networkinfo";
   const NETXHR_PREF = "devtools.webconsole.filter.netxhr";
   const MIXED_AC_PREF = "security.mixed_content.block_active_content";
   let original = Services.prefs.getBoolPref(NET_PREF);
   let originalXhr = Services.prefs.getBoolPref(NETXHR_PREF);
   let originalMixedActive = Services.prefs.getBoolPref(MIXED_AC_PREF);
   Services.prefs.setBoolPref(NET_PREF, true);
   Services.prefs.setBoolPref(NETXHR_PREF, true);
   Services.prefs.setBoolPref(MIXED_AC_PREF, false);
   Services.prefs.setBoolPref(PREF, true);
   registerCleanupFunction(() => {
     Services.prefs.setBoolPref(NET_PREF, original);
     Services.prefs.setBoolPref(NETXHR_PREF, originalXhr);
     Services.prefs.setBoolPref(MIXED_AC_PREF, originalMixedActive);
     Services.prefs.clearUserPref(PREF);
+    hud = null;
   });
 
-  loadTab(TEST_URI).then((tab) => {
-    browser = tab.browser;
-    openConsole().then((hudConsole) => {
-      hud = hudConsole;
+  yield loadTab(TEST_URI);
+  hud = yield openConsole();
 
-      HUDService.lastFinishedRequest.callback = function(request) {
-        lastRequest = request;
-        if (requestCallback) {
-          requestCallback();
-        }
-      };
-
-      executeSoon(testPageLoad);
-    });
-  });
-}
+  yield testPageLoad();
+  yield testXhrGet();
+  yield testXhrWarn();
+  yield testXhrPost();
+  yield testFormSubmission();
+  yield testLiveFilteringOnSearchStrings();
+});
 
 function testPageLoad() {
-  requestCallback = function() {
-    // Check if page load was logged correctly.
-    ok(lastRequest, "Page load was logged");
-    is(lastRequest.request.url, TEST_NETWORK_REQUEST_URI,
-      "Logged network entry is page load");
-    is(lastRequest.request.method, "GET", "Method is correct");
-    lastRequest = null;
-    requestCallback = null;
-    executeSoon(testPageLoadBody);
-  };
-
-  content.location = TEST_NETWORK_REQUEST_URI;
-}
-
-function testPageLoadBody() {
-  let loaded = false;
-  let requestCallbackInvoked = false;
 
-  // Turn off logging of request bodies and check again.
-  requestCallback = function() {
-    ok(lastRequest, "Page load was logged again");
-    lastRequest = null;
-    requestCallback = null;
-    requestCallbackInvoked = true;
+  BrowserTestUtils.loadURI(gBrowser.selectedBrowser, TEST_NETWORK_REQUEST_URI);
+  let lastRequest = yield new Promise(resolve => {
+    HUDService.lastFinishedRequest.callback = function(request) {
+      resolve(request);
+    };
+  });
 
-    if (loaded) {
-      executeSoon(testXhrGet);
-    }
-  };
-
-  browser.addEventListener("load", function onLoad() {
-    browser.removeEventListener("load", onLoad, true);
-    loaded = true;
-
-    if (requestCallbackInvoked) {
-      executeSoon(testXhrGet);
-    }
-  }, true);
-
-  content.location.reload();
+  // Check if page load was logged correctly.
+  ok(lastRequest, "Page load was logged");
+  is(lastRequest.request.url, TEST_NETWORK_REQUEST_URI,
+    "Logged network entry is page load");
+  is(lastRequest.request.method, "GET", "Method is correct");
 }
 
 function testXhrGet() {
-  requestCallback = function() {
-    ok(lastRequest, "testXhrGet() was logged");
-    is(lastRequest.request.method, "GET", "Method is correct");
-    lastRequest = null;
-    requestCallback = null;
-    executeSoon(testXhrWarn);
-  };
+  // Start the XMLHttpRequest() GET test.
+  ContentTask.spawn(gBrowser.selectedBrowser, {}, function*() {
+    content.wrappedJSObject.testXhrGet();
+  });
 
-  // Start the XMLHttpRequest() GET test.
-  content.wrappedJSObject.testXhrGet();
+  let lastRequest = yield waitForFinishedRequest();
+
+  ok(lastRequest, "testXhrGet() was logged");
+  is(lastRequest.request.method, "GET", "Method is correct");
+  ok(lastRequest.isXHR, "It's an XHR request");
 }
 
 function testXhrWarn() {
-  requestCallback = function() {
-    ok(lastRequest, "testXhrWarn() was logged");
-    is(lastRequest.request.method, "GET", "Method is correct");
-    lastRequest = null;
-    requestCallback = null;
-    executeSoon(testXhrPost);
-  };
+  // Start the XMLHttpRequest() warn test.
+  ContentTask.spawn(gBrowser.selectedBrowser, {}, function*() {
+    content.wrappedJSObject.testXhrWarn();
+  });
 
-  // Start the XMLHttpRequest() warn test.
-  content.wrappedJSObject.testXhrWarn();
+  let lastRequest = yield waitForFinishedRequest();
+
+  ok(lastRequest, "testXhrWarn() was logged");
+  is(lastRequest.request.method, "GET", "Method is correct");
+  ok(lastRequest.isXHR, "It's an XHR request");
+  is(lastRequest.securityInfo, "insecure", "It's an insecure request");
 }
 
 function testXhrPost() {
-  requestCallback = function() {
-    ok(lastRequest, "testXhrPost() was logged");
-    is(lastRequest.request.method, "POST", "Method is correct");
-    lastRequest = null;
-    requestCallback = null;
-    executeSoon(testFormSubmission);
-  };
+  // Start the XMLHttpRequest() POST test.
+  ContentTask.spawn(gBrowser.selectedBrowser, {}, function*() {
+    content.wrappedJSObject.testXhrPost();
+  });
 
-  // Start the XMLHttpRequest() POST test.
-  content.wrappedJSObject.testXhrPost();
+  let lastRequest = yield waitForFinishedRequest();
+
+  ok(lastRequest, "testXhrPost() was logged");
+  is(lastRequest.request.method, "POST", "Method is correct");
+  ok(lastRequest.isXHR, "It's an XHR request");
 }
 
 function testFormSubmission() {
   // Start the form submission test. As the form is submitted, the page is
   // loaded again. Bind to the load event to catch when this is done.
-  requestCallback = function() {
-    ok(lastRequest, "testFormSubmission() was logged");
-    is(lastRequest.request.method, "POST", "Method is correct");
+  ContentTask.spawn(gBrowser.selectedBrowser, {}, function*() {
+    let form = content.document.querySelector("form");
+    ok(form, "we have the HTML form");
+    form.submit();
+  });
+
+  let lastRequest = yield waitForFinishedRequest();
+
+  ok(lastRequest, "testFormSubmission() was logged");
+  is(lastRequest.request.method, "POST", "Method is correct");
 
-    // There should be 3 network requests pointing to the HTML file.
-    waitForMessages({
-      webconsole: hud,
-      messages: [
-        {
-          text: "test-network-request.html",
-          category: CATEGORY_NETWORK,
-          severity: SEVERITY_LOG,
-          count: 3,
-        },
-        {
-          text: "test-data.json",
-          category: CATEGORY_NETWORK,
-          severity: SEVERITY_INFO,
-          isXhr: true,
-          count: 2,
-        },
-        {
-          text: "http://example.com/",
-          category: CATEGORY_NETWORK,
-          severity: SEVERITY_WARNING,
-          isXhr: true,
-          count: 1,
-        },
-      ],
-    }).then(testLiveFilteringOnSearchStrings);
-  };
-
-  let form = content.document.querySelector("form");
-  ok(form, "we have the HTML form");
-  form.submit();
+  // There should be 3 network requests pointing to the HTML file.
+  waitForMessages({
+    webconsole: hud,
+    messages: [
+      {
+        text: "test-network-request.html",
+        category: CATEGORY_NETWORK,
+        severity: SEVERITY_LOG,
+        count: 3,
+      },
+      {
+        text: "test-data.json",
+        category: CATEGORY_NETWORK,
+        severity: SEVERITY_INFO,
+        isXhr: true,
+        count: 2,
+      },
+      {
+        text: "http://example.com/",
+        category: CATEGORY_NETWORK,
+        severity: SEVERITY_WARNING,
+        isXhr: true,
+        count: 1,
+      },
+    ],
+  });
 }
 
 function testLiveFilteringOnSearchStrings() {
   setStringFilter("http");
   isnot(countMessageNodes(), 0, "the log nodes are not hidden when the " +
     "search string is set to \"http\"");
 
   setStringFilter("HTTP");
@@ -208,22 +177,16 @@ function testLiveFilteringOnSearchString
 
   setStringFilter("'foo'");
   is(countMessageNodes(), 0, "the log nodes are hidden when searching for " +
     "the string 'foo'");
 
   setStringFilter("foo\"bar'baz\"boo'");
   is(countMessageNodes(), 0, "the log nodes are hidden when searching for " +
     "the string \"foo\"bar'baz\"boo'\"");
-
-  HUDService.lastFinishedRequest.callback = null;
-  lastRequest = null;
-  requestCallback = null;
-  hud = browser = null;
-  finishTest();
 }
 
 function countMessageNodes() {
   let messageNodes = hud.outputNode.querySelectorAll(".message");
   let displayedMessageNodes = 0;
   let view = hud.iframeWindow;
   for (let i = 0; i < messageNodes.length; i++) {
     let computedStyle = view.getComputedStyle(messageNodes[i], null);