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

Unified Diff: third_party/WebKit/LayoutTests/inspector-protocol/runtime/runtime-clear-of-command-line-api.js

Issue 2954093003: [DevTools] Migrate inspector-protocol/runtime tests to new harness (Closed)
Patch Set: fail: Created 3 years, 6 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: third_party/WebKit/LayoutTests/inspector-protocol/runtime/runtime-clear-of-command-line-api.js
diff --git a/third_party/WebKit/LayoutTests/inspector-protocol/runtime/runtime-clear-of-command-line-api.js b/third_party/WebKit/LayoutTests/inspector-protocol/runtime/runtime-clear-of-command-line-api.js
new file mode 100644
index 0000000000000000000000000000000000000000..8127f059d3b45d4a1fd4f47900bb1890f8aac189
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/inspector-protocol/runtime/runtime-clear-of-command-line-api.js
@@ -0,0 +1,104 @@
+(async function(testRunner) {
+ let {page, session, dp} = await testRunner.startBlank('Tests that CommandLineAPI is presented only while evaluation.');
+
+ await session.evaluate(`
+ var methods = ['dir','dirxml','profile','profileEnd','clear','table','keys','values','debug','undebug','monitor','unmonitor','inspect','copy'];
+
+ 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;
+ }
+ `);
+
+ async function evaluate(expression, includeCommandLineAPI) {
+ var response = await dp.Runtime.evaluate({ expression: expression, objectGroup: 'console', includeCommandLineAPI: includeCommandLineAPI });
+ return response.result;
+ }
+
+ function setLastEvaluationResultTo239() {
+ return evaluate('239', false);
+ }
+
+ async function runExpressionAndDumpPresentedMethods(expression) {
+ testRunner.log(expression);
+ await setLastEvaluationResultTo239();
+ var result = await evaluate(expression + '; var a = presentedAPIMethods(); a', true);
+ testRunner.logObject(result);
+ }
+
+ async function dumpLeftMethods() {
+ // Should always be zero.
+ await setLastEvaluationResultTo239();
+ var result = await evaluate('presentedAPIMethods()', false);
+ testRunner.logObject(result);
+ }
+
+ async function dumpDir() {
+ // Should always be presented.
+ var result = await evaluate('dir', false);
+ testRunner.logObject(result);
+ }
+
+ await runExpressionAndDumpPresentedMethods('');
+ await dumpLeftMethods();
+ await runExpressionAndDumpPresentedMethods('setPropertyForMethod()');
+ await dumpLeftMethods();
+ await dumpDir();
+ await runExpressionAndDumpPresentedMethods('defineValuePropertyForMethod()');
+ await dumpLeftMethods();
+ await dumpDir();
+ await runExpressionAndDumpPresentedMethods('definePropertiesForMethod()');
+ await dumpLeftMethods();
+ await dumpDir();
+ await runExpressionAndDumpPresentedMethods('defineAccessorPropertyForMethod()');
+ await dumpLeftMethods();
+ await dumpDir();
+ await runExpressionAndDumpPresentedMethods('redefineGetOwnPropertyDescriptors()');
+ await dumpLeftMethods();
+ await dumpDir();
+ await evaluate('restoreGetOwnPropertyDescriptors()', false);
+ testRunner.completeTest();
+})

Powered by Google App Engine
This is Rietveld 408576698