@@ -1646,6 +1646,62 @@ suite('ReloadAction', () => {
16461646 assert . ok ( testObject . extension ) ;
16471647 assert . ok ( testObject . enabled ) ;
16481648 } ) ;
1649+
1650+ test ( 'Test ReloadAction when ui+workspace+web extension is installed in web and remote and running in remote' , async ( ) => {
1651+ // multi server setup
1652+ const gallery = aGalleryExtension ( 'a' ) ;
1653+ const webExtension = aLocalExtension ( 'a' , { extensionKind : [ 'ui' , 'workspace' ] , 'browser' : 'browser.js' } , { location : URI . file ( 'pub.a' ) . with ( { scheme : Schemas . vscodeUserData } ) } ) ;
1654+ const remoteExtension = aLocalExtension ( 'a' , { extensionKind : [ 'ui' , 'workspace' ] , 'browser' : 'browser.js' } , { location : URI . file ( 'pub.a' ) . with ( { scheme : Schemas . vscodeRemote } ) } ) ;
1655+ const extensionManagementServerService = aMultiExtensionManagementServerService ( instantiationService , null , createExtensionManagementService ( [ remoteExtension ] ) , createExtensionManagementService ( [ webExtension ] ) ) ;
1656+ instantiationService . stub ( IExtensionManagementServerService , extensionManagementServerService ) ;
1657+ instantiationService . stub ( IWorkbenchExtensionEnablementService , new TestExtensionEnablementService ( instantiationService ) ) ;
1658+ instantiationService . stub ( IExtensionService , < Partial < IExtensionService > > {
1659+ extensions : [ toExtensionDescription ( remoteExtension ) ] ,
1660+ onDidChangeExtensions : Event . None ,
1661+ canAddExtension : ( extension ) => false ,
1662+ whenInstalledExtensionsRegistered : ( ) => Promise . resolve ( true )
1663+ } ) ;
1664+ const workbenchService : IExtensionsWorkbenchService = instantiationService . createInstance ( ExtensionsWorkbenchService ) ;
1665+ instantiationService . set ( IExtensionsWorkbenchService , workbenchService ) ;
1666+
1667+ const testObject : ExtensionsActions . ReloadAction = instantiationService . createInstance ( ExtensionsActions . ReloadAction ) ;
1668+ instantiationService . createInstance ( ExtensionContainers , [ testObject ] ) ;
1669+ instantiationService . stubPromise ( IExtensionGalleryService , 'query' , aPage ( gallery ) ) ;
1670+
1671+ await workbenchService . queryGallery ( CancellationToken . None ) ;
1672+ const extensions = await workbenchService . queryLocal ( extensionManagementServerService . remoteExtensionManagementServer ! ) ;
1673+ testObject . extension = extensions [ 0 ] ;
1674+ assert . ok ( testObject . extension ) ;
1675+ assert . ok ( ! testObject . enabled ) ;
1676+ } ) ;
1677+
1678+ test ( 'Test ReloadAction when workspace+ui+web extension is installed in web and local and running in local' , async ( ) => {
1679+ // multi server setup
1680+ const gallery = aGalleryExtension ( 'a' ) ;
1681+ const webExtension = aLocalExtension ( 'a' , { extensionKind : [ 'workspace' , 'ui' ] , 'browser' : 'browser.js' } , { location : URI . file ( 'pub.a' ) . with ( { scheme : Schemas . vscodeUserData } ) } ) ;
1682+ const localExtension = aLocalExtension ( 'a' , { extensionKind : [ 'workspace' , 'ui' ] , 'browser' : 'browser.js' } , { location : URI . file ( 'pub.a' ) } ) ;
1683+ const extensionManagementServerService = aMultiExtensionManagementServerService ( instantiationService , createExtensionManagementService ( [ localExtension ] ) , null , createExtensionManagementService ( [ webExtension ] ) ) ;
1684+ instantiationService . stub ( IExtensionManagementServerService , extensionManagementServerService ) ;
1685+ instantiationService . stub ( IWorkbenchExtensionEnablementService , new TestExtensionEnablementService ( instantiationService ) ) ;
1686+ instantiationService . stub ( IExtensionService , < Partial < IExtensionService > > {
1687+ extensions : [ toExtensionDescription ( localExtension ) ] ,
1688+ onDidChangeExtensions : Event . None ,
1689+ canAddExtension : ( extension ) => false ,
1690+ whenInstalledExtensionsRegistered : ( ) => Promise . resolve ( true )
1691+ } ) ;
1692+ const workbenchService : IExtensionsWorkbenchService = instantiationService . createInstance ( ExtensionsWorkbenchService ) ;
1693+ instantiationService . set ( IExtensionsWorkbenchService , workbenchService ) ;
1694+
1695+ const testObject : ExtensionsActions . ReloadAction = instantiationService . createInstance ( ExtensionsActions . ReloadAction ) ;
1696+ instantiationService . createInstance ( ExtensionContainers , [ testObject ] ) ;
1697+ instantiationService . stubPromise ( IExtensionGalleryService , 'query' , aPage ( gallery ) ) ;
1698+
1699+ await workbenchService . queryGallery ( CancellationToken . None ) ;
1700+ const extensions = await workbenchService . queryLocal ( extensionManagementServerService . remoteExtensionManagementServer ! ) ;
1701+ testObject . extension = extensions [ 0 ] ;
1702+ assert . ok ( testObject . extension ) ;
1703+ assert . ok ( ! testObject . enabled ) ;
1704+ } ) ;
16491705} ) ;
16501706
16511707suite ( 'RemoteInstallAction' , ( ) => {
@@ -2519,34 +2575,51 @@ function aSingleRemoteExtensionManagementServerService(instantiationService: Tes
25192575 } ;
25202576}
25212577
2522- function aMultiExtensionManagementServerService ( instantiationService : TestInstantiationService , localExtensionManagementService ?: IProfileAwareExtensionManagementService , remoteExtensionManagementService ?: IProfileAwareExtensionManagementService ) : IExtensionManagementServerService {
2523- const localExtensionManagementServer : IExtensionManagementServer = {
2578+ function aMultiExtensionManagementServerService ( instantiationService : TestInstantiationService , localExtensionManagementService ?: IProfileAwareExtensionManagementService | null , remoteExtensionManagementService ?: IProfileAwareExtensionManagementService | null , webExtensionManagementService ?: IProfileAwareExtensionManagementService ) : IExtensionManagementServerService {
2579+ const localExtensionManagementServer : IExtensionManagementServer | null = localExtensionManagementService === null ? null : {
25242580 id : 'vscode-local' ,
25252581 label : 'local' ,
25262582 extensionManagementService : localExtensionManagementService || createExtensionManagementService ( ) ,
25272583 } ;
2528- const remoteExtensionManagementServer : IExtensionManagementServer = {
2584+ const remoteExtensionManagementServer : IExtensionManagementServer | null = remoteExtensionManagementService === null ? null : {
25292585 id : 'vscode-remote' ,
25302586 label : 'remote' ,
25312587 extensionManagementService : remoteExtensionManagementService || createExtensionManagementService ( ) ,
25322588 } ;
2589+ const webExtensionManagementServer : IExtensionManagementServer | null = webExtensionManagementService ? {
2590+ id : 'vscode-web' ,
2591+ label : 'web' ,
2592+ extensionManagementService : webExtensionManagementService ,
2593+ } : null ;
25332594 return {
25342595 _serviceBrand : undefined ,
25352596 localExtensionManagementServer,
25362597 remoteExtensionManagementServer,
2537- webExtensionManagementServer : null ,
2598+ webExtensionManagementServer,
25382599 getExtensionManagementServer : ( extension : IExtension ) => {
25392600 if ( extension . location . scheme === Schemas . file ) {
25402601 return localExtensionManagementServer ;
25412602 }
25422603 if ( extension . location . scheme === Schemas . vscodeRemote ) {
25432604 return remoteExtensionManagementServer ;
25442605 }
2606+ if ( extension . location . scheme === Schemas . vscodeUserData ) {
2607+ return webExtensionManagementServer ;
2608+ }
25452609 throw new Error ( '' ) ;
25462610 } ,
25472611 getExtensionInstallLocation ( extension : IExtension ) : ExtensionInstallLocation | null {
25482612 const server = this . getExtensionManagementServer ( extension ) ;
2549- return server === remoteExtensionManagementServer ? ExtensionInstallLocation . Remote : ExtensionInstallLocation . Local ;
2613+ if ( server === null ) {
2614+ return null ;
2615+ }
2616+ if ( server === remoteExtensionManagementServer ) {
2617+ return ExtensionInstallLocation . Remote ;
2618+ }
2619+ if ( server === webExtensionManagementServer ) {
2620+ return ExtensionInstallLocation . Web ;
2621+ }
2622+ return ExtensionInstallLocation . Local ;
25502623 }
25512624 } ;
25522625}
0 commit comments