diff --git a/.eslintrc.json b/.eslintrc.json index 06eeba25e8d..9154bc2f60b 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -322,7 +322,6 @@ "vs/editor/~", "vs/editor/contrib/*/~", "vs/workbench/~", - "vs/workbench/api/~", "vs/workbench/services/*/~", { "when": "test", "pattern": "vs/workbench/contrib/*/~" }, // TODO@layers "tas-client-umd", // node module allowed even in /common/ diff --git a/src/vs/workbench/api/browser/mainThreadExtensionService.ts b/src/vs/workbench/api/browser/mainThreadExtensionService.ts index efe0a38d024..a7d7d850745 100644 --- a/src/vs/workbench/api/browser/mainThreadExtensionService.ts +++ b/src/vs/workbench/api/browser/mainThreadExtensionService.ts @@ -44,10 +44,13 @@ export class MainThreadExtensionService implements MainThreadExtensionServiceSha @IWorkbenchEnvironmentService protected readonly _environmentService: IWorkbenchEnvironmentService, ) { this._extensionHostKind = extHostContext.extensionHostKind; - this._internalExtensionService = (extHostContext).internalExtensionService; - (extHostContext)._setExtensionHostProxy( + + const internalExtHostContext = (extHostContext); + this._internalExtensionService = internalExtHostContext.internalExtensionService; + internalExtHostContext._setExtensionHostProxy( new ExtensionHostProxy(extHostContext.getProxy(ExtHostContext.ExtHostExtensionService)) ); + internalExtHostContext._setAllMainProxyIdentifiers(Object.keys(MainContext).map((key) => (MainContext)[key])); } public dispose(): void { diff --git a/src/vs/workbench/services/extensions/common/extHostCustomers.ts b/src/vs/workbench/services/extensions/common/extHostCustomers.ts index d33ba1a9ce8..a7d30a680e0 100644 --- a/src/vs/workbench/services/extensions/common/extHostCustomers.ts +++ b/src/vs/workbench/services/extensions/common/extHostCustomers.ts @@ -17,6 +17,7 @@ export interface IExtHostContext extends IRPCProtocol { export interface IInternalExtHostContext extends IExtHostContext { readonly internalExtensionService: IInternalExtensionService; _setExtensionHostProxy(extensionHostProxy: IExtensionHostProxy): void; + _setAllMainProxyIdentifiers(mainProxyIdentifiers: ProxyIdentifier[]): void; } export type IExtHostNamedCustomer = [ProxyIdentifier, IExtHostCustomerCtor]; diff --git a/src/vs/workbench/services/extensions/common/extensionHostManager.ts b/src/vs/workbench/services/extensions/common/extensionHostManager.ts index 8e1664e9c99..9e0dc443f4c 100644 --- a/src/vs/workbench/services/extensions/common/extensionHostManager.ts +++ b/src/vs/workbench/services/extensions/common/extensionHostManager.ts @@ -10,7 +10,6 @@ import { IMessagePassingProtocol } from 'vs/base/parts/ipc/common/ipc'; import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/common/environmentService'; import { IInstantiationService, ServicesAccessor } from 'vs/platform/instantiation/common/instantiation'; import { ExtHostCustomersRegistry, IInternalExtHostContext } from 'vs/workbench/services/extensions/common/extHostCustomers'; -import { MainContext } from 'vs/workbench/api/common/extHost.protocol'; import { Proxied, ProxyIdentifier } from 'vs/workbench/services/extensions/common/proxyIdentifier'; import { IRPCProtocolLogger, RPCProtocol, RequestInitiator, ResponsiveState } from 'vs/workbench/services/extensions/common/rpcProtocol'; import { RemoteAuthorityResolverError, ResolverResult } from 'vs/platform/remote/common/remoteAuthorityResolver'; @@ -261,6 +260,7 @@ class ExtensionHostManager extends Disposable implements IExtensionHostManager { this._rpcProtocol = new RPCProtocol(protocol, logger); this._register(this._rpcProtocol.onDidChangeResponsiveState((responsiveState: ResponsiveState) => this._onDidChangeResponsiveState.fire(responsiveState))); let extensionHostProxy: IExtensionHostProxy | null = null as IExtensionHostProxy | null; + let mainProxyIdentifiers: ProxyIdentifier[] = []; const extHostContext: IInternalExtHostContext = { remoteAuthority: this._extensionHost.remoteAuthority, extensionHostKind: this.kind, @@ -274,6 +274,9 @@ class ExtensionHostManager extends Disposable implements IExtensionHostManager { _setExtensionHostProxy: (value: IExtensionHostProxy): void => { extensionHostProxy = value; }, + _setAllMainProxyIdentifiers: (value: ProxyIdentifier[]): void => { + mainProxyIdentifiers = value; + }, //#endregion }; @@ -298,8 +301,7 @@ class ExtensionHostManager extends Disposable implements IExtensionHostManager { } // Check that no named customers are missing - const expected: ProxyIdentifier[] = Object.keys(MainContext).map((key) => (MainContext)[key]); - this._rpcProtocol.assertRegistered(expected); + this._rpcProtocol.assertRegistered(mainProxyIdentifiers); return extensionHostProxy; }