Skip to content

Commit f8effd5

Browse files
author
Benjamin Pasero
committed
api - introduce env.uiKind (web, desktop)
1 parent 3fd9684 commit f8effd5

7 files changed

Lines changed: 55 additions & 6 deletions

File tree

extensions/vscode-api-tests/src/singlefolder-tests/env.test.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
*--------------------------------------------------------------------------------------------*/
55

66
import * as assert from 'assert';
7-
import { env, extensions, ExtensionKind } from 'vscode';
7+
import { env, extensions, ExtensionKind, UIKind } from 'vscode';
88

99
suite('env-namespace', () => {
1010

@@ -44,4 +44,9 @@ suite('env-namespace', () => {
4444
assert.fail();
4545
}
4646
});
47+
48+
test('env.uiKind', function () {
49+
const kind = env.uiKind;
50+
assert.equal(kind, UIKind.Desktop);
51+
});
4752
});

src/vs/vscode.proposed.d.ts

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1011,6 +1011,36 @@ declare module 'vscode' {
10111011

10121012
//#endregion
10131013

1014+
// #region Ben - UIKind
1015+
1016+
/**
1017+
* Possible kinds of UI that can use extensions.
1018+
*/
1019+
export enum UIKind {
1020+
1021+
/**
1022+
* Extensions are accessed from a desktop application.
1023+
*/
1024+
Desktop = 1,
1025+
1026+
/**
1027+
* Extensions are accessed from a web browser.
1028+
*/
1029+
Web = 2
1030+
}
1031+
1032+
export namespace env {
1033+
1034+
/**
1035+
* The UI kind property indicates from which UI extensions
1036+
* are accessed from. For example, extensions could be accessed
1037+
* from a desktop application or a web browser.
1038+
*/
1039+
export const uiKind: UIKind;
1040+
}
1041+
1042+
//#endregion
1043+
10141044
//#region Custom editors, mjbvz
10151045

10161046
export enum WebviewEditorState {

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

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import { OverviewRulerLane } from 'vs/editor/common/model';
1515
import * as languageConfiguration from 'vs/editor/common/modes/languageConfiguration';
1616
import { score } from 'vs/editor/common/modes/languageSelector';
1717
import * as files from 'vs/platform/files/common/files';
18-
import { ExtHostContext, MainContext, ExtHostLogServiceShape } from 'vs/workbench/api/common/extHost.protocol';
18+
import { ExtHostContext, MainContext, ExtHostLogServiceShape, UIKind } from 'vs/workbench/api/common/extHost.protocol';
1919
import { ExtHostApiCommands } from 'vs/workbench/api/common/extHostApiCommands';
2020
import { ExtHostClipboard } from 'vs/workbench/api/common/extHostClipboard';
2121
import { IExtHostCommands } from 'vs/workbench/api/common/extHostCommands';
@@ -250,6 +250,10 @@ export function createApiFactoryAndRegisterActors(accessor: ServicesAccessor): I
250250
},
251251
get remoteName() {
252252
return getRemoteName(initData.remote.authority);
253+
},
254+
get uiKind() {
255+
checkProposedApiEnabled(extension);
256+
return initData.uiKind;
253257
}
254258
};
255259
if (!initData.environment.extensionTestsLocationURI) {
@@ -898,6 +902,7 @@ export function createApiFactoryAndRegisterActors(accessor: ServicesAccessor): I
898902
CallHierarchyItem: extHostTypes.CallHierarchyItem,
899903
Decoration: extHostTypes.Decoration,
900904
WebviewEditorState: extHostTypes.WebviewEditorState,
905+
UIKind: UIKind
901906
};
902907
};
903908
}

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ export interface IInitData {
8787
logsLocation: URI;
8888
autoStart: boolean;
8989
remote: { isRemote: boolean; authority: string | undefined; };
90+
uiKind: UIKind;
9091
}
9192

