diff --git a/src/vs/code/electron-browser/sharedProcess/environmentService.ts b/src/vs/code/electron-browser/sharedProcess/environmentService.ts new file mode 100644 index 00000000000..ecf3f1d6aac --- /dev/null +++ b/src/vs/code/electron-browser/sharedProcess/environmentService.ts @@ -0,0 +1,16 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import { memoize } from 'vs/base/common/decorators'; +import { Schemas } from 'vs/base/common/network'; +import { URI } from 'vs/base/common/uri'; +import { NativeEnvironmentService } from 'vs/platform/environment/node/environmentService'; + +export class SharedProcessEnvironmentService extends NativeEnvironmentService { + + @memoize + override get userRoamingDataHome(): URI { return this.appSettingsHome.with({ scheme: Schemas.userData }); } + +} diff --git a/src/vs/code/electron-browser/sharedProcess/sharedProcessMain.ts b/src/vs/code/electron-browser/sharedProcess/sharedProcessMain.ts index 5c275e24541..f9a7b32ed76 100644 --- a/src/vs/code/electron-browser/sharedProcess/sharedProcessMain.ts +++ b/src/vs/code/electron-browser/sharedProcess/sharedProcessMain.ts @@ -28,7 +28,6 @@ import { DiagnosticsService } from 'vs/platform/diagnostics/node/diagnosticsServ import { IDownloadService } from 'vs/platform/download/common/download'; import { DownloadService } from 'vs/platform/download/common/downloadService'; import { INativeEnvironmentService } from 'vs/platform/environment/common/environment'; -import { NativeEnvironmentService } from 'vs/platform/environment/node/environmentService'; import { GlobalExtensionEnablementService } from 'vs/platform/extensionManagement/common/extensionEnablementService'; import { ExtensionGalleryService } from 'vs/platform/extensionManagement/common/extensionGalleryService'; import { IExtensionGalleryService, IExtensionManagementService, IExtensionTipsService, IGlobalExtensionEnablementService } from 'vs/platform/extensionManagement/common/extensionManagement'; @@ -95,6 +94,9 @@ import { IUserConfigurationFileService, UserConfigurationFileServiceId } from 'v import { AssignmentService } from 'vs/platform/assignment/common/assignmentService'; import { IUriIdentityService } from 'vs/platform/uriIdentity/common/uriIdentity'; import { UriIdentityService } from 'vs/platform/uriIdentity/common/uriIdentityService'; +import { IPCFileSystemProvider } from 'vs/platform/files/common/ipcFileSystemProvider'; +import { isLinux } from 'vs/base/common/platform'; +import { SharedProcessEnvironmentService } from 'vs/code/electron-browser/sharedProcess/environmentService'; class SharedProcessMain extends Disposable { @@ -176,7 +178,7 @@ class SharedProcessMain extends Disposable { services.set(IMainProcessService, mainProcessService); // Environment - const environmentService = new NativeEnvironmentService(this.configuration.args, productService); + const environmentService = new SharedProcessEnvironmentService(this.configuration.args, productService); services.set(INativeEnvironmentService, environmentService); // Logger @@ -204,6 +206,9 @@ class SharedProcessMain extends Disposable { const diskFileSystemProvider = this._register(new DiskFileSystemProvider(logService)); fileService.registerProvider(Schemas.file, diskFileSystemProvider); + const userDataFileSystemProvider = this._register(new IPCFileSystemProvider(mainProcessService.getChannel('localFilesystem'), { pathCaseSensitive: !isLinux })); + fileService.registerProvider(Schemas.userData, userDataFileSystemProvider); + // Configuration const configurationService = this._register(new ConfigurationService(environmentService.settingsResource, fileService)); services.set(IConfigurationService, configurationService); diff --git a/src/vs/code/electron-main/app.ts b/src/vs/code/electron-main/app.ts index 19c575b0f27..c543a2c4260 100644 --- a/src/vs/code/electron-main/app.ts +++ b/src/vs/code/electron-main/app.ts @@ -571,6 +571,7 @@ export class CodeApplication extends Disposable { assertType(diskFileSystemProvider instanceof DiskFileSystemProvider); const fileSystemProviderChannel = new DiskFileSystemProviderChannel(diskFileSystemProvider, this.logService); mainProcessElectronServer.registerChannel('localFilesystem', fileSystemProviderChannel); + sharedProcessClient.then(client => client.registerChannel('localFilesystem', fileSystemProviderChannel)); // User Configuration File const userConfigurationFileService = new UserConfigurationFileService(this.environmentMainService, this.fileService, this.logService);