Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(8)

Unified Diff: test/inspector/runtime/clear-of-command-line-api.js

Issue 2369753004: [inspector] added inspector test runner [part 5] (Closed)
Patch Set: addressed comments Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: test/inspector/runtime/clear-of-command-line-api.js
diff --git a/test/inspector/runtime/clear-of-command-line-api.js b/test/inspector/runtime/clear-of-command-line-api.js
new file mode 100644
index 0000000000000000000000000000000000000000..776144c4f0ba3579d6b3bb9efd93cfb2c336a8a5
--- /dev/null
+++ b/test/inspector/runtime/clear-of-command-line-api.js
@@ -0,0 +1,120 @@
+// Copyright 2016 the V8 project authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+print("Tests that CommandLineAPI is presented only while evaluation.");
+
+InspectorTest.evaluateInPage(
+`
+var methods = ["dir","dirxml","profile","profileEnd","clear","table","keys","values","debug","undebug","monitor","unmonitor","inspect","copy"];
+var window = this;
+function presentedAPIMethods()
+{
+ var methodCount = 0;
+ for (var method of methods) {
+ try {
+ if (eval("window." + method + "&&" + method + ".toString ? " + method + ".toString().indexOf(\\"[Command Line API]\\") !== -1 : false"))
+ ++methodCount;
+ } catch (e) {
+ }
+ }
+ methodCount += eval("\\"$_\\" in window ? $_ === 239 : false") ? 1 : 0;
+ return methodCount;
+}
+
+function setPropertyForMethod()
+{
+ window.dir = 42;
+}
+
+function defineValuePropertyForMethod()
+{
+ Object.defineProperty(window, "dir", { value: 42 });
+}
+
+function defineAccessorPropertyForMethod()
+{
+ Object.defineProperty(window, "dir", { set: function() {}, get: function(){ return 42 } });
+}
+
+function definePropertiesForMethod()
+{
+ Object.defineProperties(window, { "dir": { set: function() {}, get: function(){ return 42 } }});
+}
+
+var builtinGetOwnPropertyDescriptorOnObject;
+var builtinGetOwnPropertyDescriptorOnObjectPrototype;
+var builtinGetOwnPropertyDescriptorOnWindow;
+
+function redefineGetOwnPropertyDescriptors()
+{
+ builtinGetOwnPropertyDescriptorOnObject = Object.getOwnPropertyDescriptor;
+ Object.getOwnPropertyDescriptor = function() {}
+ builtinGetOwnPropertyDescriptorOnObjectPrototype = Object.prototype.getOwnPropertyDescriptor;
+ Object.prototype.getOwnPropertyDescriptor = function() {}
+ builtinGetOwnPropertyDescriptorOnWindow = window.getOwnPropertyDescriptor;
+ window.getOwnPropertyDescriptor = function() {}
+}
+
+function restoreGetOwnPropertyDescriptors()
+{
+ Object.getOwnPropertyDescriptor = builtinGetOwnPropertyDescriptorOnObject;
+ Object.prototype.getOwnPropertyDescriptor = builtinGetOwnPropertyDescriptorOnObjectPrototype;
+ window.getOwnPropertyDescriptor = builtinGetOwnPropertyDescriptorOnWindow;
+}`);
+
+runExpressionAndDumpPresentedMethods("")
+ .then(dumpLeftMethods)
+ .then(() => runExpressionAndDumpPresentedMethods("setPropertyForMethod()"))
+ .then(dumpLeftMethods)
+ .then(dumpDir)
+ .then(() => runExpressionAndDumpPresentedMethods("defineValuePropertyForMethod()"))
+ .then(dumpLeftMethods)
+ .then(dumpDir)
+ .then(() => runExpressionAndDumpPresentedMethods("definePropertiesForMethod()"))
+ .then(dumpLeftMethods)
+ .then(dumpDir)
+ .then(() => runExpressionAndDumpPresentedMethods("defineAccessorPropertyForMethod()"))
+ .then(dumpLeftMethods)
+ .then(dumpDir)
+ .then(() => runExpressionAndDumpPresentedMethods("redefineGetOwnPropertyDescriptors()"))
+ .then(dumpLeftMethods)
+ .then(dumpDir)
+ .then(() => evaluate("restoreGetOwnPropertyDescriptors()", false))
+ .then(InspectorTest.completeTest);
+
+function evaluate(expression, includeCommandLineAPI)
+{
+ var cb;
+ var p = new Promise(resolver => cb = resolver);
+ InspectorTest.sendCommandOrDie("Runtime.evaluate", { expression: expression, objectGroup: "console", includeCommandLineAPI: includeCommandLineAPI }, cb);
+ return p;
+}
+
+function setLastEvaluationResultTo239()
+{
+ return evaluate("239", false);
+}
+
+function runExpressionAndDumpPresentedMethods(expression)
+{
+ InspectorTest.log(expression);
+ return setLastEvaluationResultTo239()
+ .then(() => evaluate(expression + "; var a = presentedAPIMethods(); a", true))
+ .then((result) => InspectorTest.logObject(result));
+}
+
+function dumpLeftMethods()
+{
+ // Should always be zero.
+ return setLastEvaluationResultTo239()
+ .then(() => evaluate("presentedAPIMethods()", false))
+ .then((result) => InspectorTest.logObject(result));
+}
+
+function dumpDir()
+{
+ // Should always be presented.
+ return evaluate("dir", false)
+ .then((result) => InspectorTest.logObject(result));
+}

Powered by Google App Engine
This is Rietveld 408576698