Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/src/vs/base/parts/ipc/test/electron-browser/ipc.mp.test.ts
4780 views
1
/*---------------------------------------------------------------------------------------------
2
* Copyright (c) Microsoft Corporation. All rights reserved.
3
* Licensed under the MIT License. See License.txt in the project root for license information.
4
*--------------------------------------------------------------------------------------------*/
5
6
import assert from 'assert';
7
import { Client as MessagePortClient } from '../../browser/ipc.mp.js';
8
import { ensureNoDisposablesAreLeakedInTestSuite } from '../../../../test/common/utils.js';
9
10
suite('IPC, MessagePorts', () => {
11
12
test('message port close event', async () => {
13
const { port1, port2 } = new MessageChannel();
14
15
const client1 = new MessagePortClient(port1, 'client1');
16
const client2 = new MessagePortClient(port2, 'client2');
17
18
// This test ensures that Electron's API for the close event
19
// does not break because we rely on it to dispose client
20
// connections from the server.
21
//
22
// This event is not provided by browser MessagePort API though.
23
const whenClosed = new Promise<boolean>(resolve => port1.addEventListener('close', () => resolve(true)));
24
25
client2.dispose();
26
27
assert.ok(await whenClosed);
28
29
client1.dispose();
30
});
31
32
ensureNoDisposablesAreLeakedInTestSuite();
33
});
34
35