OLD | NEW |
| (Empty) |
1 <html> | |
2 <head> | |
3 <script type="text/javascript" src="../../http/tests/inspector-protocol/resource
s/inspector-protocol-test.js"></script> | |
4 <script> | |
5 | |
6 function overrideDir() | |
7 { | |
8 var v = "" + dir; | |
9 dir = 239; | |
10 return v + " -> " + dir; | |
11 } | |
12 | |
13 function override$_() | |
14 { | |
15 var v = "" + $_; | |
16 $_ = 239; | |
17 return v + " -> " + $_; | |
18 } | |
19 | |
20 function doesCommandLineAPIEnumerable() | |
21 { | |
22 for (var v in window) { | |
23 if (v === "dir" || v === "$_") | |
24 return "enumerable"; | |
25 } | |
26 return "non enumerable"; | |
27 } | |
28 | |
29 function test() | |
30 { | |
31 function evaluatePromise(expression) | |
32 { | |
33 var cb; | |
34 var p = new Promise(resolver => cb = resolver); | |
35 InspectorTest.sendCommandOrDie("Runtime.evaluate", { "expression": expre
ssion, objectGroup: "console", includeCommandLineAPI: true }, cb); | |
36 return p; | |
37 } | |
38 | |
39 evaluatePromise("doesCommandLineAPIEnumerable()") | |
40 .then(dumpResult.bind(null, "Check that CommandLineAPI isn't enumerable
on window object:")) | |
41 .then(() => evaluatePromise("overrideDir()")) | |
42 .then(dumpResult.bind(null, "Override dir:")) | |
43 .then(() => evaluatePromise("\"\" + dir")) | |
44 .then(dumpResult.bind(null, "CommandLineAPI doesn't override dir:")) | |
45 .then(() => evaluatePromise("delete dir")) | |
46 .then(() => evaluatePromise("overrideDir()")) | |
47 .then(dumpResult.bind(null, "CommandLineAPI is presented after removing
override variable:")) | |
48 // set $_ to 42 | |
49 .then(() => evaluatePromise("42")) | |
50 .then(() => evaluatePromise("override$_()")) | |
51 .then(dumpResult.bind(null, "Override $_:")) | |
52 .then(() => evaluatePromise("\"\" + $_")) | |
53 .then(dumpResult.bind(null, "CommandLineAPI doesn't override $_:")) | |
54 .then(() => evaluatePromise("delete $_")) | |
55 .then(() => evaluatePromise("override$_()")) | |
56 .then(dumpResult.bind(null, "CommandLineAPI is presented after removing
override variable:")) | |
57 .then(() => evaluatePromise("var dir = 1; \"\" + dir")) | |
58 .then(dumpResult.bind(null, "CommandLineAPI can be overridden by var dir
= 1:")) | |
59 .then(() => evaluatePromise("\"\" + dir")) | |
60 .then(dumpResult.bind(null, "CommandLineAPI doesn't override var dir = 1
:")) | |
61 .then(() => evaluatePromise("Object.defineProperty(window, \"copy\", { g
et: () => 239 }); \"\" + copy")) | |
62 .then(dumpResult.bind(null, "CommandLineAPI can be overridden by Object.
defineProperty:")) | |
63 .then(() => evaluatePromise("\"\" + copy")) | |
64 .then(dumpResult.bind(null, "CommandLineAPI doesn't override Object.defi
neProperty:")) | |
65 .then(() => InspectorTest.completeTest()); | |
66 | |
67 function dumpResult(title, message) | |
68 { | |
69 InspectorTest.log(title); | |
70 InspectorTest.log(message.result.value); | |
71 } | |
72 } | |
73 </script> | |
74 </head> | |
75 <body onLoad="runTest();"> | |
76 Tests that Command Line API doesn't override defined on window methods and can b
e overridden during evaluation. | |
77 </body> | |
78 </html> | |
OLD | NEW |