diff options
Diffstat (limited to 'src/vs/workbench')
9 files changed, 57 insertions, 40 deletions
diff --git a/src/vs/workbench/contrib/extensions/browser/extensionsWorkbenchService.ts b/src/vs/workbench/contrib/extensions/browser/extensionsWorkbenchService.ts index df347fe1e84..e23dee80a2c 100644 --- a/src/vs/workbench/contrib/extensions/browser/extensionsWorkbenchService.ts +++ b/src/vs/workbench/contrib/extensions/browser/extensionsWorkbenchService.ts @@ -433,7 +433,7 @@ class Extensions extends Disposable { super(); this._register(server.extensionManagementService.onInstallExtension(e => this.onInstallExtension(e))); this._register(server.extensionManagementService.onDidInstallExtensions(e => this.onDidInstallExtensions(e))); - this._register(server.extensionManagementService.onUninstallExtension(e => this.onUninstallExtension(e))); + this._register(server.extensionManagementService.onUninstallExtension(e => this.onUninstallExtension(e.identifier))); this._register(server.extensionManagementService.onDidUninstallExtension(e => this.onDidUninstallExtension(e))); this._register(extensionEnablementService.onEnablementChanged(e => this.onEnablementChanged(e))); } diff --git a/src/vs/workbench/contrib/extensions/test/electron-browser/extensionRecommendationsService.test.ts b/src/vs/workbench/contrib/extensions/test/electron-browser/extensionRecommendationsService.test.ts index e17bb60de12..6040e37a790 100644 --- a/src/vs/workbench/contrib/extensions/test/electron-browser/extensionRecommendationsService.test.ts +++ b/src/vs/workbench/contrib/extensions/test/electron-browser/extensionRecommendationsService.test.ts @@ -8,7 +8,7 @@ import * as assert from 'assert'; import * as uuid from 'vs/base/common/uuid'; import { IExtensionGalleryService, IGalleryExtensionAssets, IGalleryExtension, IExtensionManagementService, - DidUninstallExtensionEvent, InstallExtensionEvent, IExtensionIdentifier, IExtensionTipsService, InstallExtensionResult, getTargetPlatform + DidUninstallExtensionEvent, InstallExtensionEvent, IExtensionTipsService, InstallExtensionResult, getTargetPlatform, UninstallExtensionEvent } from 'vs/platform/extensionManagement/common/extensionManagement'; import { IWorkbenchExtensionEnablementService } from 'vs/workbench/services/extensionManagement/common/extensionManagement'; import { ExtensionGalleryService } from 'vs/platform/extensionManagement/common/extensionGalleryService'; @@ -191,7 +191,7 @@ suite('ExtensionRecommendationsService Test', () => { let testObject: ExtensionRecommendationsService; let installEvent: Emitter<InstallExtensionEvent>, didInstallEvent: Emitter<readonly InstallExtensionResult[]>, - uninstallEvent: Emitter<IExtensionIdentifier>, + uninstallEvent: Emitter<UninstallExtensionEvent>, didUninstallEvent: Emitter<DidUninstallExtensionEvent>; let prompted: boolean; const promptedEmitter = new Emitter<void>(); @@ -202,7 +202,7 @@ suite('ExtensionRecommendationsService Test', () => { instantiationService = new TestInstantiationService(); installEvent = new Emitter<InstallExtensionEvent>(); didInstallEvent = new Emitter<readonly InstallExtensionResult[]>(); - uninstallEvent = new Emitter<IExtensionIdentifier>(); + uninstallEvent = new Emitter<UninstallExtensionEvent>(); didUninstallEvent = new Emitter<DidUninstallExtensionEvent>(); instantiationService.stub(IExtensionGalleryService, ExtensionGalleryService); instantiationService.stub(ISharedProcessService, TestSharedProcessService); diff --git a/src/vs/workbench/contrib/extensions/test/electron-browser/extensionsActions.test.ts b/src/vs/workbench/contrib/extensions/test/electron-browser/extensionsActions.test.ts index ad2e86b38ba..5b8e51532ed 100644 --- a/src/vs/workbench/contrib/extensions/test/electron-browser/extensionsActions.test.ts +++ b/src/vs/workbench/contrib/extensions/test/electron-browser/extensionsActions.test.ts @@ -10,7 +10,7 @@ import * as ExtensionsActions from 'vs/workbench/contrib/extensions/browser/exte import { ExtensionsWorkbenchService } from 'vs/workbench/contrib/extensions/browser/extensionsWorkbenchService'; import { IExtensionManagementService, IExtensionGalleryService, ILocalExtension, IGalleryExtension, - DidUninstallExtensionEvent, InstallExtensionEvent, IExtensionIdentifier, InstallOperation, IExtensionTipsService, IGalleryMetadata, InstallExtensionResult, getTargetPlatform, IExtensionsControlManifest + DidUninstallExtensionEvent, InstallExtensionEvent, IExtensionIdentifier, InstallOperation, IExtensionTipsService, IGalleryMetadata, InstallExtensionResult, getTargetPlatform, IExtensionsControlManifest, UninstallExtensionEvent } from 'vs/platform/extensionManagement/common/extensionManagement'; import { IWorkbenchExtensionEnablementService, EnablementState, IExtensionManagementServerService, IExtensionManagementServer, ExtensionInstallLocation, IProfileAwareExtensionManagementService } from 'vs/workbench/services/extensionManagement/common/extensionManagement'; import { IExtensionRecommendationsService } from 'vs/workbench/services/extensionRecommendations/common/extensionRecommendations'; @@ -63,7 +63,7 @@ import { arch } from 'vs/base/common/process'; let instantiationService: TestInstantiationService; let installEvent: Emitter<InstallExtensionEvent>, didInstallEvent: Emitter<readonly InstallExtensionResult[]>, - uninstallEvent: Emitter<IExtensionIdentifier>, + uninstallEvent: Emitter<UninstallExtensionEvent>, didUninstallEvent: Emitter<DidUninstallExtensionEvent>; let disposables: DisposableStore; @@ -72,7 +72,7 @@ async function setupTest() { disposables = new DisposableStore(); installEvent = new Emitter<InstallExtensionEvent>(); didInstallEvent = new Emitter<readonly InstallExtensionResult[]>(); - uninstallEvent = new Emitter<IExtensionIdentifier>(); + uninstallEvent = new Emitter<UninstallExtensionEvent>(); didUninstallEvent = new Emitter<DidUninstallExtensionEvent>(); instantiationService = new TestInstantiationService(); @@ -217,7 +217,7 @@ suite('ExtensionsActions', () => { return instantiationService.get(IExtensionsWorkbenchService).queryLocal() .then(extensions => { - uninstallEvent.fire(local.identifier); + uninstallEvent.fire({ identifier: local.identifier }); didUninstallEvent.fire({ identifier: local.identifier }); testObject.extension = extensions[0]; assert.ok(!testObject.enabled); @@ -232,7 +232,7 @@ suite('ExtensionsActions', () => { return instantiationService.get(IExtensionsWorkbenchService).queryLocal() .then(extensions => { - uninstallEvent.fire(local.identifier); + uninstallEvent.fire({ identifier: local.identifier }); didUninstallEvent.fire({ identifier: local.identifier }); testObject.extension = extensions[0]; assert.ok(!testObject.enabled); @@ -255,7 +255,7 @@ suite('ExtensionsActions', () => { return instantiationService.get(IExtensionsWorkbenchService).queryLocal() .then(extensions => { testObject.extension = extensions[0]; - uninstallEvent.fire(local.identifier); + uninstallEvent.fire({ identifier: local.identifier }); assert.ok(!testObject.enabled); assert.strictEqual('Uninstalling', testObject.label); assert.strictEqual('extension-action label uninstall uninstalling', testObject.class); @@ -518,7 +518,7 @@ suite('ExtensionsActions', () => { return instantiationService.get(IExtensionsWorkbenchService).queryLocal() .then(extensions => { testObject.extension = extensions[0]; - uninstallEvent.fire(local.identifier); + uninstallEvent.fire({ identifier: local.identifier }); assert.ok(!testObject.enabled); assert.strictEqual('extension-action icon manage codicon codicon-extensions-manage', testObject.class); @@ -737,7 +737,7 @@ suite('ExtensionsActions', () => { .then(extensions => { const testObject: ExtensionsActions.EnableDropDownAction = instantiationService.createInstance(ExtensionsActions.EnableDropDownAction); testObject.extension = extensions[0]; - uninstallEvent.fire(local.identifier); + uninstallEvent.fire({ identifier: local.identifier }); assert.ok(!testObject.enabled); }); }); @@ -900,7 +900,7 @@ suite('ExtensionsActions', () => { const testObject: ExtensionsActions.DisableGloballyAction = instantiationService.createInstance(ExtensionsActions.DisableGloballyAction, [{ identifier: new ExtensionIdentifier('pub.a'), extensionLocation: URI.file('pub.a') }]); testObject.extension = extensions[0]; instantiationService.createInstance(ExtensionContainers, [testObject]); - uninstallEvent.fire(local.identifier); + uninstallEvent.fire({ identifier: local.identifier }); assert.ok(!testObject.enabled); }); }); @@ -940,7 +940,7 @@ suite('ReloadAction', () => { const extensions = await instantiationService.get(IExtensionsWorkbenchService).queryLocal(); testObject.extension = extensions[0]; - uninstallEvent.fire(local.identifier); + uninstallEvent.fire({ identifier: local.identifier }); assert.ok(!testObject.enabled); }); @@ -1003,7 +1003,7 @@ suite('ReloadAction', () => { const identifier = gallery.identifier; installEvent.fire({ identifier, source: gallery }); didInstallEvent.fire([{ identifier, source: gallery, operation: InstallOperation.Install, local: aLocalExtension('a', gallery, { identifier }) }]); - uninstallEvent.fire(identifier); + uninstallEvent.fire({ identifier }); didUninstallEvent.fire({ identifier }); assert.ok(!testObject.enabled); @@ -1018,7 +1018,7 @@ suite('ReloadAction', () => { const extensions = await instantiationService.get(IExtensionsWorkbenchService).queryLocal(); testObject.extension = extensions[0]; - uninstallEvent.fire(local.identifier); + uninstallEvent.fire({ identifier: local.identifier }); didUninstallEvent.fire({ identifier: local.identifier }); assert.ok(testObject.enabled); assert.strictEqual(testObject.tooltip, 'Please reload Visual Studio Code to complete the uninstallation of this extension.'); @@ -1038,7 +1038,7 @@ suite('ReloadAction', () => { const extensions = await instantiationService.get(IExtensionsWorkbenchService).queryLocal(); testObject.extension = extensions[0]; - uninstallEvent.fire(local.identifier); + uninstallEvent.fire({ identifier: local.identifier }); didUninstallEvent.fire({ identifier: local.identifier }); assert.ok(!testObject.enabled); }); @@ -1052,7 +1052,7 @@ suite('ReloadAction', () => { const extensions = await instantiationService.get(IExtensionsWorkbenchService).queryLocal(); testObject.extension = extensions[0]; - uninstallEvent.fire(local.identifier); + uninstallEvent.fire({ identifier: local.identifier }); didUninstallEvent.fire({ identifier: local.identifier }); const gallery = aGalleryExtension('a'); @@ -1251,7 +1251,7 @@ suite('ReloadAction', () => { const localExtension = aLocalExtension('a', { extensionKind: ['workspace'] }, { location: URI.file('pub.a') }); const remoteExtension = aLocalExtension('a', { extensionKind: ['workspace'] }, { location: URI.file('pub.a').with({ scheme: Schemas.vscodeRemote }) }); const localExtensionManagementService = createExtensionManagementService([localExtension]); - const uninstallEvent = new Emitter<IExtensionIdentifier>(); + const uninstallEvent = new Emitter<UninstallExtensionEvent>(); const onDidUninstallEvent = new Emitter<{ identifier: IExtensionIdentifier }>(); localExtensionManagementService.onUninstallExtension = uninstallEvent.event; localExtensionManagementService.onDidUninstallExtension = onDidUninstallEvent.event; @@ -1278,7 +1278,7 @@ suite('ReloadAction', () => { assert.ok(testObject.extension); assert.ok(!testObject.enabled); - uninstallEvent.fire(localExtension.identifier); + uninstallEvent.fire({ identifier: localExtension.identifier }); didUninstallEvent.fire({ identifier: localExtension.identifier }); assert.ok(!testObject.enabled); @@ -1797,7 +1797,7 @@ suite('RemoteInstallAction', () => { assert.ok(testObject.enabled); assert.strictEqual('Install in remote', testObject.label); - uninstallEvent.fire(localWorkspaceExtension.identifier); + uninstallEvent.fire({ identifier: localWorkspaceExtension.identifier }); assert.ok(!testObject.enabled); }); @@ -1941,7 +1941,7 @@ suite('RemoteInstallAction', () => { assert.ok(testObject.enabled); assert.strictEqual('Install in remote', testObject.label); - uninstallEvent.fire(languagePackExtension.identifier); + uninstallEvent.fire({ identifier: languagePackExtension.identifier }); assert.ok(!testObject.enabled); }); }); @@ -2208,7 +2208,7 @@ suite('LocalInstallAction', () => { assert.ok(testObject.enabled); assert.strictEqual('Install Locally', testObject.label); - uninstallEvent.fire(remoteUIExtension.identifier); + uninstallEvent.fire({ identifier: remoteUIExtension.identifier }); assert.ok(!testObject.enabled); }); @@ -2331,7 +2331,7 @@ suite('LocalInstallAction', () => { assert.ok(testObject.enabled); assert.strictEqual('Install Locally', testObject.label); - uninstallEvent.fire(languagePackExtension.identifier); + uninstallEvent.fire({ identifier: languagePackExtension.identifier }); assert.ok(!testObject.enabled); }); diff --git a/src/vs/workbench/contrib/extensions/test/electron-browser/extensionsViews.test.ts b/src/vs/workbench/contrib/extensions/test/electron-browser/extensionsViews.test.ts index f7b374b3387..8eeb60477c4 100644 --- a/src/vs/workbench/contrib/extensions/test/electron-browser/extensionsViews.test.ts +++ b/src/vs/workbench/contrib/extensions/test/electron-browser/extensionsViews.test.ts @@ -11,7 +11,7 @@ import { IExtensionsWorkbenchService } from 'vs/workbench/contrib/extensions/com import { ExtensionsWorkbenchService } from 'vs/workbench/contrib/extensions/browser/extensionsWorkbenchService'; import { IExtensionManagementService, IExtensionGalleryService, ILocalExtension, IGalleryExtension, IQueryOptions, - DidUninstallExtensionEvent, InstallExtensionEvent, IExtensionIdentifier, SortBy, InstallExtensionResult, getTargetPlatform, IExtensionInfo + DidUninstallExtensionEvent, InstallExtensionEvent, SortBy, InstallExtensionResult, getTargetPlatform, IExtensionInfo, UninstallExtensionEvent } from 'vs/platform/extensionManagement/common/extensionManagement'; import { IWorkbenchExtensionEnablementService, EnablementState, IExtensionManagementServerService, IExtensionManagementServer, IProfileAwareExtensionManagementService } from 'vs/workbench/services/extensionManagement/common/extensionManagement'; import { IExtensionRecommendationsService, ExtensionRecommendationReason } from 'vs/workbench/services/extensionRecommendations/common/extensionRecommendations'; @@ -54,7 +54,7 @@ suite('ExtensionsListView Tests', () => { let testableView: ExtensionsListView; let installEvent: Emitter<InstallExtensionEvent>, didInstallEvent: Emitter<readonly InstallExtensionResult[]>, - uninstallEvent: Emitter<IExtensionIdentifier>, + uninstallEvent: Emitter<UninstallExtensionEvent>, didUninstallEvent: Emitter<DidUninstallExtensionEvent>; const localEnabledTheme = aLocalExtension('first-enabled-extension', { categories: ['Themes', 'random'] }); @@ -76,7 +76,7 @@ suite('ExtensionsListView Tests', () => { suiteSetup(() => { installEvent = new Emitter<InstallExtensionEvent>(); didInstallEvent = new Emitter<readonly InstallExtensionResult[]>(); - uninstallEvent = new Emitter<IExtensionIdentifier>(); + uninstallEvent = new Emitter<UninstallExtensionEvent>(); didUninstallEvent = new Emitter<DidUninstallExtensionEvent>(); instantiationService = new TestInstantiationService(); diff --git a/src/vs/workbench/contrib/extensions/test/electron-browser/extensionsWorkbenchService.test.ts b/src/vs/workbench/contrib/extensions/test/electron-browser/extensionsWorkbenchService.test.ts index 018ad78c48f..f2aa03a1782 100644 --- a/src/vs/workbench/contrib/extensions/test/electron-browser/extensionsWorkbenchService.test.ts +++ b/src/vs/workbench/contrib/extensions/test/electron-browser/extensionsWorkbenchService.test.ts @@ -11,7 +11,7 @@ import { IExtensionsWorkbenchService, ExtensionState, AutoCheckUpdatesConfigurat import { ExtensionsWorkbenchService } from 'vs/workbench/contrib/extensions/browser/extensionsWorkbenchService'; import { IExtensionManagementService, IExtensionGalleryService, ILocalExtension, IGalleryExtension, - DidUninstallExtensionEvent, InstallExtensionEvent, IGalleryExtensionAssets, IExtensionIdentifier, InstallOperation, IExtensionTipsService, IGalleryMetadata, InstallExtensionResult, getTargetPlatform, IExtensionsControlManifest + DidUninstallExtensionEvent, InstallExtensionEvent, IGalleryExtensionAssets, InstallOperation, IExtensionTipsService, IGalleryMetadata, InstallExtensionResult, getTargetPlatform, IExtensionsControlManifest, UninstallExtensionEvent } from 'vs/platform/extensionManagement/common/extensionManagement'; import { IWorkbenchExtensionEnablementService, EnablementState, IExtensionManagementServerService, IExtensionManagementServer, IProfileAwareExtensionManagementService } from 'vs/workbench/services/extensionManagement/common/extensionManagement'; import { IExtensionRecommendationsService } from 'vs/workbench/services/extensionRecommendations/common/extensionRecommendations'; @@ -59,13 +59,13 @@ suite('ExtensionsWorkbenchServiceTest', () => { let installEvent: Emitter<InstallExtensionEvent>, didInstallEvent: Emitter<readonly InstallExtensionResult[]>, - uninstallEvent: Emitter<IExtensionIdentifier>, + uninstallEvent: Emitter<UninstallExtensionEvent>, didUninstallEvent: Emitter<DidUninstallExtensionEvent>; suiteSetup(() => { installEvent = new Emitter<InstallExtensionEvent>(); didInstallEvent = new Emitter<readonly InstallExtensionResult[]>(); - uninstallEvent = new Emitter<IExtensionIdentifier>(); + uninstallEvent = new Emitter<UninstallExtensionEvent>(); didUninstallEvent = new Emitter<DidUninstallExtensionEvent>(); instantiationService = new TestInstantiationService(); @@ -386,7 +386,7 @@ suite('ExtensionsWorkbenchServiceTest', () => { testObject.uninstall(actual); // Uninstalling - uninstallEvent.fire(identifier); + uninstallEvent.fire({ identifier }); assert.strictEqual(ExtensionState.Uninstalling, actual.state); // Uninstalled @@ -413,7 +413,7 @@ suite('ExtensionsWorkbenchServiceTest', () => { testObject = await aWorkbenchService(); const target = testObject.local[0]; testObject.uninstall(target); - uninstallEvent.fire(local.identifier); + uninstallEvent.fire({ identifier: local.identifier }); didUninstallEvent.fire({ identifier: local.identifier }); assert.ok(!(await testObject.canInstall(target))); @@ -490,7 +490,7 @@ suite('ExtensionsWorkbenchServiceTest', () => { testObject.uninstall(testObject.local[0]); testObject.onChange(target); - uninstallEvent.fire(local.identifier); + uninstallEvent.fire({ identifier: local.identifier }); assert.ok(target.calledOnce); }); @@ -502,7 +502,7 @@ suite('ExtensionsWorkbenchServiceTest', () => { const target = sinon.spy(); testObject.uninstall(testObject.local[0]); - uninstallEvent.fire(local.identifier); + uninstallEvent.fire({ identifier: local.identifier }); testObject.onChange(target); didUninstallEvent.fire({ identifier: local.identifier }); diff --git a/src/vs/workbench/services/extensionManagement/common/extensionManagement.ts b/src/vs/workbench/services/extensionManagement/common/extensionManagement.ts index 66f0b79da91..5e3c46b1a5b 100644 --- a/src/vs/workbench/services/extensionManagement/common/extensionManagement.ts +++ b/src/vs/workbench/services/extensionManagement/common/extensionManagement.ts @@ -6,7 +6,7 @@ import { Event } from 'vs/base/common/event'; import { createDecorator, refineServiceDecorator } from 'vs/platform/instantiation/common/instantiation'; import { IExtension, ExtensionType, IExtensionManifest } from 'vs/platform/extensions/common/extensions'; -import { IExtensionManagementService, IGalleryExtension, IExtensionIdentifier, ILocalExtension, InstallOptions, InstallExtensionEvent, DidUninstallExtensionEvent, InstallExtensionResult, Metadata, InstallVSIXOptions } from 'vs/platform/extensionManagement/common/extensionManagement'; +import { IExtensionManagementService, IGalleryExtension, IExtensionIdentifier, ILocalExtension, InstallOptions, InstallExtensionEvent, DidUninstallExtensionEvent, InstallExtensionResult, Metadata, InstallVSIXOptions, UninstallExtensionEvent } from 'vs/platform/extensionManagement/common/extensionManagement'; import { URI } from 'vs/base/common/uri'; import { FileAccess } from 'vs/base/common/network'; @@ -42,7 +42,7 @@ export interface IExtensionManagementServerService { export const DefaultIconPath = FileAccess.asBrowserUri('./media/defaultIcon.png', require).toString(true); export type InstallExtensionOnServerEvent = InstallExtensionEvent & { server: IExtensionManagementServer }; -export type UninstallExtensionOnServerEvent = IExtensionIdentifier & { server: IExtensionManagementServer }; +export type UninstallExtensionOnServerEvent = UninstallExtensionEvent & { server: IExtensionManagementServer }; export type DidUninstallExtensionOnServerEvent = DidUninstallExtensionEvent & { server: IExtensionManagementServer }; export type DidChangeProfileExtensionsOnServerEvent = DidChangeProfileExtensionsEvent & { server: IExtensionManagementServer }; diff --git a/src/vs/workbench/services/extensionManagement/common/profileAwareExtensionManagementService.ts b/src/vs/workbench/services/extensionManagement/common/profileAwareExtensionManagementService.ts index 94d70ade4d3..291e62a8317 100644 --- a/src/vs/workbench/services/extensionManagement/common/profileAwareExtensionManagementService.ts +++ b/src/vs/workbench/services/extensionManagement/common/profileAwareExtensionManagementService.ts @@ -9,13 +9,25 @@ import { ExtensionManagementChannelClient } from 'vs/platform/extensionManagemen import { URI } from 'vs/base/common/uri'; import { IGalleryExtension, ILocalExtension, InstallOptions, InstallVSIXOptions, UninstallOptions } from 'vs/platform/extensionManagement/common/extensionManagement'; import { ExtensionIdentifier, ExtensionType } from 'vs/platform/extensions/common/extensions'; -import { Emitter } from 'vs/base/common/event'; +import { Emitter, Event } from 'vs/base/common/event'; import { IUriIdentityService } from 'vs/platform/uriIdentity/common/uriIdentity'; import { delta } from 'vs/base/common/arrays'; import { compare } from 'vs/base/common/strings'; +import { DisposableStore } from 'vs/base/common/lifecycle'; export class NativeProfileAwareExtensionManagementService extends ExtensionManagementChannelClient implements IProfileAwareExtensionManagementService { + private readonly disposables = this._register(new DisposableStore()); + + override get onInstallExtension() { return Event.filter(super.onInstallExtension, e => this.filterEvent(e), this.disposables); } + override get onDidInstallExtensions() { + return Event.filter( + Event.map(super.onDidInstallExtensions, results => results.filter(e => this.filterEvent(e)), this.disposables), + results => results.length > 0, this.disposables); + } + override get onUninstallExtension() { return Event.filter(super.onUninstallExtension, e => this.filterEvent(e), this.disposables); } + override get onDidUninstallExtension() { return Event.filter(super.onDidUninstallExtension, e => this.filterEvent(e), this.disposables); } + private readonly _onDidChangeProfileExtensions = this._register(new Emitter<{ readonly added: ILocalExtension[]; readonly removed: ILocalExtension[] }>()); readonly onDidChangeProfileExtensions = this._onDidChangeProfileExtensions.event; @@ -25,6 +37,10 @@ export class NativeProfileAwareExtensionManagementService extends ExtensionManag super(channel); } + private filterEvent({ profileLocation, applicationScoped }: { profileLocation?: URI; applicationScoped?: boolean }): boolean { + return applicationScoped || this.uriIdentityService.extUri.isEqual(this.extensionsProfileResource, profileLocation); + } + override install(vsix: URI, options?: InstallVSIXOptions): Promise<ILocalExtension> { return super.install(vsix, { ...options, profileLocation: this.extensionsProfileResource }); } diff --git a/src/vs/workbench/services/extensionManagement/common/webExtensionManagementService.ts b/src/vs/workbench/services/extensionManagement/common/webExtensionManagementService.ts index 19a97830da7..6c1cba6e975 100644 --- a/src/vs/workbench/services/extensionManagement/common/webExtensionManagementService.ts +++ b/src/vs/workbench/services/extensionManagement/common/webExtensionManagementService.ts @@ -122,6 +122,7 @@ function toLocalExtension(extension: IExtension): ILocalExtension { ...extension, identifier: { id: extension.identifier.id, uuid: metadata.id ?? extension.identifier.uuid }, isMachineScoped: !!metadata.isMachineScoped, + isApplicationScoped: !!metadata.isApplicationScoped, publisherId: metadata.publisherId || null, publisherDisplayName: metadata.publisherDisplayName || null, installedTimestamp: metadata.installedTimestamp, diff --git a/src/vs/workbench/services/extensionManagement/test/browser/extensionEnablementService.test.ts b/src/vs/workbench/services/extensionManagement/test/browser/extensionEnablementService.test.ts index 75247ea427d..3fc8b045751 100644 --- a/src/vs/workbench/services/extensionManagement/test/browser/extensionEnablementService.test.ts +++ b/src/vs/workbench/services/extensionManagement/test/browser/extensionEnablementService.test.ts @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ import * as assert from 'assert'; import * as sinon from 'sinon'; -import { IExtensionManagementService, DidUninstallExtensionEvent, ILocalExtension, InstallExtensionEvent, InstallExtensionResult } from 'vs/platform/extensionManagement/common/extensionManagement'; +import { IExtensionManagementService, DidUninstallExtensionEvent, ILocalExtension, InstallExtensionEvent, InstallExtensionResult, UninstallExtensionEvent } from 'vs/platform/extensionManagement/common/extensionManagement'; import { IWorkbenchExtensionEnablementService, EnablementState, IExtensionManagementServerService, IExtensionManagementServer, IWorkbenchExtensionManagementService, ExtensionInstallLocation, IProfileAwareExtensionManagementService } from 'vs/workbench/services/extensionManagement/common/extensionManagement'; import { ExtensionEnablementService } from 'vs/workbench/services/extensionManagement/browser/extensionEnablementService'; import { TestInstantiationService } from 'vs/platform/instantiation/test/common/instantiationServiceMock'; @@ -12,7 +12,7 @@ import { Emitter, Event } from 'vs/base/common/event'; import { IWorkspace, IWorkspaceContextService, WorkbenchState } from 'vs/platform/workspace/common/workspace'; import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/common/environmentService'; import { IStorageService, InMemoryStorageService } from 'vs/platform/storage/common/storage'; -import { IExtensionContributions, ExtensionType, IExtension, IExtensionManifest, IExtensionIdentifier } from 'vs/platform/extensions/common/extensions'; +import { IExtensionContributions, ExtensionType, IExtension, IExtensionManifest } from 'vs/platform/extensions/common/extensions'; import { isUndefinedOrNull } from 'vs/base/common/types'; import { areSameExtensions } from 'vs/platform/extensionManagement/common/extensionManagementUtil'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; @@ -62,7 +62,7 @@ export class TestExtensionEnablementService extends ExtensionEnablementService { extensionManagementService: <IProfileAwareExtensionManagementService>{ onInstallExtension: new Emitter<InstallExtensionEvent>().event, onDidInstallExtensions: new Emitter<readonly InstallExtensionResult[]>().event, - onUninstallExtension: new Emitter<IExtensionIdentifier>().event, + onUninstallExtension: new Emitter<UninstallExtensionEvent>().event, onDidUninstallExtension: new Emitter<DidUninstallExtensionEvent>().event, }, }, null, null)); |