mirror of
https://github.com/microsoft/vscode.git
synced 2026-04-24 18:49:00 +01:00
ipc api: MessagePort.start() needs to be called, so events start flowing
This commit is contained in:
@@ -102,6 +102,7 @@ export interface MessagePortLike {
|
||||
postMessage(message: any, transfer?: any[]): void;
|
||||
addEventListener(type: 'message', listener: (e: any) => any): void;
|
||||
removeEventListener(type: 'message', listener: (e: any) => any): void;
|
||||
start(): void;
|
||||
}
|
||||
|
||||
export interface IInitData {
|
||||
|
||||
@@ -424,6 +424,7 @@ export abstract class AbstractExtHostExtensionService extends Disposable impleme
|
||||
const that = this;
|
||||
let extension: vscode.Extension<any> | undefined;
|
||||
|
||||
let messagePassingProtocol: vscode.MessagePassingProtocol | undefined;
|
||||
const messagePort = isProposedApiEnabled(extensionDescription, 'ipc')
|
||||
? this._initData.messagePorts?.get(ExtensionIdentifier.toKey(extensionDescription.identifier))
|
||||
: undefined;
|
||||
@@ -454,9 +455,21 @@ export abstract class AbstractExtHostExtensionService extends Disposable impleme
|
||||
return that.extensionRuntime;
|
||||
},
|
||||
get environmentVariableCollection() { return that._extHostTerminalService.getEnvironmentVariableCollection(extensionDescription); },
|
||||
messagePassingProtocol: messagePort && {
|
||||
onDidReceiveMessage: Event.fromDOMEventEmitter(messagePort, 'message', e => e.data),
|
||||
postMessage: messagePort.postMessage.bind(messagePort) as any
|
||||
get messagePassingProtocol() {
|
||||
if (!messagePassingProtocol) {
|
||||
if (!messagePort) {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
const onDidReceiveMessage = Event.buffer(Event.fromDOMEventEmitter(messagePort, 'message', e => e.data));
|
||||
messagePort.start();
|
||||
messagePassingProtocol = {
|
||||
onDidReceiveMessage,
|
||||
postMessage: messagePort.postMessage.bind(messagePort) as any
|
||||
};
|
||||
}
|
||||
|
||||
return messagePassingProtocol;
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user