9293
export interface IConfigurationInitData extends IConfigurationData {
@@ -105,6 +106,11 @@ export interface IExtHostContext extends IRPCProtocol {
105106
export interface IMainContext extends IRPCProtocol {
106107
}
107108

109+
export enum UIKind {
110+
Desktop = 1,
111+
Web = 2
112+
}
113+
108114
// --- main thread
109115

110116
export interface MainThreadClipboardShape extends IDisposable {

src/vs/workbench/services/extensions/browser/webWorkerExtensionHostStarter.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import { DisposableStore, toDisposable } from 'vs/base/common/lifecycle';
99
import { IMessagePassingProtocol } from 'vs/base/parts/ipc/common/ipc';
1010
import { VSBuffer } from 'vs/base/common/buffer';
1111
import { createMessageOfType, MessageType, isMessageOfType } from 'vs/workbench/services/extensions/common/extensionHostProtocol';
12-
import { IInitData } from 'vs/workbench/api/common/extHost.protocol';
12+
import { IInitData, UIKind } from 'vs/workbench/api/common/extHost.protocol';
1313
import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
1414
import { IWorkspaceContextService, WorkbenchState } from 'vs/platform/workspace/common/workspace';
1515
import { ILabelService } from 'vs/platform/label/common/label';
@@ -150,6 +150,7 @@ export class WebWorkerExtensionHostStarter implements IExtensionHostStarter {
150150
authority: this._environmentService.configuration.remoteAuthority,
151151
isRemote: false
152152
},
153+
uiKind: platform.isWeb ? UIKind.Web : UIKind.Desktop
153154
};
154155
}
155156
}

src/vs/workbench/services/extensions/common/remoteExtensionHostClient.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import { ILogService } from 'vs/platform/log/common/log';
1111
import { connectRemoteAgentExtensionHost, IRemoteExtensionHostStartParams, IConnectionOptions, ISocketFactory } from 'vs/platform/remote/common/remoteAgentConnection';
1212
import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
1313
import { IWorkspaceContextService, WorkbenchState } from 'vs/platform/workspace/common/workspace';
14-
import { IInitData } from 'vs/workbench/api/common/extHost.protocol';
14+
import { IInitData, UIKind } from 'vs/workbench/api/common/extHost.protocol';
1515
import { MessageType, createMessageOfType, isMessageOfType } from 'vs/workbench/services/extensions/common/extensionHostProtocol';
1616
import { IExtensionHostStarter } from 'vs/workbench/services/extensions/common/extensions';
1717
import { parseExtensionDevOptions } from 'vs/workbench/services/extensions/common/extensionDevOptions';
@@ -215,6 +215,7 @@ export class RemoteExtensionHostClient extends Disposable implements IExtensionH
215215
logLevel: this._logService.getLevel(),
216216
logsLocation: remoteExtensionHostData.extensionHostLogsPath,
217217
autoStart: true,
218+
uiKind: platform.isWeb ? UIKind.Web : UIKind.Desktop
218219
};
219220
return r;
220221
});

src/vs/workbench/services/extensions/electron-browser/extensionHost.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ import { INotificationService, Severity } from 'vs/platform/notification/common/
2929
import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
3030
import { IWindowService, IWindowsService } from 'vs/platform/windows/common/windows';
3131
import { IWorkspaceContextService, WorkbenchState } from 'vs/platform/workspace/common/workspace';
32-
import { IInitData } from 'vs/workbench/api/common/extHost.protocol';
32+
import { IInitData, UIKind } from 'vs/workbench/api/common/extHost.protocol';
3333
import { MessageType, createMessageOfType, isMessageOfType } from 'vs/workbench/services/extensions/common/extensionHostProtocol';
3434
import { withNullAsUndefined } from 'vs/base/common/types';
3535
import { IExtensionDescription } from 'vs/platform/extensions/common/extensions';
@@ -420,7 +420,8 @@ export class ExtensionHostProcessWorker implements IExtensionHostStarter {
420420
telemetryInfo,
421421
logLevel: this._logService.getLevel(),
422422
logsLocation: this._extensionHostLogsLocation,
423-
autoStart: this._autoStart
423+
autoStart: this._autoStart,
424+
uiKind: UIKind.Desktop
424425
};
425426
return r;
426427
});

0 commit comments

Comments
 (0)