blob: 94df4965207878fa676efe7a8fe43bf609539ba4 [file] [log] [blame]
// Copyright 2020 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.
const {session, contextGroup, Protocol} = InspectorTest.start(
'Check we\'re not pausing on breaks while installing console API');
(async function test(){
// Set up additional console API to give evaluate() a chance to pause
// there (which it shouldn't) while installing the API upon first eval.
utils.setAdditionalConsoleApi(`function frobnicate() {
return [...arguments].reverse().join(' ');
}`);
// Perform self-test, i.e. assure setAdditionalConsoleApi above has effect.
Protocol.Runtime.enable();
const expression = 'frobnicate("test", "self")';
const {result} = await Protocol.Runtime.evaluate({
expression,
includeCommandLineAPI: true,
returnByValue: true
});
InspectorTest.log(`${expression} = ${result.result.value}`);
// Now for the actual test: get a clean context so that Runtime.evaluate
// would install the API again.
const contextGroup = new InspectorTest.ContextGroup();
const session2 = contextGroup.connect();
const Protocol2 = session2.Protocol;
Protocol2.Runtime.enable();
Protocol2.Debugger.enable();
await Protocol2.Debugger.pause();
// Add a sourceURL to double check we're paused in the right place.
const sourceURL = '//# sourceURL=the-right-place.js';
Protocol2.Runtime.evaluate({
expression: `frobnicate("real", "test");\n${sourceURL}`,
includeCommandLineAPI: true
});
const paused = (await Protocol2.Debugger.oncePaused()).params;
InspectorTest.log(`paused in: ${paused.callFrames[0].url}`);
// Now if we're paused in the wrong place, we will likely crash.
session2.disconnect();
InspectorTest.quitImmediately();
})();