| // 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 that stepping is cleared after breakProgram.'); | |
| contextGroup.addScript(` | |
| function callBreakProgram() { | |
| debugger; | |
| inspector.breakProgram('reason', ''); | |
| }`); | |
| session.setupScriptMap(); | |
| (async function test() { | |
| Protocol.Debugger.enable(); | |
| Protocol.Runtime.evaluate({expression: 'callBreakProgram();'}); | |
| // Should break at this debugger statement, not at end of callBreakProgram. | |
| Protocol.Runtime.evaluate({expression: 'setTimeout(\'debugger;\', 0);'}); | |
| await waitPauseAndDumpLocation(); | |
| Protocol.Debugger.stepOver(); | |
| await waitPauseAndDumpLocation(); | |
| Protocol.Debugger.stepOver(); | |
| await waitPauseAndDumpLocation(); | |
| Protocol.Debugger.resume(); | |
| await waitPauseAndDumpLocation(); | |
| InspectorTest.completeTest(); | |
| })(); | |
| async function waitPauseAndDumpLocation() { | |
| var message = await Protocol.Debugger.oncePaused(); | |
| InspectorTest.log('paused at:'); | |
| session.logSourceLocation(message.params.callFrames[0].location); | |
| return message; | |
| } |