From fabd8a57ec55d5de8e2c45c4be2752407c77f4e8 Mon Sep 17 00:00:00 2001 From: Alex Dima Date: Wed, 24 Jan 2018 15:42:08 +0100 Subject: [PATCH] Remove custom marshaller in tasks extension host communication (#40169) --- .../api/electron-browser/mainThreadTask.ts | 5 +++-- src/vs/workbench/api/node/extHost.protocol.ts | 16 +++++----------- src/vs/workbench/api/node/extHostTask.ts | 6 +++--- src/vs/workbench/parts/tasks/common/tasks.ts | 4 ++-- 4 files changed, 13 insertions(+), 18 deletions(-) diff --git a/src/vs/workbench/api/electron-browser/mainThreadTask.ts b/src/vs/workbench/api/electron-browser/mainThreadTask.ts index f85ee2a039a..9980e755deb 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadTask.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadTask.ts @@ -13,6 +13,7 @@ import { ITaskService } from 'vs/workbench/parts/tasks/common/taskService'; import { ExtHostContext, MainThreadTaskShape, ExtHostTaskShape, MainContext, IExtHostContext } from '../node/extHost.protocol'; import { extHostNamedCustomer } from 'vs/workbench/api/electron-browser/extHostCustomers'; +import URI from 'vs/base/common/uri'; @extHostNamedCustomer(MainContext.MainThreadTask) export class MainThreadTask implements MainThreadTaskShape { @@ -45,7 +46,7 @@ export class MainThreadTask implements MainThreadTaskShape { let uri = (task._source as any as ExtensionTaskSourceTransfer).__workspaceFolder; if (uri) { delete (task._source as any as ExtensionTaskSourceTransfer).__workspaceFolder; - (task._source as any).workspaceFolder = this._workspaceContextServer.getWorkspaceFolder(uri); + (task._source as any).workspaceFolder = this._workspaceContextServer.getWorkspaceFolder(URI.revive(uri)); } } } @@ -57,7 +58,7 @@ export class MainThreadTask implements MainThreadTaskShape { return TPromise.wrap(undefined); } - public $unregisterTaskProvider(handle: number): TPromise { + public $unregisterTaskProvider(handle: number): TPromise { this._taskService.unregisterTaskProvider(handle); delete this._activeHandles[handle]; return TPromise.wrap(undefined); diff --git a/src/vs/workbench/api/node/extHost.protocol.ts b/src/vs/workbench/api/node/extHost.protocol.ts index 84db14dbf9d..bbf64eded98 100644 --- a/src/vs/workbench/api/node/extHost.protocol.ts +++ b/src/vs/workbench/api/node/extHost.protocol.ts @@ -4,13 +4,7 @@ *--------------------------------------------------------------------------------------------*/ 'use strict'; -import { - createMainContextProxyIdentifier as createMainId, - createExtHostContextProxyIdentifier as createExtId, - ProxyIdentifier, - IRPCProtocol, - ProxyType -} from 'vs/workbench/services/extensions/node/proxyIdentifier'; +import { createMainContextProxyIdentifier as createMainId, createExtHostContextProxyIdentifier as createExtId, ProxyIdentifier, IRPCProtocol } from 'vs/workbench/services/extensions/node/proxyIdentifier'; import * as vscode from 'vscode'; @@ -374,8 +368,8 @@ export interface MainThreadFileSystemShape extends IDisposable { } export interface MainThreadTaskShape extends IDisposable { - $registerTaskProvider(handle: number): TPromise; - $unregisterTaskProvider(handle: number): TPromise; + $registerTaskProvider(handle: number): TPromise; + $unregisterTaskProvider(handle: number): TPromise; } export interface MainThreadExtensionServiceShape extends IDisposable { @@ -788,7 +782,7 @@ export const MainContext = { MainThreadFileSystem: createMainId('MainThreadFileSystem'), MainThreadExtensionService: createMainId('MainThreadExtensionService'), MainThreadSCM: createMainId('MainThreadSCM'), - MainThreadTask: createMainId('MainThreadTask', ProxyType.CustomMarshaller), + MainThreadTask: createMainId('MainThreadTask'), MainThreadWindow: createMainId('MainThreadWindow'), }; @@ -813,7 +807,7 @@ export const ExtHostContext = { ExtHostLogService: createExtId('ExtHostLogService'), ExtHostTerminalService: createExtId('ExtHostTerminalService'), ExtHostSCM: createExtId('ExtHostSCM'), - ExtHostTask: createExtId('ExtHostTask', ProxyType.CustomMarshaller), + ExtHostTask: createExtId('ExtHostTask'), ExtHostWorkspace: createExtId('ExtHostWorkspace'), ExtHostWindow: createExtId('ExtHostWindow'), }; diff --git a/src/vs/workbench/api/node/extHostTask.ts b/src/vs/workbench/api/node/extHostTask.ts index 41cb0357367..58357c83862 100644 --- a/src/vs/workbench/api/node/extHostTask.ts +++ b/src/vs/workbench/api/node/extHostTask.ts @@ -294,11 +294,11 @@ namespace ShellConfiguration { namespace Tasks { - export function from(tasks: vscode.Task[], rootFolder: vscode.WorkspaceFolder, extension: IExtensionDescription): TaskSystem.Task[] { + export function from(tasks: vscode.Task[], rootFolder: vscode.WorkspaceFolder, extension: IExtensionDescription): TaskSystem.ContributedTask[] { if (tasks === void 0 || tasks === null) { return []; } - let result: TaskSystem.Task[] = []; + let result: TaskSystem.ContributedTask[] = []; for (let task of tasks) { let converted = fromSingle(task, rootFolder, extension); if (converted) { @@ -351,7 +351,7 @@ namespace Tasks { // We can't transfer a workspace folder object from the extension host to main since they differ // in shape and we don't have backwards converting function. So transfer the URI and resolve the // workspace folder on the main side. - (source as any).__workspaceFolder = workspaceFolder ? workspaceFolder.uri as URI : undefined; + (source as any as TaskSystem.ExtensionTaskSourceTransfer).__workspaceFolder = workspaceFolder ? workspaceFolder.uri as URI : undefined; let label = nls.localize('task.label', '{0}: {1}', source.label, task.name); let key = (task as types.Task).definitionKey; let kind = (task as types.Task).definition; diff --git a/src/vs/workbench/parts/tasks/common/tasks.ts b/src/vs/workbench/parts/tasks/common/tasks.ts index 1aebf6b4018..4d29f195584 100644 --- a/src/vs/workbench/parts/tasks/common/tasks.ts +++ b/src/vs/workbench/parts/tasks/common/tasks.ts @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ 'use strict'; -import URI from 'vs/base/common/uri'; +import { UriComponents } from 'vs/base/common/uri'; import * as Types from 'vs/base/common/types'; import { IJSONSchemaMap } from 'vs/base/common/jsonSchema'; import * as Objects from 'vs/base/common/objects'; @@ -246,7 +246,7 @@ export interface ExtensionTaskSource { } export interface ExtensionTaskSourceTransfer { - __workspaceFolder: URI; + __workspaceFolder: UriComponents; } export interface InMemoryTaskSource { -- GitLab