@@ -1646,6 +1646,62 @@ suite('ReloadAction', () => {
1646
1646
assert . ok ( testObject . extension ) ;
1647
1647
assert . ok ( testObject . enabled ) ;
1648
1648
} ) ;
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
+ } ) ;
1649
1705
} ) ;
1650
1706
1651
1707
suite ( 'RemoteInstallAction' , ( ) => {
@@ -2519,34 +2575,51 @@ function aSingleRemoteExtensionManagementServerService(instantiationService: Tes
2519
2575
} ;
2520
2576
}
2521
2577
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 : {
2524
2580
id : 'vscode-local' ,
2525
2581
label : 'local' ,
2526
2582
extensionManagementService : localExtensionManagementService || createExtensionManagementService ( ) ,
2527
2583
} ;
2528
- const remoteExtensionManagementServer : IExtensionManagementServer = {
2584
+ const remoteExtensionManagementServer : IExtensionManagementServer | null = remoteExtensionManagementService === null ? null : {
2529
2585
id : 'vscode-remote' ,
2530
2586
label : 'remote' ,
2531
2587
extensionManagementService : remoteExtensionManagementService || createExtensionManagementService ( ) ,
2532
2588
} ;
2589
+ const webExtensionManagementServer : IExtensionManagementServer | null = webExtensionManagementService ? {
2590
+ id : 'vscode-web' ,
2591
+ label : 'web' ,
2592
+ extensionManagementService : webExtensionManagementService ,
2593
+ } : null ;
2533
2594
return {
2534
2595
_serviceBrand : undefined ,
2535
2596
localExtensionManagementServer,
2536
2597
remoteExtensionManagementServer,
2537
- webExtensionManagementServer : null ,
2598
+ webExtensionManagementServer,
2538
2599
getExtensionManagementServer : ( extension : IExtension ) => {
2539
2600
if ( extension . location . scheme === Schemas . file ) {
2540
2601
return localExtensionManagementServer ;
2541
2602
}
2542
2603
if ( extension . location . scheme === Schemas . vscodeRemote ) {
2543
2604
return remoteExtensionManagementServer ;
2544
2605
}
2606
+ if ( extension . location . scheme === Schemas . vscodeUserData ) {
2607
+ return webExtensionManagementServer ;
2608
+ }
2545
2609
throw new Error ( '' ) ;
2546
2610
} ,
2547
2611
getExtensionInstallLocation ( extension : IExtension ) : ExtensionInstallLocation | null {
2548
2612
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 ;
2550
2623
}
2551
2624
} ;
2552
2625
}
0 commit comments