From 4f433ed0df0b9322bead1246258c331952fe677b Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Wed, 13 Dec 2017 18:11:15 +0100 Subject: [PATCH] more native json, #40169 --- src/vs/base/common/uri.ts | 14 ++++++++++---- src/vs/workbench/api/node/extHost.protocol.ts | 8 ++++---- src/vs/workbench/api/node/extHostDecorations.ts | 6 +++--- .../api/node/extHostDocumentContentProviders.ts | 6 +++--- 4 files changed, 20 insertions(+), 14 deletions(-) diff --git a/src/vs/base/common/uri.ts b/src/vs/base/common/uri.ts index 2ccad2d4ad3..5bff36d302a 100644 --- a/src/vs/base/common/uri.ts +++ b/src/vs/base/common/uri.ts @@ -315,10 +315,16 @@ export default class URI implements UriComponents { } static revive(data: UriComponents | any): URI { - let result = new _URI(data); - result._fsPath = (data).fsPath; - result._formatted = (data).external; - return result; + if (!data) { + return data; + } else if (data instanceof URI) { + return data; + } else { + let result = new _URI(data); + result._fsPath = (data).fsPath; + result._formatted = (data).external; + return result; + } } } diff --git a/src/vs/workbench/api/node/extHost.protocol.ts b/src/vs/workbench/api/node/extHost.protocol.ts index 6b01a762d63..48751f1aa75 100644 --- a/src/vs/workbench/api/node/extHost.protocol.ts +++ b/src/vs/workbench/api/node/extHost.protocol.ts @@ -433,7 +433,7 @@ export interface ExtHostDiagnosticsShape { } export interface ExtHostDocumentContentProvidersShape { - $provideTextDocumentContent(handle: number, uri: URI): TPromise; + $provideTextDocumentContent(handle: number, uri: UriComponents): TPromise; } export interface IModelAddedData { @@ -655,7 +655,7 @@ export interface ExtHostDebugServiceShape { export type DecorationData = [number, boolean, string, string, ThemeColor, string]; export interface ExtHostDecorationsShape { - $providerDecorations(handle: number, uri: URI): TPromise; + $providerDecorations(handle: number, uri: UriComponents): TPromise; } export interface ExtHostWindowShape { @@ -699,10 +699,10 @@ export const ExtHostContext = { ExtHostConfiguration: createExtId('ExtHostConfiguration', ProxyType.CustomMarshaller), ExtHostDiagnostics: createExtId('ExtHostDiagnostics'), ExtHostDebugService: createExtId('ExtHostDebugService', ProxyType.CustomMarshaller), - ExtHostDecorations: createExtId('ExtHostDecorations', ProxyType.CustomMarshaller), + ExtHostDecorations: createExtId('ExtHostDecorations'), ExtHostDocumentsAndEditors: createExtId('ExtHostDocumentsAndEditors', ProxyType.CustomMarshaller), ExtHostDocuments: createExtId('ExtHostDocuments'), - ExtHostDocumentContentProviders: createExtId('ExtHostDocumentContentProviders', ProxyType.CustomMarshaller), + ExtHostDocumentContentProviders: createExtId('ExtHostDocumentContentProviders'), ExtHostDocumentSaveParticipant: createExtId('ExtHostDocumentSaveParticipant', ProxyType.CustomMarshaller), ExtHostEditors: createExtId('ExtHostEditors', ProxyType.CustomMarshaller), ExtHostTreeViews: createExtId('ExtHostTreeViews'), diff --git a/src/vs/workbench/api/node/extHostDecorations.ts b/src/vs/workbench/api/node/extHostDecorations.ts index 1888711551a..9581bfc5bc9 100644 --- a/src/vs/workbench/api/node/extHostDecorations.ts +++ b/src/vs/workbench/api/node/extHostDecorations.ts @@ -5,7 +5,7 @@ 'use strict'; import * as vscode from 'vscode'; -import URI from 'vs/base/common/uri'; +import URI, { UriComponents } from 'vs/base/common/uri'; import { MainContext, IMainContext, ExtHostDecorationsShape, MainThreadDecorationsShape, DecorationData } from 'vs/workbench/api/node/extHost.protocol'; import { TPromise } from 'vs/base/common/winjs.base'; import { Disposable } from 'vs/workbench/api/node/extHostTypes'; @@ -38,9 +38,9 @@ export class ExtHostDecorations implements ExtHostDecorationsShape { }); } - $providerDecorations(handle: number, uri: URI): TPromise { + $providerDecorations(handle: number, data: UriComponents): TPromise { const provider = this._provider.get(handle); - return asWinJsPromise(token => provider.provideDecoration(uri, token)).then(data => { + return asWinJsPromise(token => provider.provideDecoration(URI.revive(data), token)).then(data => { return data && [data.priority, data.bubble, data.title, data.abbreviation, data.color, data.source]; }); } diff --git a/src/vs/workbench/api/node/extHostDocumentContentProviders.ts b/src/vs/workbench/api/node/extHostDocumentContentProviders.ts index 7ac4de0d212..ac478a894db 100644 --- a/src/vs/workbench/api/node/extHostDocumentContentProviders.ts +++ b/src/vs/workbench/api/node/extHostDocumentContentProviders.ts @@ -6,7 +6,7 @@ import { onUnexpectedError } from 'vs/base/common/errors'; import * as editorCommon from 'vs/editor/common/editorCommon'; -import URI from 'vs/base/common/uri'; +import URI, { UriComponents } from 'vs/base/common/uri'; import { IDisposable } from 'vs/base/common/lifecycle'; import { Disposable } from 'vs/workbench/api/node/extHostTypes'; import { TPromise } from 'vs/base/common/winjs.base'; @@ -78,11 +78,11 @@ export class ExtHostDocumentContentProvider implements ExtHostDocumentContentPro }); } - $provideTextDocumentContent(handle: number, uri: URI): TPromise { + $provideTextDocumentContent(handle: number, uri: UriComponents): TPromise { const provider = this._documentContentProviders.get(handle); if (!provider) { return TPromise.wrapError(new Error(`unsupported uri-scheme: ${uri.scheme}`)); } - return asWinJsPromise(token => provider.provideTextDocumentContent(uri, token)); + return asWinJsPromise(token => provider.provideTextDocumentContent(URI.revive(uri), token)); } } -- GitLab