Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/microsoft/vscode.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/vs/workbench')
-rw-r--r--src/vs/workbench/contrib/extensions/browser/extensionsWorkbenchService.ts2
-rw-r--r--src/vs/workbench/contrib/extensions/test/electron-browser/extensionRecommendationsService.test.ts6
-rw-r--r--src/vs/workbench/contrib/extensions/test/electron-browser/extensionsActions.test.ts40
-rw-r--r--src/vs/workbench/contrib/extensions/test/electron-browser/extensionsViews.test.ts6
-rw-r--r--src/vs/workbench/contrib/extensions/test/electron-browser/extensionsWorkbenchService.test.ts14
-rw-r--r--src/vs/workbench/services/extensionManagement/common/extensionManagement.ts4
-rw-r--r--src/vs/workbench/services/extensionManagement/common/profileAwareExtensionManagementService.ts18
-rw-r--r--src/vs/workbench/services/extensionManagement/common/webExtensionManagementService.ts1
-rw-r--r--src/vs/workbench/services/extensionManagement/test/browser/extensionEnablementService.test.ts6
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));