// 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 console api notifications.');

function connect(contextGroup, num) {
  var session = contextGroup.connect();
  session.Protocol.Runtime.onConsoleAPICalled(message => {
    InspectorTest.log('From session ' + num);
    InspectorTest.logMessage(message);
  });
  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('Error in 2');
  await session2.Protocol.Runtime.evaluate({expression: 'console.error(1)'});

  InspectorTest.log('Logging in 1');
  await session1.Protocol.Runtime.evaluate({expression: 'console.log(2)'});

  InspectorTest.log('Error in setTimeout 1');
  await session1.Protocol.Runtime.evaluate({expression: 'setTimeout(() => console.error("a"), 0)'});
  await InspectorTest.waitForPendingTasks();

  InspectorTest.log('Logging in setTimeout 2');
  await session2.Protocol.Runtime.evaluate({expression: 'setTimeout(() => console.log("b"), 0)'});
  await InspectorTest.waitForPendingTasks();

  InspectorTest.completeTest();
})();