diff --git a/src/vs/workbench/api/electron-browser/mainThreadFileSystem.ts b/src/vs/workbench/api/electron-browser/mainThreadFileSystem.ts index 6234d4dd30b..acc5872827c 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadFileSystem.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadFileSystem.ts @@ -123,7 +123,9 @@ class RemoteFileSystemProvider implements IFileSystemProvider, ISearchResultProv return this._proxy.$mkdir(this._handle, resource); } readdir(resource: URI): TPromise<[URI, IStat][], any> { - return this._proxy.$readdir(this._handle, resource); + return this._proxy.$readdir(this._handle, resource).then(data => { + return data.map(tuple => <[URI, IStat]>[URI.revive(tuple[0]), tuple[1]]); + }); } rmdir(resource: URI): TPromise { return this._proxy.$rmdir(this._handle, resource); diff --git a/src/vs/workbench/api/node/extHost.protocol.ts b/src/vs/workbench/api/node/extHost.protocol.ts index 211893aaf91..630e378f69a 100644 --- a/src/vs/workbench/api/node/extHost.protocol.ts +++ b/src/vs/workbench/api/node/extHost.protocol.ts @@ -492,15 +492,15 @@ export interface ExtHostWorkspaceShape { } export interface ExtHostFileSystemShape { - $utimes(handle: number, resource: URI, mtime: number, atime: number): TPromise; - $stat(handle: number, resource: URI): TPromise; - $read(handle: number, offset: number, count: number, resource: URI): TPromise; - $write(handle: number, resource: URI, content: number[]): TPromise; - $unlink(handle: number, resource: URI): TPromise; - $move(handle: number, resource: URI, target: URI): TPromise; - $mkdir(handle: number, resource: URI): TPromise; - $readdir(handle: number, resource: URI): TPromise<[URI, IStat][]>; - $rmdir(handle: number, resource: URI): TPromise; + $utimes(handle: number, resource: UriComponents, mtime: number, atime: number): TPromise; + $stat(handle: number, resource: UriComponents): TPromise; + $read(handle: number, offset: number, count: number, resource: UriComponents): TPromise; + $write(handle: number, resource: UriComponents, content: number[]): TPromise; + $unlink(handle: number, resource: UriComponents): TPromise; + $move(handle: number, resource: UriComponents, target: UriComponents): TPromise; + $mkdir(handle: number, resource: UriComponents): TPromise; + $readdir(handle: number, resource: UriComponents): TPromise<[UriComponents, IStat][]>; + $rmdir(handle: number, resource: UriComponents): TPromise; $fileFiles(handle: number, session: number, query: string): TPromise; } @@ -705,7 +705,7 @@ export const ExtHostContext = { ExtHostDocumentSaveParticipant: createExtId('ExtHostDocumentSaveParticipant'), ExtHostEditors: createExtId('ExtHostEditors', ProxyType.CustomMarshaller), ExtHostTreeViews: createExtId('ExtHostTreeViews'), - ExtHostFileSystem: createExtId('ExtHostFileSystem', ProxyType.CustomMarshaller), + ExtHostFileSystem: createExtId('ExtHostFileSystem'), ExtHostFileSystemEventService: createExtId('ExtHostFileSystemEventService'), ExtHostHeapService: createExtId('ExtHostHeapMonitor'), ExtHostLanguageFeatures: createExtId('ExtHostLanguageFeatures', ProxyType.CustomMarshaller), diff --git a/src/vs/workbench/api/node/extHostFileSystem.ts b/src/vs/workbench/api/node/extHostFileSystem.ts index b89a252b593..3cdd834d7a7 100644 --- a/src/vs/workbench/api/node/extHostFileSystem.ts +++ b/src/vs/workbench/api/node/extHostFileSystem.ts @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ 'use strict'; -import URI from 'vs/base/common/uri'; +import URI, { UriComponents } from 'vs/base/common/uri'; import { TPromise } from 'vs/base/common/winjs.base'; import { MainContext, IMainContext, ExtHostFileSystemShape, MainThreadFileSystemShape } from './extHost.protocol'; import * as vscode from 'vscode'; @@ -42,37 +42,37 @@ export class ExtHostFileSystem implements ExtHostFileSystemShape { }; } - $utimes(handle: number, resource: URI, mtime: number, atime: number): TPromise { - return asWinJsPromise(token => this._provider.get(handle).utimes(resource, mtime, atime)); + $utimes(handle: number, resource: UriComponents, mtime: number, atime: number): TPromise { + return asWinJsPromise(token => this._provider.get(handle).utimes(URI.revive(resource), mtime, atime)); } - $stat(handle: number, resource: URI): TPromise { - return asWinJsPromise(token => this._provider.get(handle).stat(resource)); + $stat(handle: number, resource: UriComponents): TPromise { + return asWinJsPromise(token => this._provider.get(handle).stat(URI.revive(resource))); } - $read(handle: number, offset: number, count: number, resource: URI): TPromise { + $read(handle: number, offset: number, count: number, resource: UriComponents): TPromise { const progress = { report: chunk => { this._proxy.$reportFileChunk(handle, resource, [].slice.call(chunk)); } }; - return asWinJsPromise(token => this._provider.get(handle).read(resource, offset, count, progress)); + return asWinJsPromise(token => this._provider.get(handle).read(URI.revive(resource), offset, count, progress)); } - $write(handle: number, resource: URI, content: number[]): TPromise { - return asWinJsPromise(token => this._provider.get(handle).write(resource, Buffer.from(content))); + $write(handle: number, resource: UriComponents, content: number[]): TPromise { + return asWinJsPromise(token => this._provider.get(handle).write(URI.revive(resource), Buffer.from(content))); } - $unlink(handle: number, resource: URI): TPromise { - return asWinJsPromise(token => this._provider.get(handle).unlink(resource)); + $unlink(handle: number, resource: UriComponents): TPromise { + return asWinJsPromise(token => this._provider.get(handle).unlink(URI.revive(resource))); } - $move(handle: number, resource: URI, target: URI): TPromise { - return asWinJsPromise(token => this._provider.get(handle).move(resource, target)); + $move(handle: number, resource: UriComponents, target: UriComponents): TPromise { + return asWinJsPromise(token => this._provider.get(handle).move(URI.revive(resource), URI.revive(target))); } - $mkdir(handle: number, resource: URI): TPromise { - return asWinJsPromise(token => this._provider.get(handle).mkdir(resource)); + $mkdir(handle: number, resource: UriComponents): TPromise { + return asWinJsPromise(token => this._provider.get(handle).mkdir(URI.revive(resource))); } - $readdir(handle: number, resource: URI): TPromise<[URI, IStat][], any> { - return asWinJsPromise(token => this._provider.get(handle).readdir(resource)); + $readdir(handle: number, resource: UriComponents): TPromise<[UriComponents, IStat][], any> { + return asWinJsPromise(token => this._provider.get(handle).readdir(URI.revive(resource))); } - $rmdir(handle: number, resource: URI): TPromise { - return asWinJsPromise(token => this._provider.get(handle).rmdir(resource)); + $rmdir(handle: number, resource: UriComponents): TPromise { + return asWinJsPromise(token => this._provider.get(handle).rmdir(URI.revive(resource))); } $fileFiles(handle: number, session: number, query: string): TPromise { const provider = this._provider.get(handle);