| // Copyright 2016 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("Check that inspector correctly passes caught/uncaught information."); |
| |
| contextGroup.addScript( |
| `function throwCaught() { try { throw new Error(); } catch (_) {} } |
| function throwUncaught() { throw new Error(); } |
| function throwInPromiseCaught() { |
| var reject; |
| new Promise(function(res, rej) { reject = rej; }).catch(() => {}); |
| reject(); |
| } |
| function throwInPromiseUncaught() { |
| new Promise(function promiseUncaught() { throw new Error(); }); |
| } |
| function throwInMapConstructor() { new Map('a'); } |
| function throwInAsyncIterator() { |
| let it = (async function*() {})(); |
| it.next.call({}); |
| } |
| function schedule(f) { setTimeout(f, 0); } |
| `); |
| |
| Protocol.Debugger.enable(); |
| |
| Protocol.Debugger.setPauseOnExceptions({ "state": "all" }); |
| Protocol.Debugger.onPaused(message => { |
| InspectorTest.log("paused in " + message.params.callFrames[0].functionName); |
| InspectorTest.log("uncaught: " + message.params.data.uncaught); |
| Protocol.Debugger.resume(); |
| }); |
| |
| Protocol.Runtime.evaluate({ "expression": "schedule(throwCaught);" }) |
| .then(() => Protocol.Runtime.evaluate( |
| { "expression": "schedule(throwUncaught);" })) |
| .then(() => Protocol.Runtime.evaluate( |
| { "expression": "schedule(throwInPromiseCaught);"})) |
| .then(() => Protocol.Runtime.evaluate( |
| { "expression": "schedule(throwInPromiseUncaught);"})) |
| .then(() => Protocol.Runtime.evaluate( |
| { "expression": "schedule(throwInMapConstructor);"})) |
| .then(() => Protocol.Runtime.evaluate( |
| { "expression": "schedule(throwInAsyncIterator);"})) |
| .then(() => InspectorTest.completeTest()); |