v8/test/inspector/runtime/run-if-waiting-for-debugger.js
Andrey Kosyakov aa684004d0 DevTools: use a barrier to sync runIfWaitingForDebugger from multiple sessions
This introduces a barrier that ensures that
`V8InspectorClient::runIfWaitingForDebugger()` is only invoked once all
sessions that requested a paused have invoked runIfWaitingForDebugger.

Downstream change: https://chromium-review.googlesource.com/c/chromium/src/+/3977348

Bug: chromium:1352175
Change-Id: I9049c2de6da8e690ad4312cd6cb799619125bb62
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3976353
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Andrey Kosyakov <caseq@chromium.org>
Cr-Commit-Position: refs/heads/main@{#84191}
2022-11-10 20:23:01 +00:00

36 lines
1.3 KiB
JavaScript

// Copyright 2022 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.runAsyncTestSuite([
async function testTwoSessions() {
InspectorTest.log('Tests Runtime.runIfWaitingForDebugger');
const contextGroup = new InspectorTest.ContextGroup();
const resumed = contextGroup.waitForDebugger().then(() => InspectorTest.log('execution resumed'));
const session1 = contextGroup.connect();
const session2 = contextGroup.connect();
await session1.Protocol.Runtime.runIfWaitingForDebugger();
InspectorTest.log('session 1 resumed');
await session2.Protocol.Runtime.runIfWaitingForDebugger();
InspectorTest.log('session 2 resumed');
await resumed;
},
async function testSessionDisconnect() {
InspectorTest.log('Tests Runtime.runIfWaitingForDebugger');
const contextGroup = new InspectorTest.ContextGroup();
const resumed = contextGroup.waitForDebugger().then(() => InspectorTest.log('execution resumed'));
const session1 = contextGroup.connect();
const session2 = contextGroup.connect();
await session1.Protocol.Runtime.runIfWaitingForDebugger();
InspectorTest.log('session 1 resumed');
session2.disconnect();
InspectorTest.log('session 2 disconnected');
await resumed;
}
]);