Skip to content

Commit 0c2c74c

Browse files
authored
1 parent 0182e17 commit 0c2c74c

File tree

2 files changed

+23
-6
lines changed

2 files changed

+23
-6
lines changed

src/vs/workbench/services/extensionManagement/browser/extensionEnablementService.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -580,9 +580,9 @@ export class ExtensionEnablementService extends Disposable implements IWorkbench
580580
}
581581

582582
private _onDidChangeExtensions(added: ReadonlyArray<IExtension>, removed: ReadonlyArray<IExtension>): void {
583-
const disabledByTrustExtensions = added.filter(e => this.getEnablementState(e) === EnablementState.DisabledByTrustRequirement);
584-
if (disabledByTrustExtensions.length) {
585-
this._onEnablementChanged.fire(disabledByTrustExtensions);
583+
const disabledExtensions = added.filter(e => !this.isEnabledEnablementState(this.getEnablementState(e)));
584+
if (disabledExtensions.length) {
585+
this._onEnablementChanged.fire(disabledExtensions);
586586
}
587587
removed.forEach(({ identifier }) => this._reset(identifier));
588588
}

src/vs/workbench/services/extensionManagement/test/browser/extensionEnablementService.test.ts

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@
55
import * as assert from 'assert';
66
import * as sinon from 'sinon';
77
import { IExtensionManagementService, DidUninstallExtensionEvent, ILocalExtension, InstallExtensionEvent, InstallExtensionResult, UninstallExtensionEvent } from 'vs/platform/extensionManagement/common/extensionManagement';
8-
import { IWorkbenchExtensionEnablementService, EnablementState, IExtensionManagementServerService, IExtensionManagementServer, IWorkbenchExtensionManagementService, ExtensionInstallLocation, IProfileAwareExtensionManagementService } from 'vs/workbench/services/extensionManagement/common/extensionManagement';
8+
import { IWorkbenchExtensionEnablementService, EnablementState, IExtensionManagementServerService, IExtensionManagementServer, IWorkbenchExtensionManagementService, ExtensionInstallLocation, IProfileAwareExtensionManagementService, DidChangeProfileExtensionsEvent } from 'vs/workbench/services/extensionManagement/common/extensionManagement';
99
import { ExtensionEnablementService } from 'vs/workbench/services/extensionManagement/browser/extensionEnablementService';
1010
import { TestInstantiationService } from 'vs/platform/instantiation/test/common/instantiationServiceMock';
11-
import { Emitter, Event } from 'vs/base/common/event';
11+
import { Emitter } from 'vs/base/common/event';
1212
import { IWorkspace, IWorkspaceContextService, WorkbenchState } from 'vs/platform/workspace/common/workspace';
1313
import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/common/environmentService';
1414
import { IStorageService, InMemoryStorageService } from 'vs/platform/storage/common/storage';
@@ -116,6 +116,7 @@ suite('ExtensionEnablementService Test', () => {
116116

117117
const didInstallEvent = new Emitter<readonly InstallExtensionResult[]>();
118118
const didUninstallEvent = new Emitter<DidUninstallExtensionEvent>();
119+
const didChangeProfileExtensionsEvent = new Emitter<DidChangeProfileExtensionsEvent>();
119120
const installed: ILocalExtension[] = [];
120121

121122
setup(() => {
@@ -128,7 +129,7 @@ suite('ExtensionEnablementService Test', () => {
128129
extensionManagementService: <IProfileAwareExtensionManagementService>{
129130
onDidInstallExtensions: didInstallEvent.event,
130131
onDidUninstallExtension: didUninstallEvent.event,
131-
onDidChangeProfileExtensions: Event.None,
132+
onDidChangeProfileExtensions: didChangeProfileExtensionsEvent.event,
132133
getInstalled: () => Promise.resolve(installed)
133134
},
134135
}, null, null));
@@ -950,6 +951,22 @@ suite('ExtensionEnablementService Test', () => {
950951
assert.deepStrictEqual((<IExtension>target.args[0][0][1]).identifier, { id: 'pub.c' });
951952
});
952953

954+
test('test adding an extension that was disabled', async () => {
955+
const extension = aLocalExtension('pub.a');
956+
installed.push(extension);
957+
testObject = new TestExtensionEnablementService(instantiationService);
958+
await testObject.setEnablement([extension], EnablementState.DisabledGlobally);
959+
960+
const target = sinon.spy();
961+
testObject.onEnablementChanged(target);
962+
didChangeProfileExtensionsEvent.fire({ added: [extension], removed: [] });
963+
964+
assert.ok(!testObject.isEnabled(extension));
965+
assert.strictEqual(testObject.getEnablementState(extension), EnablementState.DisabledGlobally);
966+
assert.strictEqual(target.args[0][0].length, 1);
967+
assert.deepStrictEqual((<IExtension>target.args[0][0][0]).identifier, { id: 'pub.a' });
968+
});
969+
953970
});
954971

955972
function anExtensionManagementServer(authority: string, instantiationService: TestInstantiationService): IExtensionManagementServer {

0 commit comments

Comments
 (0)