| // 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; | |
| } |