| Index: third_party/WebKit/LayoutTests/inspector-protocol/runtime/runtime-command-line-api-can-be-overriden.html
|
| diff --git a/third_party/WebKit/LayoutTests/inspector-protocol/runtime/runtime-command-line-api-can-be-overriden.html b/third_party/WebKit/LayoutTests/inspector-protocol/runtime/runtime-command-line-api-can-be-overriden.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..4867fa091618a475014504080be6d01ea7d9572a
|
| --- /dev/null
|
| +++ b/third_party/WebKit/LayoutTests/inspector-protocol/runtime/runtime-command-line-api-can-be-overriden.html
|
| @@ -0,0 +1,70 @@
|
| +<html>
|
| +<head>
|
| +<script type="text/javascript" src="../../http/tests/inspector-protocol/inspector-protocol-test.js"></script>
|
| +<script>
|
| +
|
| +function overrideDir()
|
| +{
|
| + var v = "" + dir;
|
| + dir = 239;
|
| + return v + " -> " + dir;
|
| +}
|
| +
|
| +function override$_()
|
| +{
|
| + var v = "" + $_;
|
| + $_ = 239;
|
| + return v + " -> " + $_;
|
| +}
|
| +
|
| +function doesCommandLineAPIEnumerable()
|
| +{
|
| + for (var v in window) {
|
| + if (v === "dir" || v === "$_")
|
| + return "enumerable";
|
| + }
|
| + return "non enumerable";
|
| +}
|
| +
|
| +function test()
|
| +{
|
| + function evaluatePromise(expression)
|
| + {
|
| + var cb;
|
| + var p = new Promise(resolver => cb = resolver);
|
| + InspectorTest.sendCommandOrDie("Runtime.evaluate", { "expression": expression, objectGroup: "console", includeCommandLineAPI: true }, cb);
|
| + return p;
|
| + }
|
| +
|
| + evaluatePromise("doesCommandLineAPIEnumerable()")
|
| + .then(dumpResult.bind(null, "Check that CommandLineAPI isn't enumerable on window object:"))
|
| + .then(() => evaluatePromise("overrideDir()"))
|
| + .then(dumpResult.bind(null, "Override dir:"))
|
| + .then(() => evaluatePromise("\"\" + dir"))
|
| + .then(dumpResult.bind(null, "CommandLineAPI doesn't override dir:"))
|
| + .then(() => evaluatePromise("delete dir"))
|
| + .then(() => evaluatePromise("overrideDir()"))
|
| + .then(dumpResult.bind(null, "CommandLineAPI is presented after removing override variable:"))
|
| + // set $_ to 42
|
| + .then(() => evaluatePromise("42"))
|
| + .then(() => evaluatePromise("override$_()"))
|
| + .then(dumpResult.bind(null, "Override $_:"))
|
| + .then(() => evaluatePromise("\"\" + $_"))
|
| + .then(dumpResult.bind(null, "CommandLineAPI doesn't override $_:"))
|
| + .then(() => evaluatePromise("delete $_"))
|
| + .then(() => evaluatePromise("override$_()"))
|
| + .then(dumpResult.bind(null, "CommandLineAPI is presented after removing override variable:"))
|
| + .then(() => InspectorTest.completeTest());
|
| +
|
| + function dumpResult(title, message)
|
| + {
|
| + InspectorTest.log(title);
|
| + InspectorTest.log(message.result.value);
|
| + }
|
| +}
|
| +</script>
|
| +</head>
|
| +<body onLoad="runTest();">
|
| +Tests that Command Line API doesn't override defined on window methods and can be overridden during evaluation.
|
| +</body>
|
| +</html>
|
|
|