michael@0: /* michael@0: * Any copyright is dedicated to the Public Domain. michael@0: * http://creativecommons.org/publicdomain/zero/1.0/ michael@0: */ michael@0: michael@0: // Test that makes sure messages are not considered repeated when console.log() michael@0: // is invoked with different objects, see bug 865288. michael@0: michael@0: const TEST_URI = "http://example.com/browser/browser/devtools/webconsole/test/test-repeated-messages.html"; michael@0: michael@0: let hud = null; michael@0: michael@0: function test() { michael@0: addTab(TEST_URI); michael@0: browser.addEventListener("load", function onLoad() { michael@0: browser.removeEventListener("load", onLoad, true); michael@0: openConsole(null, consoleOpened); michael@0: }, true); michael@0: } michael@0: michael@0: function consoleOpened(aHud) { michael@0: hud = aHud; michael@0: michael@0: // Check that css warnings are not coalesced if they come from different lines. michael@0: info("waiting for 3 console.log objects"); michael@0: michael@0: hud.jsterm.clearOutput(true); michael@0: content.wrappedJSObject.testConsoleObjects(); michael@0: michael@0: waitForMessages({ michael@0: webconsole: hud, michael@0: messages: [{ michael@0: name: "3 console.log messages", michael@0: text: "abba", michael@0: category: CATEGORY_WEBDEV, michael@0: severity: SEVERITY_LOG, michael@0: count: 3, michael@0: repeats: 1, michael@0: objects: true, michael@0: }], michael@0: }).then(checkMessages); michael@0: } michael@0: michael@0: function checkMessages([result]) michael@0: { michael@0: let msgs = [...result.matched]; michael@0: is(msgs.length, 3, "3 message elements"); michael@0: let m = -1; michael@0: michael@0: function nextMessage() michael@0: { michael@0: let msg = msgs[++m]; michael@0: if (msg) { michael@0: ok(msg, "message element #" + m); michael@0: michael@0: let clickable = msg.querySelector(".message-body a"); michael@0: ok(clickable, "clickable object #" + m); michael@0: michael@0: msg.scrollIntoView(false); michael@0: clickObject(clickable); michael@0: } michael@0: else { michael@0: finishTest(); michael@0: } michael@0: } michael@0: michael@0: nextMessage(); michael@0: michael@0: function clickObject(aObject) michael@0: { michael@0: hud.jsterm.once("variablesview-fetched", onObjectFetch); michael@0: EventUtils.synthesizeMouse(aObject, 2, 2, {}, hud.iframeWindow); michael@0: } michael@0: michael@0: function onObjectFetch(aEvent, aVar) michael@0: { michael@0: findVariableViewProperties(aVar, [ michael@0: { name: "id", value: "abba" + m }, michael@0: ], { webconsole: hud }).then(nextMessage); michael@0: } michael@0: }