1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/browser/devtools/webconsole/test/browser_webconsole_scratchpad_panel_link.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,73 @@ 1.4 +/* vim: set ts=2 et sw=2 tw=80: */ 1.5 +/* Any copyright is dedicated to the Public Domain. 1.6 + http://creativecommons.org/publicdomain/zero/1.0/ */ 1.7 + 1.8 +const TEST_URI = "data:text/html;charset=utf8,<p>test Scratchpad panel linking</p>"; 1.9 + 1.10 +let { Task } = Cu.import("resource://gre/modules/Task.jsm", {}); 1.11 +let { Tools } = require("main"); 1.12 +let { isTargetSupported } = Tools.scratchpad; 1.13 + 1.14 +Tools.scratchpad.isTargetSupported = () => true; 1.15 + 1.16 + 1.17 +function test() 1.18 +{ 1.19 + waitForExplicitFinish(); 1.20 + 1.21 + addTab(TEST_URI); 1.22 + gBrowser.selectedBrowser.addEventListener("load", function onTabLoad() { 1.23 + gBrowser.selectedBrowser.removeEventListener("load", onTabLoad, true); 1.24 + info("Opening toolbox with Scratchpad panel"); 1.25 + 1.26 + let target = TargetFactory.forTab(gBrowser.selectedTab); 1.27 + gDevTools.showToolbox(target, "scratchpad", "window").then(runTests); 1.28 + }, true); 1.29 +} 1.30 + 1.31 +function runTests(aToolbox) 1.32 +{ 1.33 + Task.spawn(function*() { 1.34 + let scratchpadPanel = aToolbox.getPanel("scratchpad"); 1.35 + let { scratchpad } = scratchpadPanel; 1.36 + is(aToolbox.getCurrentPanel(), scratchpadPanel, 1.37 + "Scratchpad is currently selected panel"); 1.38 + 1.39 + info("Switching to webconsole panel"); 1.40 + 1.41 + let webconsolePanel = yield aToolbox.selectTool("webconsole"); 1.42 + let { hud } = webconsolePanel; 1.43 + is(aToolbox.getCurrentPanel(), webconsolePanel, 1.44 + "Webconsole is currently selected panel"); 1.45 + 1.46 + info("console.log()ing from Scratchpad"); 1.47 + 1.48 + scratchpad.setText("console.log('foobar-from-scratchpad')"); 1.49 + scratchpad.run(); 1.50 + let messages = yield waitForMessages({ 1.51 + webconsole: hud, 1.52 + messages: [{ text: "foobar-from-scratchpad" }] 1.53 + }); 1.54 + 1.55 + info("Clicking link to switch to and focus Scratchpad"); 1.56 + 1.57 + let [matched] = [...messages[0].matched]; 1.58 + ok(matched, "Found logged message from Scratchpad"); 1.59 + let anchor = matched.querySelector("a.message-location"); 1.60 + 1.61 + aToolbox.on("scratchpad-selected", function selected() { 1.62 + aToolbox.off("scratchpad-selected", selected); 1.63 + 1.64 + is(aToolbox.getCurrentPanel(), scratchpadPanel, 1.65 + "Clicking link switches to Scratchpad panel"); 1.66 + 1.67 + is(Services.ww.activeWindow, aToolbox.frame.ownerGlobal, 1.68 + "Scratchpad's toolbox is focused"); 1.69 + 1.70 + Tools.scratchpad.isTargetSupported = isTargetSupported; 1.71 + finish(); 1.72 + }); 1.73 + 1.74 + EventUtils.synthesizeMouse(anchor, 2, 2, {}, hud.iframeWindow); 1.75 + }); 1.76 +}