node/deps/v8/test/inspector/debugger/eval-without-codegen.js
Michaël Zasso a1d639ba5d
deps: update V8 to 8.6.395
PR-URL: https://github.com/nodejs/node/pull/35415
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Jiawen Geng <technicalcute@gmail.com>
Reviewed-By: Daniel Bevenius <daniel.bevenius@gmail.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Myles Borins <myles.borins@gmail.com>
2020-10-18 20:16:47 +02:00

67 lines
2.7 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 that evaluation works when code generation from strings is not allowed.');
Protocol.Debugger.enable();
Protocol.Runtime.enable();
InspectorTest.runAsyncTestSuite([
async function testEvaluateNotPaused() {
contextGroup.addScript(`inspector.setAllowCodeGenerationFromStrings(false);
var global1 = 'Global1';`);
await Protocol.Debugger.onceScriptParsed();
InspectorTest.logMessage(
await Protocol.Runtime.evaluate({expression: 'global1'}));
},
async function testEvaluatePaused() {
contextGroup.addScript(`inspector.setAllowCodeGenerationFromStrings(false);
var global2 = 'Global2';
function foo(x) {
var local = 'Local';
debugger;
return local + x;
}
foo();`);
let {params: {callFrames: [{callFrameId}]}} =
await Protocol.Debugger.oncePaused();
InspectorTest.logMessage(
await Protocol.Runtime.evaluate({expression: 'global2'}));
InspectorTest.logMessage(await Protocol.Debugger.evaluateOnCallFrame(
{callFrameId, expression: 'local'}));
await Protocol.Debugger.resume();
},
async function testEvaluateUnsafeEval() {
contextGroup.addScript(`inspector.setAllowCodeGenerationFromStrings(false);`);
await Protocol.Debugger.onceScriptParsed();
InspectorTest.logMessage(
await Protocol.Runtime.evaluate({expression: 'eval("1+1")'}));
InspectorTest.logMessage(
await Protocol.Runtime.evaluate({expression: 'new Function("return 1+1")()'}));
},
async function testEvaluateUnsafeEvalDisableBypass() {
contextGroup.addScript(`inspector.setAllowCodeGenerationFromStrings(false);`);
await Protocol.Debugger.onceScriptParsed();
InspectorTest.logMessage(
await Protocol.Runtime.evaluate({expression: 'eval("1+1")', allowUnsafeEvalBlockedByCSP: false}));
InspectorTest.logMessage(
await Protocol.Runtime.evaluate({expression: 'new Function("return 1+1")()', allowUnsafeEvalBlockedByCSP: false}));
},
async function testCallFunctionOn() {
await contextGroup.addScript(`inspector.setAllowCodeGenerationFromStrings(false);`);
const globalObject = await Protocol.Runtime.evaluate({expression: 'this'});
const objectId = globalObject.result.result.objectId;
InspectorTest.logMessage(await Protocol.Runtime.callFunctionOn({objectId, functionDeclaration: 'function() { return eval("1 + 2"); }'}));
await contextGroup.addScript(`this.value = eval("1 + 2");`);
InspectorTest.logMessage(await Protocol.Runtime.evaluate({expression: 'this.value'}));
}
]);