|
1 /* Any copyright is dedicated to the Public Domain. |
|
2 * http://creativecommons.org/publicdomain/zero/1.0/ */ |
|
3 |
|
4 // Tests that the jsb command works as it should |
|
5 |
|
6 const TEST_URI = "http://example.com/browser/browser/devtools/commandline/" + |
|
7 "test/browser_cmd_jsb_script.jsi"; |
|
8 |
|
9 function test() { |
|
10 return Task.spawn(testTask).then(finish, helpers.handleError); |
|
11 } |
|
12 |
|
13 function testTask() { |
|
14 let options = yield helpers.openTab("about:blank"); |
|
15 yield helpers.openToolbar(options); |
|
16 |
|
17 let deferred = promise.defer(); |
|
18 let scratchpadWin = null; |
|
19 let scratchpad = null; |
|
20 |
|
21 let observer = { |
|
22 onReady: function() { |
|
23 scratchpad.removeObserver(observer); |
|
24 |
|
25 let result = scratchpad.getText(); |
|
26 result = result.replace(/[\r\n]]*/g, "\n"); |
|
27 let correct = "function somefunc() {\n" + |
|
28 " if (true) // Some comment\n" + |
|
29 " doSomething();\n" + |
|
30 " for (let n = 0; n < 500; n++) {\n" + |
|
31 " if (n % 2 == 1) {\n" + |
|
32 " console.log(n);\n" + |
|
33 " console.log(n + 1);\n" + |
|
34 " }\n" + |
|
35 " }\n" + |
|
36 "}"; |
|
37 is(result, correct, "JS has been correctly prettified"); |
|
38 |
|
39 if (scratchpadWin) { |
|
40 scratchpadWin.close(); |
|
41 scratchpadWin = null; |
|
42 } |
|
43 deferred.resolve(); |
|
44 }, |
|
45 }; |
|
46 |
|
47 let onLoad = function GDT_onLoad() { |
|
48 scratchpadWin.removeEventListener("load", onLoad, false); |
|
49 scratchpad = scratchpadWin.Scratchpad; |
|
50 |
|
51 scratchpad.addObserver(observer); |
|
52 }; |
|
53 |
|
54 let onNotify = function(subject, topic, data) { |
|
55 if (topic == "domwindowopened") { |
|
56 Services.ww.unregisterNotification(onNotify); |
|
57 |
|
58 scratchpadWin = subject.QueryInterface(Ci.nsIDOMWindow); |
|
59 scratchpadWin.addEventListener("load", onLoad, false); |
|
60 } |
|
61 }; |
|
62 |
|
63 Services.ww.registerNotification(onNotify); |
|
64 |
|
65 helpers.audit(options, [ |
|
66 { |
|
67 setup: 'jsb', |
|
68 check: { |
|
69 input: 'jsb', |
|
70 hints: ' <url> [options]', |
|
71 markup: 'VVV', |
|
72 status: 'ERROR' |
|
73 } |
|
74 }, |
|
75 { |
|
76 setup: 'jsb ' + TEST_URI, |
|
77 // Should result in a new window, which should fire onReady (eventually) |
|
78 exec: { |
|
79 } |
|
80 } |
|
81 ]); |
|
82 |
|
83 yield deferred.promise; |
|
84 |
|
85 yield helpers.closeToolbar(options); |
|
86 yield helpers.closeTab(options); |
|
87 } |