Skip to content

Commit dc9ef0d

Browse files
committed
Make sure the renderer received $onWillActivateExtension before proceeding to load extension code
1 parent 2eb81bd commit dc9ef0d

3 files changed

Lines changed: 11 additions & 4 deletions

File tree

src/vs/workbench/api/browser/mainThreadExtensionService.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ export class MainThreadExtensionService implements MainThreadExtensionServiceSha
5050
$activateExtension(extensionId: ExtensionIdentifier, reason: ExtensionActivationReason): Promise<void> {
5151
return this._extensionService._activateById(extensionId, reason);
5252
}
53-
$onWillActivateExtension(extensionId: ExtensionIdentifier): void {
53+
async $onWillActivateExtension(extensionId: ExtensionIdentifier): Promise<void> {
5454
this._extensionService._onWillActivateExtension(extensionId);
5555
}
5656
$onDidActivateExtension(extensionId: ExtensionIdentifier, codeLoadingTime: number, activateCallTime: number, activateResolvedTime: number, activationReason: ExtensionActivationReason): void {

src/vs/workbench/api/common/extHost.protocol.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -830,7 +830,7 @@ export interface MainThreadTaskShape extends IDisposable {
830830

831831
export interface MainThreadExtensionServiceShape extends IDisposable {
832832
$activateExtension(extensionId: ExtensionIdentifier, reason: ExtensionActivationReason): Promise<void>;
833-
$onWillActivateExtension(extensionId: ExtensionIdentifier): void;
833+
$onWillActivateExtension(extensionId: ExtensionIdentifier): Promise<void>;
834834
$onDidActivateExtension(extensionId: ExtensionIdentifier, codeLoadingTime: number, activateCallTime: number, activateResolvedTime: number, activationReason: ExtensionActivationReason): void;
835835
$onExtensionActivationError(extensionId: ExtensionIdentifier, error: ExtensionActivationError): Promise<void>;
836836
$onExtensionRuntimeError(extensionId: ExtensionIdentifier, error: SerializedError): void;

src/vs/workbench/api/common/extHostExtensionService.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -303,8 +303,15 @@ export abstract class AbstractExtHostExtensionService extends Disposable impleme
303303

304304
// --- impl
305305

306-
private _activateExtension(extensionDescription: IExtensionDescription, reason: ExtensionActivationReason): Promise<ActivatedExtension> {
307-
this._mainThreadExtensionsProxy.$onWillActivateExtension(extensionDescription.identifier);
306+
private async _activateExtension(extensionDescription: IExtensionDescription, reason: ExtensionActivationReason): Promise<ActivatedExtension> {
307+
if (!this._initData.remote.isRemote) {
308+
// local extension host process
309+
await this._mainThreadExtensionsProxy.$onWillActivateExtension(extensionDescription.identifier);
310+
} else {
311+
// remote extension host process
312+
// do not wait for renderer confirmation
313+
this._mainThreadExtensionsProxy.$onWillActivateExtension(extensionDescription.identifier);
314+
}
308315
return this._doActivateExtension(extensionDescription, reason).then((activatedExtension) => {
309316
const activationTimes = activatedExtension.activationTimes;
310317
this._mainThreadExtensionsProxy.$onDidActivateExtension(extensionDescription.identifier, activationTimes.codeLoadingTime, activationTimes.activateCallTime, activationTimes.activateResolvedTime, reason);

0 commit comments

Comments
 (0)