70 lines
3.2 KiB
JavaScript
70 lines
3.2 KiB
JavaScript
|
// Copyright 2017 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('Checks provisional breakpoints by hash in anonymous scripts');
|
||
|
session.setupScriptMap();
|
||
|
|
||
|
InspectorTest.runAsyncTestSuite([
|
||
|
async function testNextScriptParsed() {
|
||
|
await Protocol.Debugger.enable();
|
||
|
// set breakpoint in anonymous script..
|
||
|
Protocol.Runtime.evaluate({expression: 'function foo(){}'});
|
||
|
let {params:{hash}} = await Protocol.Debugger.onceScriptParsed();
|
||
|
let {result:{breakpointId}} = await Protocol.Debugger.setBreakpointByUrl({
|
||
|
scriptHash: hash,
|
||
|
lineNumber: 0,
|
||
|
columnNumber: 15
|
||
|
});
|
||
|
// evaluate the same anonymous script again..
|
||
|
Protocol.Runtime.evaluate({expression: 'function foo(){}'});
|
||
|
// run function and check Debugger.paused event..
|
||
|
let evaluation = Protocol.Runtime.evaluate({expression: 'foo()'});
|
||
|
let result = await Promise.race([evaluation, Protocol.Debugger.oncePaused()]);
|
||
|
if (result.method !== 'Debugger.paused') {
|
||
|
InspectorTest.log('FAIL: breakpoint was ignored');
|
||
|
} else {
|
||
|
await session.logSourceLocation(result.params.callFrames[0].location);
|
||
|
}
|
||
|
// remove breakpoint and run again..
|
||
|
await Protocol.Debugger.removeBreakpoint({breakpointId});
|
||
|
evaluation = Protocol.Runtime.evaluate({expression: 'foo()'});
|
||
|
result = await Promise.race([evaluation, Protocol.Debugger.oncePaused()]);
|
||
|
if (result.method === 'Debugger.paused') {
|
||
|
InspectorTest.log('FAIL: breakpoint was not removed');
|
||
|
}
|
||
|
await Protocol.Debugger.disable();
|
||
|
},
|
||
|
async function testPreviousScriptParsed() {
|
||
|
await Protocol.Debugger.enable();
|
||
|
// run script and store function to global list..
|
||
|
await Protocol.Runtime.evaluate({expression: 'var list = list ? list.concat(foo) : [foo]; function foo(){}'});
|
||
|
// run same script again..
|
||
|
Protocol.Runtime.evaluate({expression: 'var list = list ? list.concat(foo) : [foo]; function foo(){}'});
|
||
|
let {params:{hash}} = await Protocol.Debugger.onceScriptParsed();
|
||
|
// set breakpoint by hash of latest script..
|
||
|
let {result:{breakpointId}} = await Protocol.Debugger.setBreakpointByUrl({
|
||
|
scriptHash: hash,
|
||
|
lineNumber: 0,
|
||
|
columnNumber: 49
|
||
|
});
|
||
|
// call each function in global list and wait for Debugger.paused events..
|
||
|
let evaluation = Protocol.Runtime.evaluate({expression: 'list.forEach(x => x())'});
|
||
|
let result = await Promise.race([evaluation, Protocol.Debugger.oncePaused()]);
|
||
|
while (result.method === 'Debugger.paused') {
|
||
|
await session.logSourceLocation(result.params.callFrames[0].location);
|
||
|
Protocol.Debugger.resume();
|
||
|
result = await Promise.race([evaluation, Protocol.Debugger.oncePaused()]);
|
||
|
}
|
||
|
// remove breakpoint and call functions again..
|
||
|
await Protocol.Debugger.removeBreakpoint({breakpointId});
|
||
|
evaluation = Protocol.Runtime.evaluate({expression: 'foo()'});
|
||
|
result = await Promise.race([evaluation, Protocol.Debugger.oncePaused()]);
|
||
|
if (result.method === 'Debugger.paused') {
|
||
|
InspectorTest.log('FAIL: breakpoint was not removed');
|
||
|
}
|
||
|
await Protocol.Debugger.disable();
|
||
|
}
|
||
|
]);
|