From 5bc5d315a3a554f5779250c5bb069378778e6c82 Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Thu, 17 Sep 2020 16:35:21 +0200 Subject: [PATCH] sandbox - separate native host service implementation from interfaces --- .../issue/issueReporterMain.ts | 3 +- .../processExplorer/processExplorerMain.ts | 3 +- .../native/electron-sandbox/native.ts | 23 --------------- .../electron-sandbox/nativeHostService.ts | 29 +++++++++++++++++++ .../electron-browser/desktop.main.ts | 3 +- .../electron-sandbox/desktop.main.ts | 3 +- 6 files changed, 37 insertions(+), 27 deletions(-) create mode 100644 src/vs/platform/native/electron-sandbox/nativeHostService.ts diff --git a/src/vs/code/electron-sandbox/issue/issueReporterMain.ts b/src/vs/code/electron-sandbox/issue/issueReporterMain.ts index 27db658d34d..1a9ef9e5776 100644 --- a/src/vs/code/electron-sandbox/issue/issueReporterMain.ts +++ b/src/vs/code/electron-sandbox/issue/issueReporterMain.ts @@ -5,7 +5,8 @@ import 'vs/css!./media/issueReporter'; import 'vs/base/browser/ui/codicons/codiconStyles'; // make sure codicon css is loaded -import { NativeHostService, INativeHostService } from 'vs/platform/native/electron-sandbox/native'; +import { INativeHostService } from 'vs/platform/native/electron-sandbox/native'; +import { NativeHostService } from 'vs/platform/native/electron-sandbox/nativeHostService'; import { ipcRenderer, process } from 'vs/base/parts/sandbox/electron-sandbox/globals'; import { applyZoom, zoomIn, zoomOut } from 'vs/platform/windows/electron-sandbox/window'; import { $, reset, windowOpenNoOpener, addClass } from 'vs/base/browser/dom'; diff --git a/src/vs/code/electron-sandbox/processExplorer/processExplorerMain.ts b/src/vs/code/electron-sandbox/processExplorer/processExplorerMain.ts index 2f2c915524d..e93807545af 100644 --- a/src/vs/code/electron-sandbox/processExplorer/processExplorerMain.ts +++ b/src/vs/code/electron-sandbox/processExplorer/processExplorerMain.ts @@ -5,7 +5,8 @@ import 'vs/css!./media/processExplorer'; import 'vs/base/browser/ui/codicons/codiconStyles'; // make sure codicon css is loaded -import { NativeHostService, INativeHostService } from 'vs/platform/native/electron-sandbox/native'; +import { INativeHostService } from 'vs/platform/native/electron-sandbox/native'; +import { NativeHostService } from 'vs/platform/native/electron-sandbox/nativeHostService'; import { ipcRenderer } from 'vs/base/parts/sandbox/electron-sandbox/globals'; import { localize } from 'vs/nls'; import { ProcessExplorerStyles, ProcessExplorerData } from 'vs/platform/issue/common/issue'; diff --git a/src/vs/platform/native/electron-sandbox/native.ts b/src/vs/platform/native/electron-sandbox/native.ts index 5172e5d6f85..e8b4d4adfb8 100644 --- a/src/vs/platform/native/electron-sandbox/native.ts +++ b/src/vs/platform/native/electron-sandbox/native.ts @@ -5,30 +5,7 @@ import { createDecorator } from 'vs/platform/instantiation/common/instantiation'; import { ICommonNativeHostService } from 'vs/platform/native/common/native'; -import { IMainProcessService } from 'vs/platform/ipc/electron-sandbox/mainProcessService'; -import { createChannelSender } from 'vs/base/parts/ipc/common/ipc'; export const INativeHostService = createDecorator('nativeHostService'); export interface INativeHostService extends ICommonNativeHostService { } - -// @ts-ignore: interface is implemented via proxy -export class NativeHostService implements INativeHostService { - - declare readonly _serviceBrand: undefined; - - constructor( - readonly windowId: number, - @IMainProcessService mainProcessService: IMainProcessService - ) { - return createChannelSender(mainProcessService.getChannel('nativeHost'), { - context: windowId, - properties: (() => { - const properties = new Map(); - properties.set('windowId', windowId); - - return properties; - })() - }); - } -} diff --git a/src/vs/platform/native/electron-sandbox/nativeHostService.ts b/src/vs/platform/native/electron-sandbox/nativeHostService.ts new file mode 100644 index 00000000000..2175c479423 --- /dev/null +++ b/src/vs/platform/native/electron-sandbox/nativeHostService.ts @@ -0,0 +1,29 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import { INativeHostService } from 'vs/platform/native/electron-sandbox/native'; +import { IMainProcessService } from 'vs/platform/ipc/electron-sandbox/mainProcessService'; +import { createChannelSender } from 'vs/base/parts/ipc/common/ipc'; + +// @ts-ignore: interface is implemented via proxy +export class NativeHostService implements INativeHostService { + + declare readonly _serviceBrand: undefined; + + constructor( + readonly windowId: number, + @IMainProcessService mainProcessService: IMainProcessService + ) { + return createChannelSender(mainProcessService.getChannel('nativeHost'), { + context: windowId, + properties: (() => { + const properties = new Map(); + properties.set('windowId', windowId); + + return properties; + })() + }); + } +} diff --git a/src/vs/workbench/electron-browser/desktop.main.ts b/src/vs/workbench/electron-browser/desktop.main.ts index 348c5f27394..a4b74123f65 100644 --- a/src/vs/workbench/electron-browser/desktop.main.ts +++ b/src/vs/workbench/electron-browser/desktop.main.ts @@ -48,7 +48,8 @@ import product from 'vs/platform/product/common/product'; import { NativeResourceIdentityService } from 'vs/platform/resource/node/resourceIdentityServiceImpl'; import { IResourceIdentityService } from 'vs/platform/resource/common/resourceIdentityService'; import { NativeLogService } from 'vs/workbench/services/log/electron-browser/logService'; -import { INativeHostService, NativeHostService } from 'vs/platform/native/electron-sandbox/native'; +import { INativeHostService } from 'vs/platform/native/electron-sandbox/native'; +import { NativeHostService } from 'vs/platform/native/electron-sandbox/nativeHostService'; class DesktopMain extends Disposable { diff --git a/src/vs/workbench/electron-sandbox/desktop.main.ts b/src/vs/workbench/electron-sandbox/desktop.main.ts index c8c882cb5f8..a9003c14794 100644 --- a/src/vs/workbench/electron-sandbox/desktop.main.ts +++ b/src/vs/workbench/electron-sandbox/desktop.main.ts @@ -30,7 +30,8 @@ import { FileUserDataProvider } from 'vs/workbench/services/userData/common/file import { IProductService } from 'vs/platform/product/common/productService'; import product from 'vs/platform/product/common/product'; import { IResourceIdentityService } from 'vs/platform/resource/common/resourceIdentityService'; -import { INativeHostService, NativeHostService } from 'vs/platform/native/electron-sandbox/native'; +import { INativeHostService } from 'vs/platform/native/electron-sandbox/native'; +import { NativeHostService } from 'vs/platform/native/electron-sandbox/nativeHostService'; import { SimpleConfigurationService, simpleFileSystemProvider, SimpleLogService, SimpleRemoteAgentService, SimpleResourceIdentityService, SimpleSignService, SimpleStorageService, SimpleWorkbenchEnvironmentService, SimpleWorkspaceService } from 'vs/workbench/electron-sandbox/sandbox.simpleservices'; import { INativeWorkbenchConfiguration } from 'vs/workbench/services/environment/electron-sandbox/environmentService'; import { RemoteAuthorityResolverService } from 'vs/platform/remote/electron-sandbox/remoteAuthorityResolverService'; -- GitLab