// 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. InspectorTest.log('Tests that all sessions get exception notifications.'); function connect(contextGroup, num) { var session = contextGroup.connect(); var exceptionId; session.Protocol.Runtime.onExceptionThrown(message => { InspectorTest.log('From session ' + num); InspectorTest.logMessage(message); exceptionId = message.params.exceptionDetails.exceptionId; }); session.Protocol.Runtime.onExceptionRevoked(message => { InspectorTest.log('From session ' + num); InspectorTest.logMessage(message); InspectorTest.log('id matching: ' + (message.params.exceptionId === exceptionId)); }); return session; } (async function test() { var contextGroup = new InspectorTest.ContextGroup(); var session1 = connect(contextGroup, 1); var session2 = connect(contextGroup, 2); await session1.Protocol.Runtime.enable(); await session2.Protocol.Runtime.enable(); InspectorTest.log('Throwing in 2'); await session2.Protocol.Runtime.evaluate({expression: 'throw "error1";'}); InspectorTest.log('Throwing in 1'); await session1.Protocol.Runtime.evaluate({expression: 'throw "error2";'}); InspectorTest.log('Throwing in setTimeout 1'); await session1.Protocol.Runtime.evaluate({expression: 'setTimeout(() => { throw "error3"; }, 0)'}); await InspectorTest.waitForPendingTasks(); InspectorTest.log('Throwing in setTimeout 2'); await session2.Protocol.Runtime.evaluate({expression: 'setTimeout(() => { throw "error4"; }, 0)'}); await InspectorTest.waitForPendingTasks(); InspectorTest.log('Rejecting in 2'); await session2.Protocol.Runtime.evaluate({expression: 'var p2; setTimeout(() => { p2 = Promise.reject("error5") }, 0)'}); await InspectorTest.waitForPendingTasks(); InspectorTest.log('Revoking in 2'); await session2.Protocol.Runtime.evaluate({expression: 'setTimeout(() => { p2.catch(()=>{}) }, 0);'}); await InspectorTest.waitForPendingTasks(); InspectorTest.log('Rejecting in 1'); await session1.Protocol.Runtime.evaluate({expression: 'var p1; setTimeout(() => { p1 = Promise.reject("error6")} , 0)'}); await InspectorTest.waitForPendingTasks(); InspectorTest.log('Revoking in 1'); await session1.Protocol.Runtime.evaluate({expression: 'setTimeout(() => { p1.catch(()=>{}) }, 0);'}); await InspectorTest.waitForPendingTasks(); InspectorTest.completeTest(); })();