| 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 var methods = ["dir","dirxml","profile","profileEnd","clear","table","keys","val
ues","debug","undebug","monitor","unmonitor","inspect","copy"]; | |
| 7 | |
| 8 function presentedAPIMethods() | |
| 9 { | |
| 10 var methodCount = 0; | |
| 11 for (var method of methods) { | |
| 12 try { | |
| 13 if (eval("window." + method + "&&" + method + ".toString ? " + metho
d + ".toString().indexOf(\"[Command Line API]\") !== -1 : false")) | |
| 14 ++methodCount; | |
| 15 } catch (e) { | |
| 16 } | |
| 17 } | |
| 18 methodCount += eval("\"$_\" in window ? $_ === 239 : false") ? 1 : 0; | |
| 19 return methodCount; | |
| 20 } | |
| 21 | |
| 22 function setPropertyForMethod() | |
| 23 { | |
| 24 window.dir = 42; | |
| 25 } | |
| 26 | |
| 27 function defineValuePropertyForMethod() | |
| 28 { | |
| 29 Object.defineProperty(window, "dir", { value: 42 }); | |
| 30 } | |
| 31 | |
| 32 function defineAccessorPropertyForMethod() | |
| 33 { | |
| 34 Object.defineProperty(window, "dir", { set: function() {}, get: function(){
return 42 } }); | |
| 35 } | |
| 36 | |
| 37 function definePropertiesForMethod() | |
| 38 { | |
| 39 Object.defineProperties(window, { "dir": { set: function() {}, get: function
(){ return 42 } }}); | |
| 40 } | |
| 41 | |
| 42 var builtinGetOwnPropertyDescriptorOnObject; | |
| 43 var builtinGetOwnPropertyDescriptorOnObjectPrototype; | |
| 44 var builtinGetOwnPropertyDescriptorOnWindow; | |
| 45 | |
| 46 function redefineGetOwnPropertyDescriptors() | |
| 47 { | |
| 48 builtinGetOwnPropertyDescriptorOnObject = Object.getOwnPropertyDescriptor; | |
| 49 Object.getOwnPropertyDescriptor = function() {} | |
| 50 builtinGetOwnPropertyDescriptorOnObjectPrototype = Object.prototype.getOwnPr
opertyDescriptor; | |
| 51 Object.prototype.getOwnPropertyDescriptor = function() {} | |
| 52 builtinGetOwnPropertyDescriptorOnWindow = window.getOwnPropertyDescriptor; | |
| 53 window.getOwnPropertyDescriptor = function() {} | |
| 54 } | |
| 55 | |
| 56 function restoreGetOwnPropertyDescriptors() | |
| 57 { | |
| 58 Object.getOwnPropertyDescriptor = builtinGetOwnPropertyDescriptorOnObject; | |
| 59 Object.prototype.getOwnPropertyDescriptor = builtinGetOwnPropertyDescriptorO
nObjectPrototype; | |
| 60 window.getOwnPropertyDescriptor = builtinGetOwnPropertyDescriptorOnWindow; | |
| 61 } | |
| 62 | |
| 63 | |
| 64 function test() | |
| 65 { | |
| 66 runExpressionAndDumpPresentedMethods("") | |
| 67 .then(() => dumpLeftMethods()) | |
| 68 .then(() => runExpressionAndDumpPresentedMethods("setPropertyForMethod()
")) | |
| 69 .then(() => dumpLeftMethods()) | |
| 70 .then(() => dumpDir()) | |
| 71 .then(() => runExpressionAndDumpPresentedMethods("defineValuePropertyFor
Method()")) | |
| 72 .then(() => dumpLeftMethods()) | |
| 73 .then(() => dumpDir()) | |
| 74 .then(() => runExpressionAndDumpPresentedMethods("definePropertiesForMet
hod()")) | |
| 75 .then(() => dumpLeftMethods()) | |
| 76 .then(() => dumpDir()) | |
| 77 .then(() => runExpressionAndDumpPresentedMethods("defineAccessorProperty
ForMethod()")) | |
| 78 .then(() => dumpLeftMethods()) | |
| 79 .then(() => dumpDir()) | |
| 80 .then(() => runExpressionAndDumpPresentedMethods("redefineGetOwnProperty
Descriptors()")) | |
| 81 .then(() => dumpLeftMethods()) | |
| 82 .then(() => dumpDir()) | |
| 83 .then(() => evaluate("restoreGetOwnPropertyDescriptors()", false)) | |
| 84 .then(() => InspectorTest.completeTest()); | |
| 85 | |
| 86 function evaluate(expression, includeCommandLineAPI) | |
| 87 { | |
| 88 var cb; | |
| 89 var p = new Promise(resolver => cb = resolver); | |
| 90 InspectorTest.sendCommandOrDie("Runtime.evaluate", { expression: express
ion, objectGroup: "console", includeCommandLineAPI: includeCommandLineAPI }, cb)
; | |
| 91 return p; | |
| 92 } | |
| 93 | |
| 94 function setLastEvaluationResultTo239() | |
| 95 { | |
| 96 return evaluate("239", false); | |
| 97 } | |
| 98 | |
| 99 function runExpressionAndDumpPresentedMethods(expression) | |
| 100 { | |
| 101 InspectorTest.log(expression); | |
| 102 return setLastEvaluationResultTo239() | |
| 103 .then(() => evaluate(expression + "; var a = presentedAPIMethods();
a", true)) | |
| 104 .then((result) => InspectorTest.logObject(result)); | |
| 105 } | |
| 106 | |
| 107 function dumpLeftMethods() | |
| 108 { | |
| 109 // Should always be zero. | |
| 110 return setLastEvaluationResultTo239() | |
| 111 .then(() => evaluate("presentedAPIMethods()", false)) | |
| 112 .then((result) => InspectorTest.logObject(result)); | |
| 113 } | |
| 114 | |
| 115 function dumpDir() | |
| 116 { | |
| 117 // Should always be presented. | |
| 118 return evaluate("dir", false) | |
| 119 .then((result) => InspectorTest.logObject(result)); | |
| 120 } | |
| 121 } | |
| 122 </script> | |
| 123 </head> | |
| 124 <body onLoad="runTest();"> | |
| 125 Tests that CommandLineAPI is presented only while evaluation. | |
| 126 </body> | |
| 127 </html> | |
| OLD | NEW |