1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/browser/devtools/commandline/test/browser_cmd_jsb.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,87 @@ 1.4 +/* Any copyright is dedicated to the Public Domain. 1.5 + * http://creativecommons.org/publicdomain/zero/1.0/ */ 1.6 + 1.7 +// Tests that the jsb command works as it should 1.8 + 1.9 +const TEST_URI = "http://example.com/browser/browser/devtools/commandline/" + 1.10 + "test/browser_cmd_jsb_script.jsi"; 1.11 + 1.12 +function test() { 1.13 + return Task.spawn(testTask).then(finish, helpers.handleError); 1.14 +} 1.15 + 1.16 +function testTask() { 1.17 + let options = yield helpers.openTab("about:blank"); 1.18 + yield helpers.openToolbar(options); 1.19 + 1.20 + let deferred = promise.defer(); 1.21 + let scratchpadWin = null; 1.22 + let scratchpad = null; 1.23 + 1.24 + let observer = { 1.25 + onReady: function() { 1.26 + scratchpad.removeObserver(observer); 1.27 + 1.28 + let result = scratchpad.getText(); 1.29 + result = result.replace(/[\r\n]]*/g, "\n"); 1.30 + let correct = "function somefunc() {\n" + 1.31 + " if (true) // Some comment\n" + 1.32 + " doSomething();\n" + 1.33 + " for (let n = 0; n < 500; n++) {\n" + 1.34 + " if (n % 2 == 1) {\n" + 1.35 + " console.log(n);\n" + 1.36 + " console.log(n + 1);\n" + 1.37 + " }\n" + 1.38 + " }\n" + 1.39 + "}"; 1.40 + is(result, correct, "JS has been correctly prettified"); 1.41 + 1.42 + if (scratchpadWin) { 1.43 + scratchpadWin.close(); 1.44 + scratchpadWin = null; 1.45 + } 1.46 + deferred.resolve(); 1.47 + }, 1.48 + }; 1.49 + 1.50 + let onLoad = function GDT_onLoad() { 1.51 + scratchpadWin.removeEventListener("load", onLoad, false); 1.52 + scratchpad = scratchpadWin.Scratchpad; 1.53 + 1.54 + scratchpad.addObserver(observer); 1.55 + }; 1.56 + 1.57 + let onNotify = function(subject, topic, data) { 1.58 + if (topic == "domwindowopened") { 1.59 + Services.ww.unregisterNotification(onNotify); 1.60 + 1.61 + scratchpadWin = subject.QueryInterface(Ci.nsIDOMWindow); 1.62 + scratchpadWin.addEventListener("load", onLoad, false); 1.63 + } 1.64 + }; 1.65 + 1.66 + Services.ww.registerNotification(onNotify); 1.67 + 1.68 + helpers.audit(options, [ 1.69 + { 1.70 + setup: 'jsb', 1.71 + check: { 1.72 + input: 'jsb', 1.73 + hints: ' <url> [options]', 1.74 + markup: 'VVV', 1.75 + status: 'ERROR' 1.76 + } 1.77 + }, 1.78 + { 1.79 + setup: 'jsb ' + TEST_URI, 1.80 + // Should result in a new window, which should fire onReady (eventually) 1.81 + exec: { 1.82 + } 1.83 + } 1.84 + ]); 1.85 + 1.86 + yield deferred.promise; 1.87 + 1.88 + yield helpers.closeToolbar(options); 1.89 + yield helpers.closeTab(options); 1.90 +}