Skip to content

Commit a0ed4eb

Browse files
authored
Disallow interactive session/editor API in stable VS Code (microsoft#178086)
1 parent 06fb8fd commit a0ed4eb

File tree

3 files changed

+29
-1
lines changed

3 files changed

+29
-1
lines changed

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ import { IUriIdentityService } from 'vs/platform/uriIdentity/common/uriIdentity'
99
import { reviveWorkspaceEditDto } from 'vs/workbench/api/browser/mainThreadBulkEdits';
1010
import { ExtHostContext, ExtHostInteractiveEditorShape, MainContext, MainThreadInteractiveEditorShape } from 'vs/workbench/api/common/extHost.protocol';
1111
import { IExtHostContext, extHostNamedCustomer } from 'vs/workbench/services/extensions/common/extHostCustomers';
12+
import { IProductService } from 'vs/platform/product/common/productService';
13+
import { ILogService } from 'vs/platform/log/common/log';
1214

1315
@extHostNamedCustomer(MainContext.MainThreadInteractiveEditor)
1416
export class MainThreadInteractiveEditor implements MainThreadInteractiveEditorShape {
@@ -20,6 +22,8 @@ export class MainThreadInteractiveEditor implements MainThreadInteractiveEditorS
2022
extHostContext: IExtHostContext,
2123
@IInteractiveEditorService private readonly _interactiveEditorService: IInteractiveEditorService,
2224
@IUriIdentityService private readonly _uriIdentService: IUriIdentityService,
25+
@IProductService private readonly productService: IProductService,
26+
@ILogService private readonly logService: ILogService,
2327
) {
2428
this._proxy = extHostContext.getProxy(ExtHostContext.ExtHostInteractiveEditor);
2529
}
@@ -29,6 +33,11 @@ export class MainThreadInteractiveEditor implements MainThreadInteractiveEditorS
2933
}
3034

3135
async $registerInteractiveEditorProvider(handle: number, debugName: string, supportsFeedback: boolean): Promise<void> {
36+
if (this.productService.quality === 'stable') {
37+
this.logService.trace(`The interactive editor API is not supported in stable VS Code.`);
38+
return;
39+
}
40+
3241
const unreg = this._interactiveEditorService.addProvider({
3342
debugName,
3443
prepareInteractiveEditorSession: async (model, range, token) => {

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55

66
import { Disposable, DisposableMap } from 'vs/base/common/lifecycle';
77
import { URI } from 'vs/base/common/uri';
8+
import { ILogService } from 'vs/platform/log/common/log';
9+
import { IProductService } from 'vs/platform/product/common/productService';
810
import { ExtHostContext, ExtHostInteractiveSessionShape, IInteractiveRequestDto, MainContext, MainThreadInteractiveSessionShape } from 'vs/workbench/api/common/extHost.protocol';
911
import { IInteractiveSessionContributionService } from 'vs/workbench/contrib/interactiveSession/common/interactiveSessionContributionService';
1012
import { IInteractiveProgress, IInteractiveRequest, IInteractiveResponse, IInteractiveSession, IInteractiveSessionDynamicRequest, IInteractiveSessionService } from 'vs/workbench/contrib/interactiveSession/common/interactiveSessionService';
@@ -22,6 +24,8 @@ export class MainThreadInteractiveSession extends Disposable implements MainThre
2224
extHostContext: IExtHostContext,
2325
@IInteractiveSessionService private readonly _interactiveSessionService: IInteractiveSessionService,
2426
@IInteractiveSessionContributionService private readonly interactiveSessionContribService: IInteractiveSessionContributionService,
27+
@IProductService private readonly productService: IProductService,
28+
@ILogService private readonly logService: ILogService,
2529
) {
2630
super();
2731
this._proxy = extHostContext.getProxy(ExtHostContext.ExtHostInteractiveSession);
@@ -32,6 +36,11 @@ export class MainThreadInteractiveSession extends Disposable implements MainThre
3236
}
3337

3438
async $registerInteractiveSessionProvider(handle: number, id: string, implementsProgress: boolean): Promise<void> {
39+
if (this.productService.quality === 'stable') {
40+
this.logService.trace(`The interactive session API is not supported in stable VS Code.`);
41+
return;
42+
}
43+
3544
const registration = this.interactiveSessionContribService.registeredProviders.find(staticProvider => staticProvider.id === id);
3645
if (!registration) {
3746
throw new Error(`Provider ${id} must be declared in the package.json.`);

src/vs/workbench/contrib/interactiveSession/browser/interactiveSessionContributionServiceImpl.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ import { registerAction2 } from 'vs/platform/actions/common/actions';
1111
import { ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey';
1212
import { IRelaxedExtensionDescription } from 'vs/platform/extensions/common/extensions';
1313
import { SyncDescriptor } from 'vs/platform/instantiation/common/descriptors';
14+
import { ILogService } from 'vs/platform/log/common/log';
15+
import { IProductService } from 'vs/platform/product/common/productService';
1416
import { Registry } from 'vs/platform/registry/common/platform';
1517
import { ViewPaneContainer } from 'vs/workbench/browser/parts/views/viewPaneContainer';
1618
import { IViewContainersRegistry, IViewDescriptor, IViewsRegistry, ViewContainer, ViewContainerLocation, Extensions as ViewExtensions } from 'vs/workbench/common/views';
@@ -62,8 +64,16 @@ export class InteractiveSessionContributionService implements IInteractiveSessio
6264
private _registrationDisposables = new Map<string, IDisposable>();
6365
private _registeredProviders = new Map<string, IInteractiveSessionProviderContribution>();
6466

65-
constructor() {
67+
constructor(
68+
@IProductService productService: IProductService,
69+
@ILogService logService: ILogService,
70+
) {
6671
interactiveSessionExtensionPoint.setHandler((extensions, delta) => {
72+
if (productService.quality === 'stable') {
73+
logService.trace(`InteractiveSessionContributionService#setHandler: the interactiveSession extension point is not available in stable VS Code.`);
74+
return;
75+
}
76+
6777
for (const extension of delta.added) {
6878
const extensionDisposable = new DisposableStore();
6979
for (const providerDescriptor of extension.value) {

0 commit comments

Comments
 (0)