michael@0: /* vim:set ts=2 sw=2 sts=2 et: */ michael@0: /* ***** BEGIN LICENSE BLOCK ***** michael@0: * Any copyright is dedicated to the Public Domain. michael@0: * http://creativecommons.org/publicdomain/zero/1.0/ michael@0: * michael@0: * Contributor(s): michael@0: * Mihai Șucan michael@0: * michael@0: * ***** END LICENSE BLOCK ***** */ michael@0: michael@0: const TEST_URI = "http://example.com/browser/browser/devtools/webconsole/test/test-console.html"; michael@0: let HUD; michael@0: michael@0: let outputItem; michael@0: michael@0: function consoleOpened(aHud) { michael@0: HUD = aHud; michael@0: michael@0: outputNode = HUD.outputNode; michael@0: michael@0: browser.addEventListener("load", tabLoad2, true); michael@0: michael@0: // Reload so we get some output in the console. michael@0: browser.contentWindow.location.reload(); michael@0: } michael@0: michael@0: function tabLoad2(aEvent) { michael@0: browser.removeEventListener(aEvent.type, tabLoad2, true); michael@0: michael@0: waitForMessages({ michael@0: webconsole: HUD, michael@0: messages: [{ michael@0: text: "test-console.html", michael@0: category: CATEGORY_NETWORK, michael@0: severity: SEVERITY_LOG, michael@0: }], michael@0: }).then(([result]) => { michael@0: let msg = [...result.matched][0]; michael@0: outputItem = msg.querySelector(".message-body .url"); michael@0: ok(outputItem, "found a network message"); michael@0: document.addEventListener("popupshown", networkPanelShown, false); michael@0: michael@0: // Send the mousedown and click events such that the network panel opens. michael@0: EventUtils.sendMouseEvent({type: "mousedown"}, outputItem); michael@0: EventUtils.sendMouseEvent({type: "click"}, outputItem); michael@0: }); michael@0: } michael@0: michael@0: function networkPanelShown(aEvent) { michael@0: document.removeEventListener(aEvent.type, networkPanelShown, false); michael@0: michael@0: info("networkPanelShown"); michael@0: michael@0: document.addEventListener("popupshown", networkPanelShowFailure, false); michael@0: michael@0: // The network panel should not open for the second time. michael@0: EventUtils.sendMouseEvent({type: "mousedown"}, outputItem); michael@0: EventUtils.sendMouseEvent({type: "click"}, outputItem); michael@0: michael@0: executeSoon(function() { michael@0: aEvent.target.addEventListener("popuphidden", networkPanelHidden, false); michael@0: aEvent.target.hidePopup(); michael@0: }); michael@0: } michael@0: michael@0: function networkPanelShowFailure(aEvent) { michael@0: document.removeEventListener(aEvent.type, networkPanelShowFailure, false); michael@0: michael@0: ok(false, "the network panel should not show"); michael@0: } michael@0: michael@0: function networkPanelHidden(aEvent) { michael@0: this.removeEventListener(aEvent.type, networkPanelHidden, false); michael@0: michael@0: info("networkPanelHidden"); michael@0: michael@0: // The network panel should not show because this is a mouse event that starts michael@0: // in a position and ends in another. michael@0: EventUtils.sendMouseEvent({type: "mousedown", clientX: 3, clientY: 4}, michael@0: outputItem); michael@0: EventUtils.sendMouseEvent({type: "click", clientX: 5, clientY: 6}, michael@0: outputItem); michael@0: michael@0: // The network panel should not show because this is a middle-click. michael@0: EventUtils.sendMouseEvent({type: "mousedown", button: 1}, michael@0: outputItem); michael@0: EventUtils.sendMouseEvent({type: "click", button: 1}, michael@0: outputItem); michael@0: michael@0: // The network panel should not show because this is a right-click. michael@0: EventUtils.sendMouseEvent({type: "mousedown", button: 2}, michael@0: outputItem); michael@0: EventUtils.sendMouseEvent({type: "click", button: 2}, michael@0: outputItem); michael@0: michael@0: executeSoon(function() { michael@0: document.removeEventListener("popupshown", networkPanelShowFailure, false); michael@0: michael@0: // Done with the network output. Now test the jsterm output and the property michael@0: // panel. michael@0: HUD.jsterm.execute("document", (msg) => { michael@0: info("jsterm execute 'document' callback"); michael@0: michael@0: HUD.jsterm.once("variablesview-open", onVariablesViewOpen); michael@0: let outputItem = msg.querySelector(".message-body a"); michael@0: ok(outputItem, "jsterm output message found"); michael@0: michael@0: // Send the mousedown and click events such that the property panel opens. michael@0: EventUtils.sendMouseEvent({type: "mousedown"}, outputItem); michael@0: EventUtils.sendMouseEvent({type: "click"}, outputItem); michael@0: }); michael@0: }); michael@0: } michael@0: michael@0: function onVariablesViewOpen() { michael@0: info("onVariablesViewOpen"); michael@0: michael@0: executeSoon(function() { michael@0: HUD = outputItem = null; michael@0: executeSoon(finishTest); michael@0: }); michael@0: } 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: