Skip to content

Commit 71ca6f5

Browse files
committed
initialize extensions in the background along with other resources
1 parent 212fc3d commit 71ca6f5

4 files changed

Lines changed: 18 additions & 23 deletions

File tree

src/vs/platform/userDataSync/common/abstractSynchronizer.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import { URI } from 'vs/base/common/uri';
1010
import {
1111
SyncResource, SyncStatus, IUserData, IUserDataSyncStoreService, UserDataSyncErrorCode, UserDataSyncError, IUserDataSyncLogService, IUserDataSyncUtilService,
1212
IUserDataSyncResourceEnablementService, IUserDataSyncBackupStoreService, ISyncResourceHandle, USER_DATA_SYNC_SCHEME, ISyncResourcePreview as IBaseSyncResourcePreview,
13-
IUserDataManifest, ISyncData, IRemoteUserData, PREVIEW_DIR_NAME, IResourcePreview as IBaseResourcePreview, Change, MergeState
13+
IUserDataManifest, ISyncData, IRemoteUserData, PREVIEW_DIR_NAME, IResourcePreview as IBaseResourcePreview, Change, MergeState, IUserDataInitializer
1414
} from 'vs/platform/userDataSync/common/userDataSync';
1515
import { IEnvironmentService } from 'vs/platform/environment/common/environment';
1616
import { joinPath, dirname, isEqual, basename } from 'vs/base/common/resources';
@@ -802,7 +802,7 @@ export abstract class AbstractJsonFileSynchroniser extends AbstractFileSynchroni
802802

803803
}
804804

