| 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();
 | 
| +})();
 | 
| 
 |