55 lines
1.9 KiB
JavaScript
55 lines
1.9 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('Change return string constant at breakpoint');
|
||
|
|
||
|
contextGroup.addScript(
|
||
|
`SlimFunction = eval(
|
||
|
'(function f() {\\n ' +
|
||
|
' return \\'Cat\\';\\n' +
|
||
|
'})\\n' +
|
||
|
'//# sourceURL=eval.js\\n');`);
|
||
|
|
||
|
(async function test() {
|
||
|
session.setupScriptMap();
|
||
|
let scriptPromise = new Promise(resolve => {
|
||
|
Protocol.Debugger.onScriptParsed(({params}) => {
|
||
|
if (params.url === 'eval.js') {
|
||
|
resolve(params);
|
||
|
Protocol.Debugger.onScriptParsed(null);
|
||
|
}
|
||
|
});
|
||
|
});
|
||
|
Protocol.Debugger.enable();
|
||
|
const script = await scriptPromise;
|
||
|
|
||
|
InspectorTest.log('Set breakpoint inside f() and call function..');
|
||
|
const {result:{actualLocation}} = await Protocol.Debugger.setBreakpoint({
|
||
|
location: { scriptId: script.scriptId, lineNumber: 1, columnNumber: 0}});
|
||
|
const evalPromise = Protocol.Runtime.evaluate({expression: 'SlimFunction()'});
|
||
|
const {params:{callFrames}} = await Protocol.Debugger.oncePaused();
|
||
|
InspectorTest.log('Paused at:');
|
||
|
await session.logSourceLocation(callFrames[0].location);
|
||
|
|
||
|
InspectorTest.log('Change Cat to Capybara..');
|
||
|
const {result:{scriptSource}} = await Protocol.Debugger.getScriptSource({
|
||
|
scriptId: script.scriptId
|
||
|
});
|
||
|
const {result:{callFrames:[topFrame],stackChanged}} =
|
||
|
await Protocol.Debugger.setScriptSource({
|
||
|
scriptId: script.scriptId,
|
||
|
scriptSource: scriptSource.replace(`'Cat'`, `'Capybara'`)
|
||
|
});
|
||
|
|
||
|
InspectorTest.log('Paused at:');
|
||
|
await session.logSourceLocation(topFrame.location, true);
|
||
|
|
||
|
InspectorTest.log('Resume and check return value..');
|
||
|
Protocol.Debugger.resume();
|
||
|
InspectorTest.log(
|
||
|
`SlimFunction() = ${(await evalPromise).result.result.value}`);
|
||
|
InspectorTest.completeTest();
|
||
|
})();
|