805-
export abstract class AbstractInitializer {
805+
export abstract class AbstractInitializer implements IUserDataInitializer {
806806

807807
private readonly lastSyncResource: URI;
808808

src/vs/platform/userDataSync/common/userDataSync.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -351,6 +351,10 @@ export interface ISyncResourcePreview {
351351
readonly resourcePreviews: IResourcePreview[];
352352
}
353353

354+
export interface IUserDataInitializer {
355+
initialize(userData: IUserData): Promise<void>;
356+
}
357+
354358
export interface IUserDataSynchroniser {
355359

356360
readonly resource: SyncResource;

src/vs/workbench/services/extensions/browser/extensionService.ts

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ import { Schemas } from 'vs/base/common/network';
2424
import { DisposableStore } from 'vs/base/common/lifecycle';
2525
import { IRemoteAuthorityResolverService } from 'vs/platform/remote/common/remoteAuthorityResolver';
2626
import { ILifecycleService, LifecyclePhase } from 'vs/platform/lifecycle/common/lifecycle';
27-
import { IUserDataInitializationService } from 'vs/workbench/services/userData/browser/userDataInit';
2827
import { IExtensionManagementService } from 'vs/platform/extensionManagement/common/extensionManagement';
2928
import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace';
3029

@@ -48,7 +47,6 @@ export class ExtensionService extends AbstractExtensionService implements IExten
4847
@IRemoteAgentService private readonly _remoteAgentService: IRemoteAgentService,
4948
@IWebExtensionsScannerService private readonly _webExtensionsScannerService: IWebExtensionsScannerService,
5049
@ILifecycleService private readonly _lifecycleService: ILifecycleService,
51-
@IUserDataInitializationService private readonly _userDataInitializationService: IUserDataInitializationService,
5250
) {
5351
super(
5452
new ExtensionRunningLocationClassifier(
@@ -70,11 +68,8 @@ export class ExtensionService extends AbstractExtensionService implements IExten
7068

7169
this._runningLocation = new Map<string, ExtensionRunningLocation>();
7270

73-
// Initialize extensions first and do it only after workbench is ready
74-
this._lifecycleService.when(LifecyclePhase.Ready).then(async () => {
75-
await this._userDataInitializationService.initializeExtensions(this._instantiationService);
76-
this._initialize();
77-
});
71+
// Initialize only after workbench is ready
72+
this._lifecycleService.when(LifecyclePhase.Ready).then(() => this._initialize());
7873

7974
this._initFetchFileSystem();
8075
}

src/vs/workbench/services/userData/browser/userDataInit.ts

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
*--------------------------------------------------------------------------------------------*/
55

66
import { IStorageService, StorageScope } from 'vs/platform/storage/common/storage';
7-
import { AbstractInitializer } from 'vs/platform/userDataSync/common/abstractSynchronizer';
87
import { ExtensionsInitializer } from 'vs/platform/userDataSync/common/extensionsSync';
98
import { GlobalStateInitializer } from 'vs/platform/userDataSync/common/globalStateSync';
109
import { KeybindingsInitializer } from 'vs/platform/userDataSync/common/keybindingsSync';
@@ -17,7 +16,7 @@ import { ILogService } from 'vs/platform/log/common/log';
1716
import { UserDataSyncStoreClient } from 'vs/platform/userDataSync/common/userDataSyncStoreService';
1817
import { IProductService } from 'vs/platform/product/common/productService';
1918
import { IRequestService } from 'vs/platform/request/common/request';
20-
import { IUserDataSyncStoreClient, IUserDataSyncStoreManagementService, SyncResource } from 'vs/platform/userDataSync/common/userDataSync';
19+
import { IUserDataInitializer, IUserDataSyncStoreClient, IUserDataSyncStoreManagementService, SyncResource } from 'vs/platform/userDataSync/common/userDataSync';
2120
import { getCurrentAuthenticationSessionInfo } from 'vs/workbench/services/authentication/browser/authenticationService';
2221
import { getSyncAreaLabel } from 'vs/workbench/services/userDataSync/common/userDataSync';
2322
import { IWorkbenchContribution, IWorkbenchContributionsRegistry, Extensions } from 'vs/workbench/common/contributions';
@@ -31,8 +30,7 @@ export interface IUserDataInitializationService {
3130

3231
requiresInitialization(): Promise<boolean>;
3332
initializeRequiredResources(): Promise<void>;
34-
initializeOtherResources(): Promise<void>;
35-
initializeExtensions(instantiationService: IInstantiationService): Promise<void>;
33+
initializeOtherResources(instantiationService: IInstantiationService): Promise<void>;
3634
}
3735

3836
export class UserDataInitializationService implements IUserDataInitializationService {
@@ -117,14 +115,9 @@ export class UserDataInitializationService implements IUserDataInitializationSer
117115
return this.initialize([SyncResource.Settings, SyncResource.GlobalState]);
118116
}
119117

120-
async initializeOtherResources(): Promise<void> {
118+
async initializeOtherResources(instantiationService: IInstantiationService): Promise<void> {
121119
this.logService.trace(`UserDataInitializationService#initializeOtherResources`);
122-
return this.initialize([SyncResource.Keybindings, SyncResource.Snippets]);
123-
}
124-
125-
async initializeExtensions(instantiationService: IInstantiationService): Promise<void> {
126-
this.logService.trace(`UserDataInitializationService#initializeExtensions`);
127-
return this.initialize([SyncResource.Extensions], instantiationService);
120+
return this.initialize([SyncResource.Extensions, SyncResource.Keybindings, SyncResource.Snippets], instantiationService);
128121
}
129122

130123
private async initialize(syncResources: SyncResource[], instantiationService?: IInstantiationService): Promise<void> {
@@ -152,7 +145,7 @@ export class UserDataInitializationService implements IUserDataInitializationSer
152145
}));
153146
}
154147

155-
private createSyncResourceInitializer(syncResource: SyncResource, instantiationService?: IInstantiationService): AbstractInitializer {
148+
private createSyncResourceInitializer(syncResource: SyncResource, instantiationService?: IInstantiationService): IUserDataInitializer {
156149
switch (syncResource) {
157150
case SyncResource.Settings: return new SettingsInitializer(this.fileService, this.environmentService, this.logService);
158151
case SyncResource.Keybindings: return new KeybindingsInitializer(this.fileService, this.environmentService, this.logService);
@@ -169,8 +162,11 @@ export class UserDataInitializationService implements IUserDataInitializationSer
169162
}
170163

171164
class InitializeOtherResourcesContribution implements IWorkbenchContribution {
172-
constructor(@IUserDataInitializationService userDataInitializeService: IUserDataInitializationService) {
173-
userDataInitializeService.initializeOtherResources();
165+
constructor(
166+
@IUserDataInitializationService userDataInitializeService: IUserDataInitializationService,
167+
@IInstantiationService instantiationService: IInstantiationService
168+
) {
169+
userDataInitializeService.initializeOtherResources(instantiationService);
174170
}
175171
}
176172

0 commit comments

Comments
 (0)