From a9dc7549525327d90c7aa8290e737af2a10fa2ba Mon Sep 17 00:00:00 2001 From: Jason <16858833+j-abed@users.noreply.github.com> Date: Fri, 15 May 2026 19:09:36 -0400 Subject: [PATCH] extensions: disable Disable Globally when extension is workspace-enabled only --- .../extensions/browser/extensionsActions.ts | 2 +- .../extensionsActions.test.ts | 22 +++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/vs/workbench/contrib/extensions/browser/extensionsActions.ts b/src/vs/workbench/contrib/extensions/browser/extensionsActions.ts index bdf319de98ebf..5c762871cc0c5 100644 --- a/src/vs/workbench/contrib/extensions/browser/extensionsActions.ts +++ b/src/vs/workbench/contrib/extensions/browser/extensionsActions.ts @@ -1780,7 +1780,7 @@ export class DisableGloballyAction extends ExtensionAction { return; } this.enabled = this.extension.state === ExtensionState.Installed - && (this.extension.enablementState === EnablementState.EnabledGlobally || this.extension.enablementState === EnablementState.EnabledWorkspace) + && this.extension.enablementState === EnablementState.EnabledGlobally && this.extensionEnablementService.canChangeEnablement(this.extension.local); } } 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 28b9e1c254d30..35b6f88dc12a9 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 @@ -908,6 +908,28 @@ suite('ExtensionsActions', () => { }); }); + test('Test DisableGloballyAction when the extension is only enabled for workspace', () => { + const local = aLocalExtension('a'); + instantiationService.stub(IExtensionService, { + extensions: [toExtensionDescription(local)], + onDidChangeExtensions: Event.None, + whenInstalledExtensionsRegistered: () => Promise.resolve(true) + }); + + return instantiationService.get(IWorkbenchExtensionEnablementService).setEnablement([local], EnablementState.DisabledGlobally) + .then(() => instantiationService.get(IWorkbenchExtensionEnablementService).setEnablement([local], EnablementState.EnabledWorkspace)) + .then(() => { + instantiationService.stubPromise(IExtensionManagementService, 'getInstalled', [local]); + + return instantiationService.get(IExtensionsWorkbenchService).queryLocal() + .then(extensions => { + const testObject: ExtensionsActions.DisableGloballyAction = disposables.add(instantiationService.createInstance(ExtensionsActions.DisableGloballyAction)); + testObject.extension = extensions[0]; + assert.ok(!testObject.enabled); + }); + }); + }); + test('Test DisableGloballyAction when extension is uninstalled', () => { const gallery = aGalleryExtension('a'); instantiationService.stubPromise(IExtensionGalleryService, 'query', aPage(gallery));