Index: test/inspector/sessions/runtime-evaluate-exception.js |
diff --git a/test/inspector/sessions/runtime-evaluate-exception.js b/test/inspector/sessions/runtime-evaluate-exception.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..8f3520fe18084a218223a1537697b221d775201c |
--- /dev/null |
+++ b/test/inspector/sessions/runtime-evaluate-exception.js |
@@ -0,0 +1,59 @@ |
+// 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(); |
+})(); |