OLD | NEW |
(Empty) | |
| 1 <html> |
| 2 <head> |
| 3 <script type="text/javascript" src="../../http/tests/inspector-protocol/inspecto
r-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 |