From 16ff0ce22a331e653a03fee308c6cf1f94a6c832 Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu Date: Fri, 18 Sep 2020 11:36:25 +0200 Subject: [PATCH] Disable syncing extensions in Web --- .../userDataSyncResourceEnablementService.ts | 6 +++- .../userDataSyncResourceEnablementService.ts | 33 +++++++++++++++++++ src/vs/workbench/workbench.common.main.ts | 3 -- src/vs/workbench/workbench.desktop.main.ts | 3 ++ src/vs/workbench/workbench.web.main.ts | 1 + 5 files changed, 42 insertions(+), 4 deletions(-) create mode 100644 src/vs/workbench/services/userDataSync/browser/userDataSyncResourceEnablementService.ts diff --git a/src/vs/platform/userDataSync/common/userDataSyncResourceEnablementService.ts b/src/vs/platform/userDataSync/common/userDataSyncResourceEnablementService.ts index 0ca0decce1c..9b9a0dbe213 100644 --- a/src/vs/platform/userDataSync/common/userDataSyncResourceEnablementService.ts +++ b/src/vs/platform/userDataSync/common/userDataSyncResourceEnablementService.ts @@ -32,7 +32,7 @@ export class UserDataSyncResourceEnablementService extends Disposable implements } isResourceEnabled(resource: SyncResource): boolean { - return this.storageService.getBoolean(getEnablementKey(resource), StorageScope.GLOBAL, true); + return this.storageService.getBoolean(getEnablementKey(resource), StorageScope.GLOBAL, this.getDefaultResourceEnablementValue(resource)); } setResourceEnablement(resource: SyncResource, enabled: boolean): void { @@ -53,4 +53,8 @@ export class UserDataSyncResourceEnablementService extends Disposable implements } } + protected getDefaultResourceEnablementValue(resource: SyncResource): boolean { + return true; + } + } diff --git a/src/vs/workbench/services/userDataSync/browser/userDataSyncResourceEnablementService.ts b/src/vs/workbench/services/userDataSync/browser/userDataSyncResourceEnablementService.ts new file mode 100644 index 00000000000..bda46ffbecc --- /dev/null +++ b/src/vs/workbench/services/userDataSync/browser/userDataSyncResourceEnablementService.ts @@ -0,0 +1,33 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import { IUserDataSyncResourceEnablementService, SyncResource } from 'vs/platform/userDataSync/common/userDataSync'; +import { IStorageService } from 'vs/platform/storage/common/storage'; +import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; +import { UserDataSyncResourceEnablementService } from 'vs/platform/userDataSync/common/userDataSyncResourceEnablementService'; +import { IExtensionManagementServerService } from 'vs/workbench/services/extensionManagement/common/extensionManagement'; +import { registerSingleton } from 'vs/platform/instantiation/common/extensions'; + +export class WebUserDataSyncResourceEnablementService extends UserDataSyncResourceEnablementService implements IUserDataSyncResourceEnablementService { + + constructor( + @IStorageService storageService: IStorageService, + @ITelemetryService telemetryService: ITelemetryService, + @IExtensionManagementServerService private readonly extensionManagementServerService: IExtensionManagementServerService, + ) { + super(storageService, telemetryService); + } + + protected getDefaultResourceEnablementValue(resource: SyncResource): boolean { + if (resource === SyncResource.Extensions) { + // In Web, disable syncing extensions by default when there is a remote server + return !this.extensionManagementServerService.remoteExtensionManagementServer; + } + return super.getDefaultResourceEnablementValue(resource); + } + +} + +registerSingleton(IUserDataSyncResourceEnablementService, WebUserDataSyncResourceEnablementService); diff --git a/src/vs/workbench/workbench.common.main.ts b/src/vs/workbench/workbench.common.main.ts index fd7d340e46c..5285bb3ed76 100644 --- a/src/vs/workbench/workbench.common.main.ts +++ b/src/vs/workbench/workbench.common.main.ts @@ -112,10 +112,7 @@ import { IDownloadService } from 'vs/platform/download/common/download'; import { DownloadService } from 'vs/platform/download/common/downloadService'; import { OpenerService } from 'vs/editor/browser/services/openerService'; import { IOpenerService } from 'vs/platform/opener/common/opener'; -import { IUserDataSyncResourceEnablementService } from 'vs/platform/userDataSync/common/userDataSync'; -import { UserDataSyncResourceEnablementService } from 'vs/platform/userDataSync/common/userDataSyncResourceEnablementService'; -registerSingleton(IUserDataSyncResourceEnablementService, UserDataSyncResourceEnablementService); registerSingleton(IGlobalExtensionEnablementService, GlobalExtensionEnablementService); registerSingleton(IExtensionGalleryService, ExtensionGalleryService, true); registerSingleton(IContextViewService, ContextViewService, true); diff --git a/src/vs/workbench/workbench.desktop.main.ts b/src/vs/workbench/workbench.desktop.main.ts index 5fd2222b446..4cba33ba087 100644 --- a/src/vs/workbench/workbench.desktop.main.ts +++ b/src/vs/workbench/workbench.desktop.main.ts @@ -62,9 +62,12 @@ import { KeytarCredentialsService } from 'vs/platform/credentials/node/credentia import { ITunnelService } from 'vs/platform/remote/common/tunnel'; import { TunnelService } from 'vs/platform/remote/node/tunnelService'; import { IUserDataInitializationService, UserDataInitializationService } from 'vs/workbench/services/userData/browser/userDataInit'; +import { IUserDataSyncResourceEnablementService } from 'vs/platform/userDataSync/common/userDataSync'; +import { UserDataSyncResourceEnablementService } from 'vs/platform/userDataSync/common/userDataSyncResourceEnablementService'; registerSingleton(ICredentialsService, KeytarCredentialsService, true); registerSingleton(ITunnelService, TunnelService); +registerSingleton(IUserDataSyncResourceEnablementService, UserDataSyncResourceEnablementService); registerSingleton(IUserDataInitializationService, UserDataInitializationService); //#endregion diff --git a/src/vs/workbench/workbench.web.main.ts b/src/vs/workbench/workbench.web.main.ts index 014b8e33684..936e9b0b78a 100644 --- a/src/vs/workbench/workbench.web.main.ts +++ b/src/vs/workbench/workbench.web.main.ts @@ -51,6 +51,7 @@ import 'vs/workbench/services/clipboard/browser/clipboardService'; import 'vs/workbench/services/extensionResourceLoader/browser/extensionResourceLoaderService'; import 'vs/workbench/services/path/browser/pathService'; import 'vs/workbench/services/themes/browser/browserHostColorSchemeService'; +import 'vs/workbench/services/userDataSync/browser/userDataSyncResourceEnablementService'; import { registerSingleton } from 'vs/platform/instantiation/common/extensions'; import { IAccessibilityService } from 'vs/platform/accessibility/common/accessibility';