OLD | NEW |
(Empty) | |
| 1 (async function(testRunner) { |
| 2 let {page, session, dp} = await testRunner.startBlank(`Tests that Command Line
API doesn't override defined on window methods and can be overridden during eva
luation.`); |
| 3 |
| 4 await session.evaluate(` |
| 5 function overrideDir() { |
| 6 var v = '' + dir; |
| 7 dir = 239; |
| 8 return v + ' -> ' + dir; |
| 9 } |
| 10 |
| 11 function override$_() { |
| 12 var v = '' + $_; |
| 13 $_ = 239; |
| 14 return v + ' -> ' + $_; |
| 15 } |
| 16 |
| 17 function doesCommandLineAPIEnumerable() { |
| 18 for (var v in window) { |
| 19 if (v === 'dir' || v === '$_') |
| 20 return 'enumerable'; |
| 21 } |
| 22 return 'non enumerable'; |
| 23 } |
| 24 `); |
| 25 |
| 26 async function evaluate(expression) { |
| 27 var result = await dp.Runtime.evaluate({ 'expression': expression, objectGro
up: 'console', includeCommandLineAPI: true }); |
| 28 return result.result; |
| 29 } |
| 30 |
| 31 function dumpResult(title, message) { |
| 32 testRunner.log(title); |
| 33 testRunner.logObject(message.result.value); |
| 34 } |
| 35 |
| 36 dumpResult(`Check that CommandLineAPI isn't enumerable on window object:`, |
| 37 await evaluate(`doesCommandLineAPIEnumerable()`)); |
| 38 dumpResult(`Override dir:`, |
| 39 await evaluate(`overrideDir()`)); |
| 40 dumpResult(`CommandLineAPI doesn't override dir:`, |
| 41 await evaluate(`'' + dir`)); |
| 42 await evaluate(`delete dir`); |
| 43 dumpResult(`CommandLineAPI is presented after removing override variable:`, |
| 44 await evaluate(`overrideDir()`)); |
| 45 // set $_ to 42 |
| 46 await evaluate(`42`); |
| 47 dumpResult(`Override $_:`, |
| 48 await evaluate(`override$_()`)); |
| 49 dumpResult(`CommandLineAPI doesn't override $_:`, |
| 50 await evaluate(`'' + $_`)); |
| 51 await evaluate(`delete $_`); |
| 52 dumpResult(`CommandLineAPI is presented after removing override variable:`, |
| 53 await evaluate(`override$_()`)); |
| 54 dumpResult(`CommandLineAPI can be overridden by var dir = 1:`, |
| 55 await evaluate(`var dir = 1; '' + dir`)); |
| 56 dumpResult(`CommandLineAPI doesn't override var dir = 1:`, |
| 57 await evaluate(`'' + dir`)); |
| 58 dumpResult(`CommandLineAPI can be overridden by Object.defineProperty:`, |
| 59 await evaluate(`Object.defineProperty(window, 'copy', { get: () => 239 });
'' + copy`)); |
| 60 dumpResult(`CommandLineAPI doesn't override Object.defineProperty:`, |
| 61 await evaluate(`'' + copy`)); |
| 62 testRunner.completeTest(); |
| 63 }) |
OLD | NEW |