// 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 multiple sessions share the context.');

(async function test() {
  var contextGroup = new InspectorTest.ContextGroup();
  var session1 = contextGroup.connect();
  var session2 = contextGroup.connect();

  InspectorTest.log('Assigning in 1');
  await session1.Protocol.Runtime.evaluate({expression: 'var a = 42;'});
  InspectorTest.log('Evaluating in 2');
  InspectorTest.logMessage(await session2.Protocol.Runtime.evaluate({expression: 'a'}));

  InspectorTest.log('Awaiting in 1');
  var promise = session1.Protocol.Runtime.evaluate({expression: 'var cb; new Promise(f => cb = f)', awaitPromise: true});
  InspectorTest.log('Resolving in 2');
  await session2.Protocol.Runtime.evaluate({expression: 'cb("foo")'});
  InspectorTest.log('Should resolve in 1');
  InspectorTest.logMessage(await promise);

  InspectorTest.completeTest();
})();