| // 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 for break on exception and stepping.'); |
| |
| session.setupScriptMap(); |
| Protocol.Debugger.enable(); |
| Protocol.Debugger.setBlackboxPatterns({patterns: ['expr\.js']}); |
| Protocol.Debugger.onPaused(async ({params:{callFrames:[topFrame], data}}) => { |
| if (data) { |
| InspectorTest.log('paused on exception:'); |
| InspectorTest.logMessage(data); |
| } |
| await session.logSourceLocation(topFrame.location); |
| Protocol.Debugger.stepInto(); |
| }); |
| |
| contextGroup.addScript(` |
| function a() { n(); }; |
| function b() { c(); }; |
| function c() { n(); }; |
| function d() { x = 1; try { e(); } catch(x) { x = 2; } }; |
| function e() { n(); }; |
| function f() { x = 1; try { g(); } catch(x) { x = 2; } }; |
| function g() { h(); }; |
| function h() { x = 1; throw 1; }; |
| `); |
| |
| InspectorTest.runAsyncTestSuite([ |
| async function testStepThrougA() { |
| Protocol.Debugger.pause(); |
| await Protocol.Runtime.evaluate({expression: 'a()\n//# sourceURL=expr.js'}); |
| }, |
| |
| async function testStepThrougB() { |
| Protocol.Debugger.pause(); |
| await Protocol.Runtime.evaluate({expression: 'b()\n//# sourceURL=expr.js'}); |
| }, |
| |
| async function testStepThrougD() { |
| await Protocol.Debugger.setPauseOnExceptions({state: 'uncaught'}); |
| Protocol.Debugger.pause(); |
| await Protocol.Runtime.evaluate({expression: 'd()\n//# sourceURL=expr.js'}); |
| await Protocol.Debugger.setPauseOnExceptions({state: 'none'}); |
| }, |
| |
| async function testStepThrougDWithBreakOnAllExceptions() { |
| await Protocol.Debugger.setPauseOnExceptions({state: 'all'}); |
| Protocol.Debugger.pause(); |
| await Protocol.Runtime.evaluate({expression: 'd()\n//# sourceURL=expr.js'}); |
| await Protocol.Debugger.setPauseOnExceptions({state: 'none'}); |
| }, |
| |
| async function testStepThrougF() { |
| await Protocol.Debugger.setPauseOnExceptions({state: 'uncaught'}); |
| Protocol.Debugger.pause(); |
| await Protocol.Runtime.evaluate({expression: 'f()\n//# sourceURL=expr.js'}); |
| await Protocol.Debugger.setPauseOnExceptions({state: 'none'}); |
| }, |
| |
| async function testStepThrougFWithBreakOnAllExceptions() { |
| await Protocol.Debugger.setPauseOnExceptions({state: 'all'}); |
| Protocol.Debugger.pause(); |
| await Protocol.Runtime.evaluate({expression: 'f()\n//# sourceURL=expr.js'}); |
| await Protocol.Debugger.setPauseOnExceptions({state: 'none'}); |
| } |
| ]); |