// 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('Checks createContext().'); var executionContextIds = new Set(); var contextGroup1 = new InspectorTest.ContextGroup(); var session1 = contextGroup1.connect(); setup(session1); var contextGroup2 = new InspectorTest.ContextGroup(); var session2 = contextGroup2.connect(); setup(session2); session1.Protocol.Runtime.enable() .then(() => session2.Protocol.Runtime.enable({})) .then(() => session1.Protocol.Debugger.enable()) .then(() => session2.Protocol.Debugger.enable({})) .then(InspectorTest.logMessage) .then(() => { session1.Protocol.Runtime.evaluate({ expression: 'debugger;' }); session2.Protocol.Runtime.evaluate({expression: 'setTimeout(x => x * 2, 0)'}); session1.Protocol.Runtime.evaluate({ expression: 'setTimeout(x => x * 3, 0)' }); }) .then(() => InspectorTest.waitForPendingTasks()) .then(() => { InspectorTest.log(`Reported script's execution id: ${executionContextIds.size}`); executionContextIds.clear(); }) .then(() => session1.reconnect()) .then(() => session2.reconnect()) .then(() => { session1.Protocol.Runtime.evaluate({ expression: 'debugger;' }) session2.Protocol.Runtime.evaluate({ expression: 'setTimeout(x => x * 2, 0)' }); session1.Protocol.Runtime.evaluate({ expression: 'setTimeout(x => x * 3, 0)' }); }) .then(() => InspectorTest.waitForPendingTasks()) .then(() => session2.Protocol.Debugger.disable({})) .then(() => session1.Protocol.Debugger.disable({})) .then(() => InspectorTest.log(`Reported script's execution id: ${executionContextIds.size}`)) .then(InspectorTest.completeTest); function setup(session) { session.Protocol.Runtime.onExecutionContextCreated(InspectorTest.logMessage); session.setupScriptMap(); session.Protocol.Debugger.onPaused((message) => { session.logSourceLocation(message.params.callFrames[0].location); session.Protocol.Debugger.stepOut(); }); session.Protocol.Debugger.onScriptParsed(message => executionContextIds.add(message.params.executionContextId)); }