From 782fef284e14001da09e32698a75daf402c9ab99 Mon Sep 17 00:00:00 2001 From: Brian Grinstead Date: Wed, 6 Aug 2014 06:16:00 -0400 Subject: [PATCH] Bug 1030318 - Enable devtools/framework tests with e10s. r=mratcliffe --HG-- extra : rebase_source : 2e8ea32540aa53661cb6985bbb55f9dfb4e2a30c --- browser/devtools/framework/test/browser.ini | 2 +- .../framework/test/browser_keybindings.js | 2 +- .../framework/test/browser_target_events.js | 3 +- .../browser_toolbox_options_disable_cache.js | 15 +++++--- .../browser_toolbox_options_disable_js.js | 37 ++++++------------- browser/devtools/framework/test/head.js | 10 +++++ browser/devtools/framework/toolbox.js | 12 ++---- browser/devtools/shared/frame-script-utils.js | 9 +++++ 8 files changed, 48 insertions(+), 42 deletions(-) diff --git a/browser/devtools/framework/test/browser.ini b/browser/devtools/framework/test/browser.ini index e80da785880..49ecb4c875b 100644 --- a/browser/devtools/framework/test/browser.ini +++ b/browser/devtools/framework/test/browser.ini @@ -9,7 +9,6 @@ support-files = [browser_devtools_api.js] [browser_dynamic_tool_enabling.js] [browser_keybindings.js] -skip-if = e10s # Bug 1030318 [browser_new_activation_workflow.js] [browser_target_events.js] [browser_target_remote.js] @@ -19,6 +18,7 @@ skip-if = e10s # Bug 1030318 [browser_toolbox_options.js] [browser_toolbox_options_disable_buttons.js] [browser_toolbox_options_disable_cache.js] +skip-if = e10s # Bug 1030318 [browser_toolbox_options_disable_js.js] # [browser_toolbox_raise.js] # Bug 962258 # skip-if = os == "win" diff --git a/browser/devtools/framework/test/browser_keybindings.js b/browser/devtools/framework/test/browser_keybindings.js index 7cecfac84e6..42e7b75eb6f 100644 --- a/browser/devtools/framework/test/browser_keybindings.js +++ b/browser/devtools/framework/test/browser_keybindings.js @@ -18,7 +18,7 @@ function test() gBrowser.selectedBrowser.removeEventListener("load", onload, true); doc = content.document; node = doc.querySelector("h1"); - waitForFocus(setupKeyBindingsTest, content); + waitForFocus(setupKeyBindingsTest); }, true); content.location = "data:text/html,Test for the " + diff --git a/browser/devtools/framework/test/browser_target_events.js b/browser/devtools/framework/test/browser_target_events.js index a9e386f4be9..9b95f011a5c 100644 --- a/browser/devtools/framework/test/browser_target_events.js +++ b/browser/devtools/framework/test/browser_target_events.js @@ -32,7 +32,8 @@ function onHidden() { function onVisible() { ok(true, "Visible event received"); target.once("will-navigate", onWillNavigate); - gBrowser.contentWindow.location = "data:text/html,test navigation"; + let mm = getFrameScript(); + mm.sendAsyncMessage("devtools:test:navigate", { location: "data:text/html,<meta charset='utf8'/>test navigation" }); } function onWillNavigate(event, request) { diff --git a/browser/devtools/framework/test/browser_toolbox_options_disable_cache.js b/browser/devtools/framework/test/browser_toolbox_options_disable_cache.js index 3974f3c5514..64dfbca22fd 100644 --- a/browser/devtools/framework/test/browser_toolbox_options_disable_cache.js +++ b/browser/devtools/framework/test/browser_toolbox_options_disable_cache.js @@ -131,7 +131,8 @@ function reloadTab(tabX) { }, true); info("Reloading tab " + tabX.title); - content.document.location.reload(false); + let mm = getFrameScript(); + mm.sendAsyncMessage("devtools:test:reload"); return def.promise; } @@ -139,15 +140,17 @@ function reloadTab(tabX) { function* destroyTab(tabX) { let toolbox = gDevTools.getToolbox(tabX.target); + let onceDestroyed = promise.resolve(); + if (toolbox) { + onceDestroyed = gDevTools.once("toolbox-destroyed"); + } + info("Removing tab " + tabX.title); gBrowser.removeTab(tabX.tab); info("Removed tab " + tabX.title); - if (toolbox) { - info("Waiting for toolbox-destroyed"); - yield gDevTools.once("toolbox-destroyed"); - info("toolbox-destroyed event received for " + tabX.title); - } + info("Waiting for toolbox-destroyed"); + yield onceDestroyed; } function* finishUp() { diff --git a/browser/devtools/framework/test/browser_toolbox_options_disable_js.js b/browser/devtools/framework/test/browser_toolbox_options_disable_js.js index 7da4827f53e..8d184f492e3 100644 --- a/browser/devtools/framework/test/browser_toolbox_options_disable_js.js +++ b/browser/devtools/framework/test/browser_toolbox_options_disable_js.js @@ -32,13 +32,11 @@ function testJSEnabled(event, tool, secondPass) { ok(true, "Toolbox selected via selectTool method"); info("Testing that JS is enabled"); - let logJSEnabled = doc.getElementById("logJSEnabled"); - let output = doc.getElementById("output"); - // We use executeSoon here because switching docSehll.allowJavascript to true // takes a while to become live. executeSoon(function() { - EventUtils.synthesizeMouseAtCenter(logJSEnabled, {}, doc.defaultView); + let output = doc.getElementById("output"); + doc.querySelector("#logJSEnabled").click(); is(output.textContent, "JavaScript Enabled", 'Output is "JavaScript Enabled"'); testJSEnabledIframe(secondPass); }); @@ -49,12 +47,10 @@ function testJSEnabledIframe(secondPass) { let iframe = doc.querySelector("iframe"); let iframeDoc = iframe.contentDocument; - let logJSEnabled = iframeDoc.getElementById("logJSEnabled"); let output = iframeDoc.getElementById("output"); - - EventUtils.synthesizeMouseAtCenter(logJSEnabled, {}, iframe.contentWindow); + iframeDoc.querySelector("#logJSEnabled").click(); is(output.textContent, "JavaScript Enabled", - 'Output is "JavaScript Enabled" in iframe'); + 'Output is "JavaScript Enabled" in iframe'); if (secondPass) { finishUp(); } else { @@ -75,18 +71,13 @@ function toggleJS() { info("Checking checkbox to disable JS"); } - // After uising scrollIntoView() we need to use executeSoon() to wait for the - // browser to scroll. - executeSoon(function() { - gBrowser.selectedBrowser.addEventListener("load", function onLoad(evt) { - gBrowser.selectedBrowser.removeEventListener(evt.type, onLoad, true); - doc = content.document; + gBrowser.selectedBrowser.addEventListener("load", function onLoad(evt) { + gBrowser.selectedBrowser.removeEventListener(evt.type, onLoad, true); + doc = content.document; + deferred.resolve(); + }, true); - deferred.resolve(); - }, true); - - EventUtils.synthesizeMouseAtCenter(cbx, {}, panel.panelWin); - }); + cbx.click(); return deferred.promise; } @@ -94,13 +85,11 @@ function toggleJS() { function testJSDisabled() { info("Testing that JS is disabled"); - let logJSDisabled = doc.getElementById("logJSDisabled"); let output = doc.getElementById("output"); + doc.querySelector("#logJSDisabled").click(); - EventUtils.synthesizeMouseAtCenter(logJSDisabled, {}, doc.defaultView); ok(output.textContent !== "JavaScript Disabled", 'output is not "JavaScript Disabled"'); - testJSDisabledIframe(); } @@ -109,10 +98,8 @@ function testJSDisabledIframe() { let iframe = doc.querySelector("iframe"); let iframeDoc = iframe.contentDocument; - let logJSDisabled = iframeDoc.getElementById("logJSDisabled"); let output = iframeDoc.getElementById("output"); - - EventUtils.synthesizeMouseAtCenter(logJSDisabled, {}, iframe.contentWindow); + iframeDoc.querySelector("#logJSDisabled").click(); ok(output.textContent !== "JavaScript Disabled", 'output is not "JavaScript Disabled" in iframe'); toggleJS().then(function() { diff --git a/browser/devtools/framework/test/head.js b/browser/devtools/framework/test/head.js index 61742bdaa3e..5ea06e4a9d3 100644 --- a/browser/devtools/framework/test/head.js +++ b/browser/devtools/framework/test/head.js @@ -16,6 +16,16 @@ waitForExplicitFinish(); // Uncomment this pref to dump all devtools emitted events to the console. // Services.prefs.setBoolPref("devtools.dump.emit", true); +function getFrameScript() { + let mm = gBrowser.selectedBrowser.messageManager; + let frameURL = "chrome://browser/content/devtools/frame-script-utils.js"; + mm.loadFrameScript(frameURL, false); + SimpleTest.registerCleanupFunction(() => { + mm = null; + }); + return mm; +} + gDevTools.testing = true; SimpleTest.registerCleanupFunction(() => { gDevTools.testing = false; diff --git a/browser/devtools/framework/toolbox.js b/browser/devtools/framework/toolbox.js index 5d10538e810..9c9090bb8be 100644 --- a/browser/devtools/framework/toolbox.js +++ b/browser/devtools/framework/toolbox.js @@ -1356,16 +1356,12 @@ Toolbox.prototype = { } // Destroying the walker and inspector fronts - outstanding.push(this.destroyInspector()); - // Removing buttons - outstanding.push(() => { + outstanding.push(this.destroyInspector().then(() => { + // Removing buttons this._pickerButton.removeEventListener("command", this._togglePicker, false); this._pickerButton = null; - let container = this.doc.getElementById("toolbox-buttons"); - while (container.firstChild) { - container.removeChild(container.firstChild); - } - }); + })); + // Remove the host UI outstanding.push(this.destroyHost()); diff --git a/browser/devtools/shared/frame-script-utils.js b/browser/devtools/shared/frame-script-utils.js index b5858532293..51068b8ebfd 100644 --- a/browser/devtools/shared/frame-script-utils.js +++ b/browser/devtools/shared/frame-script-utils.js @@ -7,3 +7,12 @@ addMessageListener("devtools:test:history", function ({ data }) { content.history[data.direction](); }); + +addMessageListener("devtools:test:navigate", function ({ data }) { + content.location = data.location; +}); + +addMessageListener("devtools:test:reload", function ({ data }) { + data = data || {}; + content.location.reload(data.forceget); +});