@@ -34,7 +34,7 @@ import * as resources from 'vs/base/common/resources';
3434import { CancellationToken } from 'vs/base/common/cancellation' ;
3535import { IStorageService , StorageScope } from 'vs/platform/storage/common/storage' ;
3636import { IFileService } from 'vs/platform/files/common/files' ;
37- import { IExtensionManifest , ExtensionType , IExtension as IPlatformExtension , TargetPlatform , ExtensionIdentifier , IExtensionIdentifier , IExtensionDescription } from 'vs/platform/extensions/common/extensions' ;
37+ import { IExtensionManifest , ExtensionType , IExtension as IPlatformExtension , TargetPlatform , ExtensionIdentifier , IExtensionIdentifier , IExtensionDescription , isApplicationScopedExtension } from 'vs/platform/extensions/common/extensions' ;
3838import { ILanguageService } from 'vs/editor/common/languages/language' ;
3939import { IProductService } from 'vs/platform/product/common/productService' ;
4040import { FileAccess } from 'vs/base/common/network' ;
@@ -50,6 +50,7 @@ import { getLocale } from 'vs/platform/languagePacks/common/languagePacks';
5050import { ILocaleService } from 'vs/workbench/services/localization/common/locale' ;
5151import { TelemetryTrustedValue } from 'vs/platform/telemetry/common/telemetryUtils' ;
5252import { ILifecycleService , LifecyclePhase } from 'vs/workbench/services/lifecycle/common/lifecycle' ;
53+ import { IUserDataProfilesService } from 'vs/platform/userDataProfile/common/userDataProfile' ;
5354
5455interface IExtensionStateProvider < T > {
5556 ( extension : Extension ) : T ;
@@ -774,6 +775,7 @@ export class ExtensionsWorkbenchService extends Disposable implements IExtension
774775 @ILocaleService private readonly localeService : ILocaleService ,
775776 @ILifecycleService private readonly lifecycleService : ILifecycleService ,
776777 @IFileService private readonly fileService : IFileService ,
778+ @IUserDataProfilesService private readonly userDataProfilesService : IUserDataProfilesService ,
777779 ) {
778780 super ( ) ;
779781 const preferPreReleasesValue = configurationService . getValue ( '_extensions.preferPreReleases' ) ;
@@ -1619,6 +1621,12 @@ export class ExtensionsWorkbenchService extends Disposable implements IExtension
16191621 await this . userDataAutoSyncService . triggerSync ( [ 'IgnoredExtensionsUpdated' ] , false , false ) ;
16201622 }
16211623
1624+ async toggleApplyExtensionToAllProfiles ( extension : IExtension ) : Promise < void > {
1625+ if ( extension . local && ! isApplicationScopedExtension ( extension . local . manifest ) ) {
1626+ await this . extensionManagementService . updateMetadata ( extension . local , { isApplicationScoped : ! extension . local . isApplicationScoped } , this . userDataProfilesService . defaultProfile . extensionsResource ) ;
1627+ }
1628+ }
1629+
16221630 private isInstalledExtensionSynced ( extension : ILocalExtension ) : boolean {
16231631 if ( extension . isMachineScoped ) {
16241632 return false ;
0 commit comments