v8/test/inspector/runtime/command-line-api-without-side-effects.js
Erik Luo 363996f7ab [inspector] whitelist side-effect-free console API callbacks
This CL whitelists Console Command Line API callbacks on the V8 side.

Bug: chromium:810176
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel
Change-Id: I7afdd6bd4263cb4cb18bdf02b37ab3e822ae5c96
Reviewed-on: https://chromium-review.googlesource.com/1016094
Commit-Queue: Erik Luo <luoe@chromium.org>
Reviewed-by: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#52747}
2018-04-23 22:06:07 +00:00

84 lines
2.8 KiB
JavaScript

// Copyright 2018 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.
let {session, contextGroup, Protocol} = InspectorTest.start(
'Tests Command Line API evaluations with throwOnSideEffect.');
session.setupScriptMap();
contextGroup.addScript(`
function f() {
}
var obj = {x: 1, y: 2};
//# sourceURL=test.js`);
Protocol.Runtime.enable();
Protocol.Debugger.enable();
(async function() {
utils.setMemoryInfoForTest(42);
await testExpression('console.memory');
await Protocol.Runtime.evaluate(
{expression: '43', objectGroup: 'console', includeCommandLineAPI: true});
await testExpression('$_');
await testExpression('$0');
await testExpression('$1');
await testExpression('$2');
await testExpression('$3');
await testExpression('$4');
await testMethod('console.debug');
await testMethod('console.error');
await testMethod('console.info');
await testMethod('console.log');
await testMethod('console.warn');
await testMethod('console.dir');
await testMethod('console.dirxml');
await testMethod('console.table');
await testMethod('console.trace');
await testMethod('console.group');
await testMethod('console.groupEnd');
await testMethod('console.groupCollapsed');
await testMethod('console.clear');
await testMethod('console.count');
await testMethod('console.assert');
await testMethod('console.profile');
await testMethod('console.profileEnd');
await testMethod('console.time');
await testMethod('console.timeEnd');
await testMethod('debug', ['f']);
await testMethod('undebug', ['f']);
await testMethod('monitor');
await testMethod('unmonitor');
await testMethod('keys', ['obj']);
await testMethod('values', ['obj']);
await testMethod('inspect');
await testMethod('copy', ['1']);
await testMethod('queryObjects', ['Array']);
InspectorTest.completeTest();
async function testExpression(expression) {
InspectorTest.log(`\nExpression: ${expression}`);
await evaluateAndPrint(expression);
}
async function testMethod(method, args = []) {
InspectorTest.log(`\nMethod: ${method}`);
await evaluateAndPrint(`${method}(${args.join(', ')})`);
await evaluateAndPrint(`${method}.toString()`);
}
async function evaluateAndPrint(expression) {
const result = (await Protocol.Runtime.evaluate({
expression,
throwOnSideEffect: true,
includeCommandLineAPI: true
})).result;
if (result.exceptionDetails)
InspectorTest.logMessage(result.exceptionDetails.exception.description);
else if (result.result)
InspectorTest.logMessage(
result.result.description || result.result.value ||
result.result.type);
}
})();