| // 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('Async caught exception prediction and blackboxing.'); |
| |
| contextGroup.addScript(` |
| function constructorThrow() { |
| return new Promise((resolve, reject) => |
| Promise.resolve().then(() => |
| reject("f") // Exception f |
| ) |
| ); |
| } |
| |
| function dotCatch(producer) { |
| Promise.resolve(producer()).catch(() => {}); |
| } |
| //# sourceURL=framework.js`); |
| |
| session.setupScriptMap(); |
| (async function test() { |
| Protocol.Debugger.enable(); |
| Protocol.Debugger.setBlackboxPatterns({patterns: ['framework\.js']}); |
| Protocol.Debugger.setPauseOnExceptions({state: 'all'}); |
| Protocol.Runtime.evaluate({expression: 'dotCatch(constructorThrow);'}); |
| // Should break at this debugger statement, not at reject. |
| Protocol.Runtime.evaluate({expression: 'setTimeout(\'debugger;\', 0);'}); |
| 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; |
| } |