Bug 1261714 - Fix dead CPOW intermittent on browser_toolbox_options_disable_js.js . r=jryans draft
authorNicolas Chevobbe <chevobbe.nicolas@gmail.com>
Tue, 05 Jul 2016 23:24:21 +0200
changeset 384595 143097d1971b0cc508abf3d5a015a245c2dff6a1
parent 384502 4eedf5c4e7e25be86832759f4a834608fb88ac6c
child 524746 df5078d4de8b6eef873e2a5689d3eb5a12e79f10
push id22318
push userchevobbe.nicolas@gmail.com
push dateWed, 06 Jul 2016 18:13:22 +0000
reviewersjryans
bugs1261714
milestone50.0a1
Bug 1261714 - Fix dead CPOW intermittent on browser_toolbox_options_disable_js.js . r=jryans MozReview-Commit-ID: G2De93K0Tgv
devtools/client/framework/test/browser_toolbox_options_disable_js.js
--- a/devtools/client/framework/test/browser_toolbox_options_disable_js.js
+++ b/devtools/client/framework/test/browser_toolbox_options_disable_js.js
@@ -2,108 +2,123 @@
 /* vim: set ft=javascript ts=2 et sw=2 tw=80: */
 /* Any copyright is dedicated to the Public Domain.
  * http://creativecommons.org/publicdomain/zero/1.0/ */
 
 // Tests that disabling JavaScript for a tab works as it should.
 
 const TEST_URI = URL_ROOT + "browser_toolbox_options_disable_js.html";
 
-var doc;
-var toolbox;
-
 function test() {
   gBrowser.selectedTab = gBrowser.addTab();
   let target = TargetFactory.forTab(gBrowser.selectedTab);
 
   gBrowser.selectedBrowser.addEventListener("load", function onLoad(evt) {
     gBrowser.selectedBrowser.removeEventListener(evt.type, onLoad, true);
-    doc = content.document;
     gDevTools.showToolbox(target).then(testSelectTool);
   }, true);
 
-  content.location = TEST_URI;
+  BrowserTestUtils.loadURI(gBrowser.selectedBrowser, TEST_URI);
 }
 
-function testSelectTool(aToolbox) {
-  toolbox = aToolbox;
-  toolbox.once("options-selected", testJSEnabled);
+function testSelectTool(toolbox) {
+  toolbox.once("options-selected", () => testToggleJS(toolbox));
   toolbox.selectTool("options");
 }
 
-function testJSEnabled(event, tool, secondPass) {
+let testToggleJS = Task.async(function* (toolbox) {
   ok(true, "Toolbox selected via selectTool method");
+
+  yield testJSEnabled();
+  yield testJSEnabledIframe();
+
+  // Disable JS.
+  yield toggleJS(toolbox);
+
+  yield testJSDisabled();
+  yield testJSDisabledIframe();
+
+  // Re-enable JS.
+  yield toggleJS(toolbox);
+
+  yield testJSEnabled();
+  yield testJSEnabledIframe();
+
+  finishUp(toolbox);
+});
+
+function* testJSEnabled() {
   info("Testing that JS is enabled");
 
-  // We use executeSoon here because switching docSehll.allowJavascript to true
+  // We use waitForTick here because switching docShell.allowJavascript to true
   // takes a while to become live.
-  executeSoon(function () {
+  yield waitForTick();
+
+  yield ContentTask.spawn(gBrowser.selectedBrowser, {}, function () {
+    let doc = content.document;
     let output = doc.getElementById("output");
     doc.querySelector("#logJSEnabled").click();
     is(output.textContent, "JavaScript Enabled", 'Output is "JavaScript Enabled"');
-    testJSEnabledIframe(secondPass);
   });
 }
 
-function testJSEnabledIframe(secondPass) {
+function* testJSEnabledIframe() {
   info("Testing that JS is enabled in the iframe");
 
-  let iframe = doc.querySelector("iframe");
-  let iframeDoc = iframe.contentDocument;
-  let output = iframeDoc.getElementById("output");
-  iframeDoc.querySelector("#logJSEnabled").click();
-  is(output.textContent, "JavaScript Enabled",
-                          'Output is "JavaScript Enabled" in iframe');
-  if (secondPass) {
-    finishUp();
-  } else {
-    toggleJS().then(testJSDisabled);
-  }
+  yield ContentTask.spawn(gBrowser.selectedBrowser, {}, function () {
+    let doc = content.document;
+    let iframe = doc.querySelector("iframe");
+    let iframeDoc = iframe.contentDocument;
+    let output = iframeDoc.getElementById("output");
+    iframeDoc.querySelector("#logJSEnabled").click();
+    is(output.textContent, "JavaScript Enabled",
+                            'Output is "JavaScript Enabled" in iframe');
+  });
 }
 
-let toggleJS = Task.async(function* () {
+function* toggleJS(toolbox) {
   let panel = toolbox.getCurrentPanel();
   let cbx = panel.panelDoc.getElementById("devtools-disable-javascript");
 
   if (cbx.checked) {
     info("Clearing checkbox to re-enable JS");
   } else {
     info("Checking checkbox to disable JS");
   }
 
   let browserLoaded = BrowserTestUtils.browserLoaded(gBrowser.selectedBrowser);
   cbx.click();
   yield browserLoaded;
-  doc = content.document;
-});
+}
 
-function testJSDisabled() {
+function* testJSDisabled() {
   info("Testing that JS is disabled");
 
-  let output = doc.getElementById("output");
-  doc.querySelector("#logJSDisabled").click();
-
-  ok(output.textContent !== "JavaScript Disabled",
-     'output is not "JavaScript Disabled"');
-  testJSDisabledIframe();
-}
+  yield ContentTask.spawn(gBrowser.selectedBrowser, {}, function () {
+    let doc = content.document;
+    let output = doc.getElementById("output");
+    doc.querySelector("#logJSDisabled").click();
 
-function testJSDisabledIframe() {
-  info("Testing that JS is disabled in the iframe");
-
-  let iframe = doc.querySelector("iframe");
-  let iframeDoc = iframe.contentDocument;
-  let output = iframeDoc.getElementById("output");
-  iframeDoc.querySelector("#logJSDisabled").click();
-  ok(output.textContent !== "JavaScript Disabled",
-     'output is not "JavaScript Disabled" in iframe');
-  toggleJS().then(function () {
-    testJSEnabled(null, null, true);
+    ok(output.textContent !== "JavaScript Disabled",
+       'output is not "JavaScript Disabled"');
   });
 }
 
-function finishUp() {
+function* testJSDisabledIframe() {
+  info("Testing that JS is disabled in the iframe");
+
+  yield ContentTask.spawn(gBrowser.selectedBrowser, {}, function () {
+    let doc = content.document;
+    let iframe = doc.querySelector("iframe");
+    let iframeDoc = iframe.contentDocument;
+    let output = iframeDoc.getElementById("output");
+    iframeDoc.querySelector("#logJSDisabled").click();
+    ok(output.textContent !== "JavaScript Disabled",
+       'output is not "JavaScript Disabled" in iframe');
+  });
+}
+
+function finishUp(toolbox) {
   toolbox.destroy().then(function () {
     gBrowser.removeCurrentTab();
-    toolbox = doc = null;
     finish();
   });
 }