Bug 1408945 - enable browser_webconsole_optimized_out_vars.js;r=nchevobbe
MozReview-Commit-ID: CNPdSwF6kbc
--- a/devtools/client/webconsole/new-console-output/test/mochitest/browser.ini
+++ b/devtools/client/webconsole/new-console-output/test/mochitest/browser.ini
@@ -363,17 +363,16 @@ skip-if = true # Bug 1408943
[browser_webconsole_nodes_highlight.js]
[browser_webconsole_nodes_select.js]
[browser_webconsole_notifications.js]
skip-if = true # Bug 1405637
[browser_webconsole_object_inspector.js]
[browser_webconsole_object_inspector_entries.js]
[browser_webconsole_observer_notifications.js]
[browser_webconsole_optimized_out_vars.js]
-skip-if = true # Bug 1408945
[browser_webconsole_output_copy.js]
subsuite = clipboard
skip-if = true # Bug 1404364
# old console skip-if = (os == 'linux' && bits == 32 && debug) # bug 1328915, disable linux32 debug devtools for timeouts
[browser_webconsole_output_copy_newlines.js]
subsuite = clipboard
skip-if = true # Bug 1405641
# old console skip-if = (os == 'linux' && bits == 32 && debug) # bug 1328915, disable linux32 debug devtools for timeouts
--- a/devtools/client/webconsole/new-console-output/test/mochitest/browser_webconsole_optimized_out_vars.js
+++ b/devtools/client/webconsole/new-console-output/test/mochitest/browser_webconsole_optimized_out_vars.js
@@ -3,89 +3,56 @@
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */
// Check that inspecting an optimized out variable works when execution is
// paused.
"use strict";
-// Force the old debugger UI since it's directly used (see Bug 1301705)
-Services.prefs.setBoolPref("devtools.debugger.new-debugger-frontend", false);
-registerCleanupFunction(function* () {
- Services.prefs.clearUserPref("devtools.debugger.new-debugger-frontend");
+const TEST_URI = "http://example.com/browser/devtools/client/webconsole/" +
+ "new-console-output/test/mochitest/test-closure-optimized-out.html";
+
+add_task(async function () {
+ // Force the old debugger UI since it's directly used (see Bug 1301705)
+ await pushPref("devtools.debugger.new-debugger-frontend", false);
+
+ let hud = await openNewTabAndConsole(TEST_URI);
+ let { toolbox, panel: debuggerPanel } = await openDebugger();
+
+ let sources = debuggerPanel.panelWin.DebuggerView.Sources;
+ await debuggerPanel.addBreakpoint({ actor: sources.values[0], line: 18 });
+ await ensureThreadClientState(debuggerPanel, "resumed");
+
+ let { FETCHED_SCOPES } = debuggerPanel.panelWin.EVENTS;
+ let fetchedScopes = debuggerPanel.panelWin.once(FETCHED_SCOPES);
+
+ // Cause the debuggee to pause
+ ContentTask.spawn(gBrowser.selectedBrowser, {}, function* () {
+ let button = content.document.querySelector("button");
+ button.click();
+ });
+
+ await fetchedScopes;
+ ok(true, "Scopes were fetched");
+
+ await toolbox.selectTool("webconsole");
+
+ // This is the meat of the test: evaluate the optimized out variable.
+ let onMessage = waitForMessage(hud, "optimized out");
+ hud.jsterm.execute("upvar");
+
+ info("Waiting for optimized out message");
+ await onMessage;
+
+ ok(true, "Optimized out message logged");
});
-function test() {
- Task.spawn(function* () {
- const TEST_URI = "http://example.com/browser/devtools/client/webconsole/" +
- "test/test-closure-optimized-out.html";
- let {tab} = yield loadTab(TEST_URI);
- let hud = yield openConsole(tab);
- let { toolbox, panel, panelWin } = yield openDebugger();
-
- let sources = panelWin.DebuggerView.Sources;
- yield panel.addBreakpoint({ actor: sources.values[0], line: 18 });
- yield ensureThreadClientState(panel, "resumed");
-
- let fetchedScopes = panelWin.once(panelWin.EVENTS.FETCHED_SCOPES);
-
- // Cause the debuggee to pause
- ContentTask.spawn(gBrowser.selectedBrowser, {}, function* () {
- let button = content.document.querySelector("button");
- button.click();
- });
-
- yield fetchedScopes;
- ok(true, "Scopes were fetched");
-
- yield toolbox.selectTool("webconsole");
-
- // This is the meat of the test: evaluate the optimized out variable.
- hud.jsterm.execute("upvar");
- yield waitForMessages({
- webconsole: hud,
- messages: [{
- text: "optimized out",
- category: CATEGORY_OUTPUT,
- }]
- });
+// Debugger helper functions adapted from devtools/client/debugger/test/head.js.
- finishTest();
- }).catch(aError => {
- ok(false, "Got an error: " + aError.message + "\n" + aError.stack);
- });
-}
-
-// Debugger helper functions stolen from devtools/client/debugger/test/head.js.
-
-function ensureThreadClientState(aPanel, aState) {
- let thread = aPanel.panelWin.gThreadClient;
- let state = thread.state;
-
- info("Thread is: '" + state + "'.");
-
- if (state == aState) {
- return promise.resolve(null);
+async function ensureThreadClientState(debuggerPanel, state) {
+ let thread = debuggerPanel.panelWin.gThreadClient;
+ info(`Thread is: '${thread.state}'.`);
+ if (thread.state != state) {
+ info("Waiting for thread event: '${state}'.");
+ await thread.addOneTimeListener(state);
}
- return waitForThreadEvents(aPanel, aState);
}
-
-function waitForThreadEvents(aPanel, aEventName, aEventRepeat = 1) {
- info("Waiting for thread event: '" + aEventName + "' to fire: " +
- aEventRepeat + " time(s).");
-
- let deferred = defer();
- let thread = aPanel.panelWin.gThreadClient;
- let count = 0;
-
- thread.addListener(aEventName, function onEvent(eventName, ...args) {
- info("Thread event '" + eventName + "' fired: " + (++count) + " time(s).");
-
- if (count == aEventRepeat) {
- ok(true, "Enough '" + eventName + "' thread events have been fired.");
- thread.removeListener(eventName, onEvent);
- deferred.resolve.apply(deferred, args);
- }
- });
-
- return deferred.promise;
-}