Bug 970914 - Avoid confusion where if there's already a console client (attachConsole), we get the same WebConsoleClient instance and startListeners is not called. r=past

This commit is contained in:
Mihai Sucan 2014-02-25 18:47:51 +02:00
parent cf5825a321
commit 3373520960
3 changed files with 44 additions and 7 deletions

View File

@ -268,5 +268,6 @@ run-if = os == "mac"
[browser_webconsole_output_04.js]
[browser_webconsole_output_events.js]
[browser_console_variables_view_highlighter.js]
[browser_webconsole_start_netmon_first.js]
[browser_webconsole_console_trace_duplicates.js]
[browser_webconsole_cd_iframe.js]

View File

@ -0,0 +1,37 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
// Check that the webconsole works if the network monitor is first opened, then
// the user switches to the webconsole. See bug 970914.
function test() {
Task.spawn(runner).then(finishTest);
function* runner() {
const {tab} = yield loadTab("data:text/html;charset=utf8,<p>hello");
const target = TargetFactory.forTab(tab);
const toolbox = yield gDevTools.showToolbox(target, "netmonitor");
const hud = yield openConsole(tab);
hud.jsterm.execute("console.log('foobar bug970914')");
yield waitForMessages({
webconsole: hud,
messages: [{
name: "console.log",
text: "foobar bug970914",
category: CATEGORY_WEBDEV,
severity: SEVERITY_LOG,
}],
});
let text = hud.outputNode.textContent;
isnot(text.indexOf("foobar bug970914"), -1, "console.log message confirmed");
ok(!/logging API|disabled by a script/i.test(text),
"no warning about disabled console API");
}
}

View File

@ -479,11 +479,6 @@ DebuggerClient.prototype = {
*/
attachConsole:
function (aConsoleActor, aListeners, aOnResponse) {
if (this._consoleClients.has(aConsoleActor)) {
setTimeout(() => aOnResponse({}, this._consoleClients.get(aConsoleActor)), 0);
return;
}
let packet = {
to: aConsoleActor,
type: "startListeners",
@ -493,8 +488,12 @@ DebuggerClient.prototype = {
this.request(packet, (aResponse) => {
let consoleClient;
if (!aResponse.error) {
consoleClient = new WebConsoleClient(this, aConsoleActor);
this._consoleClients.set(aConsoleActor, consoleClient);
if (this._consoleClients.has(aConsoleActor)) {
consoleClient = this._consoleClients.get(aConsoleActor);
} else {
consoleClient = new WebConsoleClient(this, aConsoleActor);
this._consoleClients.set(aConsoleActor, consoleClient);
}
}
aOnResponse(aResponse, consoleClient);
});