blob: 4e8b2ac2ab5abaa0b740b3829f1f351305a9370b [file] [log] [blame]
// 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();
})();