67 lines
3.1 KiB
JavaScript
67 lines
3.1 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 Debugger.setBreakpointOnFunctionCall.');
|
||
|
|
||
|
(async function test() {
|
||
|
Protocol.Debugger.enable();
|
||
|
{
|
||
|
const {result: {result: {objectId}}} = await Protocol.Runtime.evaluate(
|
||
|
{expression: 'function foo(a,b){ return a + b; }; foo'});
|
||
|
InspectorTest.log('set breakpoint on function call');
|
||
|
const {result: {breakpointId}} =
|
||
|
await Protocol.Debugger.setBreakpointOnFunctionCall({objectId});
|
||
|
InspectorTest.log('call function');
|
||
|
Protocol.Runtime.evaluate({expression: 'foo(1,2)'});
|
||
|
const {params: {hitBreakpoints}} = await Protocol.Debugger.oncePaused();
|
||
|
InspectorTest.log('paused');
|
||
|
InspectorTest.log(
|
||
|
`hitBreakpoints contains id: ${hitBreakpoints[0] === breakpointId}`);
|
||
|
await Protocol.Debugger.resume();
|
||
|
InspectorTest.log('remove breakpoint');
|
||
|
const result = await Protocol.Debugger.removeBreakpoint({breakpointId});
|
||
|
InspectorTest.logMessage(result);
|
||
|
InspectorTest.log('call function again');
|
||
|
await Protocol.Runtime.evaluate({expression: 'foo(1,2)'});
|
||
|
InspectorTest.log('evaluate finished without pause');
|
||
|
}
|
||
|
{
|
||
|
const {result: {result: {objectId}}} = await Protocol.Runtime.evaluate(
|
||
|
{expression: 'function foo(a,b){ return a + b; }; foo'});
|
||
|
InspectorTest.log('set breakpoint on function call');
|
||
|
const {result: {breakpointId}} =
|
||
|
await Protocol.Debugger.setBreakpointOnFunctionCall({objectId});
|
||
|
InspectorTest.log('set breakpoint on same function call');
|
||
|
InspectorTest.logMessage(
|
||
|
await Protocol.Debugger.setBreakpointOnFunctionCall({objectId}));
|
||
|
await Protocol.Debugger.removeBreakpoint({breakpointId});
|
||
|
}
|
||
|
{
|
||
|
const {result: {result: {objectId}}} =
|
||
|
await Protocol.Runtime.evaluate({expression: 'Array.prototype.push'});
|
||
|
InspectorTest.log('set breakpoint on function call with condition');
|
||
|
const {result: {breakpointId}} =
|
||
|
await Protocol.Debugger.setBreakpointOnFunctionCall(
|
||
|
{objectId, condition: 'arguments[0] === 2'});
|
||
|
InspectorTest.log('call function, condition is false');
|
||
|
await Protocol.Runtime.evaluate({expression: '[].push(0)'});
|
||
|
InspectorTest.log('evaluate finished without pause');
|
||
|
InspectorTest.log('call function, condition is true');
|
||
|
Protocol.Runtime.evaluate({expression: '[].push(2)'});
|
||
|
const {params: {hitBreakpoints}} = await Protocol.Debugger.oncePaused();
|
||
|
InspectorTest.log('paused');
|
||
|
InspectorTest.log(
|
||
|
`hitBreakpoints contains id: ${hitBreakpoints[0] === breakpointId}`);
|
||
|
await Protocol.Debugger.resume();
|
||
|
InspectorTest.log('remove breakpoint');
|
||
|
const result = await Protocol.Debugger.removeBreakpoint({breakpointId});
|
||
|
InspectorTest.logMessage(result);
|
||
|
InspectorTest.log('call function again');
|
||
|
Protocol.Runtime.evaluate({expression: '[].push(2)'});
|
||
|
InspectorTest.log('evaluate finished without pause');
|
||
|
}
|
||
|
InspectorTest.completeTest();
|
||
|
})();
|