diff --git a/src/vs/vscode.proposed.d.ts b/src/vs/vscode.proposed.d.ts index 1a431a05af7..469ccb7db19 100644 --- a/src/vs/vscode.proposed.d.ts +++ b/src/vs/vscode.proposed.d.ts @@ -2754,4 +2754,15 @@ declare module 'vscode' { } //#endregion + + //#region https://github.com/microsoft/vscode/issues/129053 + + export namespace env { + /** + * The environment in which the app is embedded in. i.e. Desktop, Codespaces, Web. + */ + export const embedderIdentifier: string; + } + + //#endregion } diff --git a/src/vs/workbench/api/common/extHost.api.impl.ts b/src/vs/workbench/api/common/extHost.api.impl.ts index bad876b57ff..151eb40e757 100644 --- a/src/vs/workbench/api/common/extHost.api.impl.ts +++ b/src/vs/workbench/api/common/extHost.api.impl.ts @@ -292,6 +292,7 @@ export function createApiFactoryAndRegisterActors(accessor: ServicesAccessor): I get language() { return initData.environment.appLanguage; }, get appName() { return initData.environment.appName; }, get appRoot() { return initData.environment.appRoot?.fsPath ?? ''; }, + get embedderIdentifier() { return initData.environment.embedderIdentifier; }, get uriScheme() { return initData.environment.appUriScheme; }, get clipboard(): vscode.Clipboard { return extHostClipboard.value; }, get shell() { diff --git a/src/vs/workbench/api/common/extHost.protocol.ts b/src/vs/workbench/api/common/extHost.protocol.ts index a97484b7f56..80c99f0707c 100644 --- a/src/vs/workbench/api/common/extHost.protocol.ts +++ b/src/vs/workbench/api/common/extHost.protocol.ts @@ -72,6 +72,7 @@ import { ILanguageStatus } from 'vs/editor/common/services/languageStatusService export interface IEnvironment { isExtensionDevelopmentDebug: boolean; appName: string; + embedderIdentifier: string; appRoot?: URI; appLanguage: string; appUriScheme: string; diff --git a/src/vs/workbench/services/extensions/browser/webWorkerExtensionHost.ts b/src/vs/workbench/services/extensions/browser/webWorkerExtensionHost.ts index 4c005a12a7c..8869a8bcda4 100644 --- a/src/vs/workbench/services/extensions/browser/webWorkerExtensionHost.ts +++ b/src/vs/workbench/services/extensions/browser/webWorkerExtensionHost.ts @@ -375,6 +375,7 @@ export class WebWorkerExtensionHost extends Disposable implements IExtensionHost environment: { isExtensionDevelopmentDebug: this._environmentService.debugRenderer, appName: this._productService.nameLong, + embedderIdentifier: this._productService.embedderIdentifier || 'web', appUriScheme: this._productService.urlProtocol, appLanguage: platform.language, extensionDevelopmentLocationURI: this._environmentService.extensionDevelopmentLocationURI, diff --git a/src/vs/workbench/services/extensions/common/remoteExtensionHost.ts b/src/vs/workbench/services/extensions/common/remoteExtensionHost.ts index d238526f526..792273fe1ee 100644 --- a/src/vs/workbench/services/extensions/common/remoteExtensionHost.ts +++ b/src/vs/workbench/services/extensions/common/remoteExtensionHost.ts @@ -230,6 +230,7 @@ export class RemoteExtensionHost extends Disposable implements IExtensionHost { isExtensionDevelopmentDebug, appRoot: remoteInitData.appRoot, appName: this._productService.nameLong, + embedderIdentifier: this._productService.embedderIdentifier || 'desktop', appUriScheme: this._productService.urlProtocol, appLanguage: platform.language, extensionDevelopmentLocationURI: this._environmentService.extensionDevelopmentLocationURI, diff --git a/src/vs/workbench/services/extensions/electron-browser/localProcessExtensionHost.ts b/src/vs/workbench/services/extensions/electron-browser/localProcessExtensionHost.ts index e4ca4d6a380..31c18783080 100644 --- a/src/vs/workbench/services/extensions/electron-browser/localProcessExtensionHost.ts +++ b/src/vs/workbench/services/extensions/electron-browser/localProcessExtensionHost.ts @@ -470,6 +470,7 @@ export class LocalProcessExtensionHost implements IExtensionHost { isExtensionDevelopmentDebug: this._isExtensionDevDebug, appRoot: this._environmentService.appRoot ? URI.file(this._environmentService.appRoot) : undefined, appName: this._productService.nameLong, + embedderIdentifier: this._productService.embedderIdentifier || 'desktop', appUriScheme: this._productService.urlProtocol, appLanguage: platform.language, extensionDevelopmentLocationURI: this._environmentService.extensionDevelopmentLocationURI,