diff --git a/src/vs/code/electron-browser/sharedProcess/sharedProcessMain.ts b/src/vs/code/electron-browser/sharedProcess/sharedProcessMain.ts index 01330ac090f..ee56bbb2e42 100644 --- a/src/vs/code/electron-browser/sharedProcess/sharedProcessMain.ts +++ b/src/vs/code/electron-browser/sharedProcess/sharedProcessMain.ts @@ -309,15 +309,15 @@ class SharedProcessMain extends Disposable { services.set(ICustomEndpointTelemetryService, customEndpointTelemetryService); // Extension Management - services.set(IExtensionsProfileScannerService, new SyncDescriptor(ExtensionsProfileScannerService)); - services.set(IExtensionsScannerService, new SyncDescriptor(ExtensionsScannerService)); - services.set(INativeServerExtensionManagementService, new SyncDescriptor(ExtensionManagementService)); + services.set(IExtensionsProfileScannerService, new SyncDescriptor(ExtensionsProfileScannerService, undefined, true)); + services.set(IExtensionsScannerService, new SyncDescriptor(ExtensionsScannerService, undefined, true)); + services.set(INativeServerExtensionManagementService, new SyncDescriptor(ExtensionManagementService, undefined, true)); // Extension Gallery - services.set(IExtensionGalleryService, new SyncDescriptor(ExtensionGalleryService)); + services.set(IExtensionGalleryService, new SyncDescriptor(ExtensionGalleryService, undefined, true)); // Extension Tips - services.set(IExtensionTipsService, new SyncDescriptor(ExtensionTipsService)); + services.set(IExtensionTipsService, new SyncDescriptor(ExtensionTipsService /* Eagerly scans and computes exe based recommendations */)); // Localizations services.set(ILanguagePackService, new SyncDescriptor(NativeLanguagePackService)); @@ -326,18 +326,18 @@ class SharedProcessMain extends Disposable { services.set(IDiagnosticsService, new SyncDescriptor(DiagnosticsService)); // Settings Sync - services.set(IUserDataSyncAccountService, new SyncDescriptor(UserDataSyncAccountService)); - services.set(IUserDataSyncLogService, new SyncDescriptor(UserDataSyncLogService)); + services.set(IUserDataSyncAccountService, new SyncDescriptor(UserDataSyncAccountService, undefined, true)); + services.set(IUserDataSyncLogService, new SyncDescriptor(UserDataSyncLogService, undefined, true)); services.set(IUserDataSyncUtilService, new UserDataSyncUtilServiceClient(this.server.getChannel('userDataSyncUtil', client => client.ctx !== 'main'))); - services.set(IGlobalExtensionEnablementService, new SyncDescriptor(GlobalExtensionEnablementService)); - services.set(IIgnoredExtensionsManagementService, new SyncDescriptor(IgnoredExtensionsManagementService)); + services.set(IGlobalExtensionEnablementService, new SyncDescriptor(GlobalExtensionEnablementService /* Eagerly resets installed extensions */)); + services.set(IIgnoredExtensionsManagementService, new SyncDescriptor(IgnoredExtensionsManagementService, undefined, true)); services.set(IExtensionStorageService, new SyncDescriptor(ExtensionStorageService)); - services.set(IUserDataSyncStoreManagementService, new SyncDescriptor(UserDataSyncStoreManagementService)); - services.set(IUserDataSyncStoreService, new SyncDescriptor(UserDataSyncStoreService)); - services.set(IUserDataSyncMachinesService, new SyncDescriptor(UserDataSyncMachinesService)); - services.set(IUserDataSyncBackupStoreService, new SyncDescriptor(UserDataSyncBackupStoreService)); - services.set(IUserDataSyncEnablementService, new SyncDescriptor(UserDataSyncEnablementService)); - services.set(IUserDataSyncService, new SyncDescriptor(UserDataSyncService)); + services.set(IUserDataSyncStoreManagementService, new SyncDescriptor(UserDataSyncStoreManagementService, undefined, true)); + services.set(IUserDataSyncStoreService, new SyncDescriptor(UserDataSyncStoreService, undefined, true)); + services.set(IUserDataSyncMachinesService, new SyncDescriptor(UserDataSyncMachinesService, undefined, true)); + services.set(IUserDataSyncBackupStoreService, new SyncDescriptor(UserDataSyncBackupStoreService /* Eagerly cleans up old backups */)); + services.set(IUserDataSyncEnablementService, new SyncDescriptor(UserDataSyncEnablementService, undefined, true)); + services.set(IUserDataSyncService, new SyncDescriptor(UserDataSyncService /* Initializes the Sync State */)); const ptyHostService = new PtyHostService({ graceTime: LocalReconnectConstants.GraceTime, diff --git a/src/vs/code/electron-main/app.ts b/src/vs/code/electron-main/app.ts index a82bd10b3df..41f7d64127c 100644 --- a/src/vs/code/electron-main/app.ts +++ b/src/vs/code/electron-main/app.ts @@ -714,8 +714,8 @@ export class CodeApplication extends Disposable { } // Default Extensions Profile Init - services.set(IExtensionsProfileScannerService, new SyncDescriptor(ExtensionsProfileScannerService)); - services.set(IExtensionsScannerService, new SyncDescriptor(ExtensionsScannerService)); + services.set(IExtensionsProfileScannerService, new SyncDescriptor(ExtensionsProfileScannerService, undefined, true)); + services.set(IExtensionsScannerService, new SyncDescriptor(ExtensionsScannerService, undefined, true)); // Init services that require it await backupMainService.initialize(); diff --git a/src/vs/code/electron-main/main.ts b/src/vs/code/electron-main/main.ts index fc5998067a6..621d43109bf 100644 --- a/src/vs/code/electron-main/main.ts +++ b/src/vs/code/electron-main/main.ts @@ -201,7 +201,7 @@ class CodeMain { services.set(ILifecycleMainService, new SyncDescriptor(LifecycleMainService)); // Request - services.set(IRequestService, new SyncDescriptor(RequestMainService)); + services.set(IRequestService, new SyncDescriptor(RequestMainService, undefined, true)); // Themes services.set(IThemeMainService, new SyncDescriptor(ThemeMainService)); diff --git a/src/vs/code/node/cliProcessMain.ts b/src/vs/code/node/cliProcessMain.ts index 7aa3b4d7d01..cd09afffb08 100644 --- a/src/vs/code/node/cliProcessMain.ts +++ b/src/vs/code/node/cliProcessMain.ts @@ -170,17 +170,17 @@ class CliMain extends Disposable { services.set(IUriIdentityService, new UriIdentityService(fileService)); // Request - services.set(IRequestService, new SyncDescriptor(RequestService)); + services.set(IRequestService, new SyncDescriptor(RequestService, undefined, true)); // Download Service - services.set(IDownloadService, new SyncDescriptor(DownloadService)); + services.set(IDownloadService, new SyncDescriptor(DownloadService, undefined, true)); // Extensions - services.set(IExtensionsProfileScannerService, new SyncDescriptor(ExtensionsProfileScannerService)); - services.set(IExtensionsScannerService, new SyncDescriptor(ExtensionsScannerService)); - services.set(INativeServerExtensionManagementService, new SyncDescriptor(ExtensionManagementService)); - services.set(IExtensionGalleryService, new SyncDescriptor(ExtensionGalleryServiceWithNoStorageService)); - services.set(IExtensionManagementCLIService, new SyncDescriptor(ExtensionManagementCLIService)); + services.set(IExtensionsProfileScannerService, new SyncDescriptor(ExtensionsProfileScannerService, undefined, true)); + services.set(IExtensionsScannerService, new SyncDescriptor(ExtensionsScannerService, undefined, true)); + services.set(INativeServerExtensionManagementService, new SyncDescriptor(ExtensionManagementService, undefined, true)); + services.set(IExtensionGalleryService, new SyncDescriptor(ExtensionGalleryServiceWithNoStorageService, undefined, true)); + services.set(IExtensionManagementCLIService, new SyncDescriptor(ExtensionManagementCLIService, undefined, true)); // Localizations services.set(ILanguagePackService, new SyncDescriptor(NativeLanguagePackService)); diff --git a/src/vs/workbench/contrib/extensions/browser/extensions.contribution.ts b/src/vs/workbench/contrib/extensions/browser/extensions.contribution.ts index 387f1350515..6e15de5fffd 100644 --- a/src/vs/workbench/contrib/extensions/browser/extensions.contribution.ts +++ b/src/vs/workbench/contrib/extensions/browser/extensions.contribution.ts @@ -7,7 +7,7 @@ import { localize } from 'vs/nls'; import { KeyMod, KeyCode } from 'vs/base/common/keyCodes'; import { Registry } from 'vs/platform/registry/common/platform'; import { MenuRegistry, MenuId, registerAction2, Action2, ISubmenuItem, IMenuItem, IAction2Options } from 'vs/platform/actions/common/actions'; -import { registerSingleton } from 'vs/platform/instantiation/common/extensions'; +import { InstantiationType, registerSingleton } from 'vs/platform/instantiation/common/extensions'; import { ExtensionsLabel, ExtensionsLocalizedLabel, ExtensionsChannelId, IExtensionManagementService, IExtensionGalleryService, PreferencesLocalizedLabel, InstallOperation, InstallOptions } from 'vs/platform/extensionManagement/common/extensionManagement'; import { EnablementState, IExtensionManagementServerService, IWorkbenchExtensionEnablementService, IWorkbenchExtensionManagementService } from 'vs/workbench/services/extensionManagement/common/extensionManagement'; import { IExtensionIgnoredRecommendationsService, IExtensionRecommendationsService } from 'vs/workbench/services/extensionRecommendations/common/extensionRecommendations'; @@ -80,9 +80,9 @@ import product from 'vs/platform/product/common/product'; import { IStringDictionary } from 'vs/base/common/collections'; // Singletons -registerSingleton(IExtensionsWorkbenchService, ExtensionsWorkbenchService, false); +registerSingleton(IExtensionsWorkbenchService, ExtensionsWorkbenchService, InstantiationType.Eager /* Auto updates extensions */); registerSingleton(IExtensionRecommendationNotificationService, ExtensionRecommendationNotificationService, true); -registerSingleton(IExtensionRecommendationsService, ExtensionRecommendationsService, false); +registerSingleton(IExtensionRecommendationsService, ExtensionRecommendationsService, InstantiationType.Eager /* Prompts recommendations in the background */); Registry.as(OutputExtensions.OutputChannels) .registerChannel({ id: ExtensionsChannelId, label: ExtensionsLabel, log: false }); diff --git a/src/vs/workbench/services/extensionManagement/electron-sandbox/extensionManagementService.ts b/src/vs/workbench/services/extensionManagement/electron-sandbox/extensionManagementService.ts index 3b9db91b71e..54ad833ec8b 100644 --- a/src/vs/workbench/services/extensionManagement/electron-sandbox/extensionManagementService.ts +++ b/src/vs/workbench/services/extensionManagement/electron-sandbox/extensionManagementService.ts @@ -53,4 +53,4 @@ export class ExtensionManagementService extends BaseExtensionManagementService { } } -registerSingleton(IWorkbenchExtensionManagementService, ExtensionManagementService, false); +registerSingleton(IWorkbenchExtensionManagementService, ExtensionManagementService, true); diff --git a/src/vs/workbench/services/userDataProfile/browser/userDataProfileManagement.ts b/src/vs/workbench/services/userDataProfile/browser/userDataProfileManagement.ts index fbf52518402..e9cd97c1bc0 100644 --- a/src/vs/workbench/services/userDataProfile/browser/userDataProfileManagement.ts +++ b/src/vs/workbench/services/userDataProfile/browser/userDataProfileManagement.ts @@ -6,7 +6,7 @@ import { Disposable } from 'vs/base/common/lifecycle'; import { localize } from 'vs/nls'; import { IDialogService } from 'vs/platform/dialogs/common/dialogs'; -import { registerSingleton } from 'vs/platform/instantiation/common/extensions'; +import { InstantiationType, registerSingleton } from 'vs/platform/instantiation/common/extensions'; import { DidChangeProfilesEvent, IUserDataProfile, IUserDataProfilesService, UseDefaultProfileFlags, WorkspaceIdentifier } from 'vs/platform/userDataProfile/common/userDataProfile'; import { IWorkspaceContextService, WorkbenchState } from 'vs/platform/workspace/common/workspace'; import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/common/environmentService'; @@ -132,4 +132,4 @@ export class UserDataProfileManagementService extends Disposable implements IUse } } -registerSingleton(IUserDataProfileManagementService, UserDataProfileManagementService, false); +registerSingleton(IUserDataProfileManagementService, UserDataProfileManagementService, InstantiationType.Eager /* Eager because it updates the current window profile by listening to profiles changes */); diff --git a/src/vs/workbench/services/userDataSync/browser/userDataSyncWorkbenchService.ts b/src/vs/workbench/services/userDataSync/browser/userDataSyncWorkbenchService.ts index 7be10aaa6f1..6f31c476c27 100644 --- a/src/vs/workbench/services/userDataSync/browser/userDataSyncWorkbenchService.ts +++ b/src/vs/workbench/services/userDataSync/browser/userDataSyncWorkbenchService.ts @@ -5,7 +5,7 @@ import { IUserDataSyncService, IAuthenticationProvider, isAuthenticationProvider, IUserDataAutoSyncService, SyncResource, IResourcePreview, ISyncResourcePreview, Change, IManualSyncTask, IUserDataSyncStoreManagementService, SyncStatus, IUserDataSyncEnablementService } from 'vs/platform/userDataSync/common/userDataSync'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; -import { registerSingleton } from 'vs/platform/instantiation/common/extensions'; +import { InstantiationType, registerSingleton } from 'vs/platform/instantiation/common/extensions'; import { IUserDataSyncWorkbenchService, IUserDataSyncAccount, AccountStatus, CONTEXT_SYNC_ENABLEMENT, CONTEXT_SYNC_STATE, CONTEXT_ACCOUNT_STATE, SHOW_SYNC_LOG_COMMAND_ID, getSyncAreaLabel, IUserDataSyncPreview, IUserDataSyncResource, CONTEXT_ENABLE_SYNC_MERGES_VIEW, SYNC_MERGES_VIEW_ID, CONTEXT_ENABLE_ACTIVITY_VIEWS, SYNC_VIEW_CONTAINER_ID, SYNC_TITLE } from 'vs/workbench/services/userDataSync/common/userDataSync'; import { Disposable, DisposableStore } from 'vs/base/common/lifecycle'; import { Emitter, Event } from 'vs/base/common/event'; @@ -819,4 +819,4 @@ class UserDataSyncPreview extends Disposable implements IUserDataSyncPreview { } -registerSingleton(IUserDataSyncWorkbenchService, UserDataSyncWorkbenchService, false); +registerSingleton(IUserDataSyncWorkbenchService, UserDataSyncWorkbenchService, InstantiationType.Eager /* Eager because it initializes settings sync accounts */); diff --git a/src/vs/workbench/services/userDataSync/electron-sandbox/userDataSyncAccountService.ts b/src/vs/workbench/services/userDataSync/electron-sandbox/userDataSyncAccountService.ts index c21c9d7980b..c9806977001 100644 --- a/src/vs/workbench/services/userDataSync/electron-sandbox/userDataSyncAccountService.ts +++ b/src/vs/workbench/services/userDataSync/electron-sandbox/userDataSyncAccountService.ts @@ -44,4 +44,4 @@ export class UserDataSyncAccountService extends Disposable implements IUserDataS } -registerSingleton(IUserDataSyncAccountService, UserDataSyncAccountService, false); +registerSingleton(IUserDataSyncAccountService, UserDataSyncAccountService, true); diff --git a/src/vs/workbench/workbench.web.main.ts b/src/vs/workbench/workbench.web.main.ts index faba2f465ce..f0fe083ef1b 100644 --- a/src/vs/workbench/workbench.web.main.ts +++ b/src/vs/workbench/workbench.web.main.ts @@ -100,7 +100,7 @@ registerSingleton(IUserDataSyncMachinesService, UserDataSyncMachinesService, tru registerSingleton(IUserDataSyncBackupStoreService, UserDataSyncBackupStoreService, true); registerSingleton(IUserDataSyncAccountService, UserDataSyncAccountService, true); registerSingleton(IUserDataSyncService, UserDataSyncService, true); -registerSingleton(IUserDataAutoSyncService, UserDataAutoSyncService, false); +registerSingleton(IUserDataAutoSyncService, UserDataAutoSyncService, InstantiationType.Eager /* Eager to start auto sync */); registerSingleton(ITitleService, TitlebarPart, InstantiationType.Eager); registerSingleton(IExtensionTipsService, ExtensionTipsService, true); registerSingleton(ITimerService, TimerService, true);