|
1 /* vim: set ts=2 et sw=2 tw=80: */ |
|
2 /* Any copyright is dedicated to the Public Domain. |
|
3 http://creativecommons.org/publicdomain/zero/1.0/ */ |
|
4 |
|
5 const TEST_URI = "data:text/html;charset=utf8,<p>test Scratchpad panel linking</p>"; |
|
6 |
|
7 let { Task } = Cu.import("resource://gre/modules/Task.jsm", {}); |
|
8 let { Tools } = require("main"); |
|
9 let { isTargetSupported } = Tools.scratchpad; |
|
10 |
|
11 Tools.scratchpad.isTargetSupported = () => true; |
|
12 |
|
13 |
|
14 function test() |
|
15 { |
|
16 waitForExplicitFinish(); |
|
17 |
|
18 addTab(TEST_URI); |
|
19 gBrowser.selectedBrowser.addEventListener("load", function onTabLoad() { |
|
20 gBrowser.selectedBrowser.removeEventListener("load", onTabLoad, true); |
|
21 info("Opening toolbox with Scratchpad panel"); |
|
22 |
|
23 let target = TargetFactory.forTab(gBrowser.selectedTab); |
|
24 gDevTools.showToolbox(target, "scratchpad", "window").then(runTests); |
|
25 }, true); |
|
26 } |
|
27 |
|
28 function runTests(aToolbox) |
|
29 { |
|
30 Task.spawn(function*() { |
|
31 let scratchpadPanel = aToolbox.getPanel("scratchpad"); |
|
32 let { scratchpad } = scratchpadPanel; |
|
33 is(aToolbox.getCurrentPanel(), scratchpadPanel, |
|
34 "Scratchpad is currently selected panel"); |
|
35 |
|
36 info("Switching to webconsole panel"); |
|
37 |
|
38 let webconsolePanel = yield aToolbox.selectTool("webconsole"); |
|
39 let { hud } = webconsolePanel; |
|
40 is(aToolbox.getCurrentPanel(), webconsolePanel, |
|
41 "Webconsole is currently selected panel"); |
|
42 |
|
43 info("console.log()ing from Scratchpad"); |
|
44 |
|
45 scratchpad.setText("console.log('foobar-from-scratchpad')"); |
|
46 scratchpad.run(); |
|
47 let messages = yield waitForMessages({ |
|
48 webconsole: hud, |
|
49 messages: [{ text: "foobar-from-scratchpad" }] |
|
50 }); |
|
51 |
|
52 info("Clicking link to switch to and focus Scratchpad"); |
|
53 |
|
54 let [matched] = [...messages[0].matched]; |
|
55 ok(matched, "Found logged message from Scratchpad"); |
|
56 let anchor = matched.querySelector("a.message-location"); |
|
57 |
|
58 aToolbox.on("scratchpad-selected", function selected() { |
|
59 aToolbox.off("scratchpad-selected", selected); |
|
60 |
|
61 is(aToolbox.getCurrentPanel(), scratchpadPanel, |
|
62 "Clicking link switches to Scratchpad panel"); |
|
63 |
|
64 is(Services.ww.activeWindow, aToolbox.frame.ownerGlobal, |
|
65 "Scratchpad's toolbox is focused"); |
|
66 |
|
67 Tools.scratchpad.isTargetSupported = isTargetSupported; |
|
68 finish(); |
|
69 }); |
|
70 |
|
71 EventUtils.synthesizeMouse(anchor, 2, 2, {}, hud.iframeWindow); |
|
72 }); |
|
73 } |