Skip to content

Commit fe3e0cd

Browse files
committed
Support request service in web
1 parent d57ddfa commit fe3e0cd

28 files changed

Lines changed: 327 additions & 374 deletions

File tree

src/vs/base/node/request.ts

Lines changed: 0 additions & 183 deletions
This file was deleted.

src/vs/code/electron-browser/sharedProcess/sharedProcessMain.ts

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ import { ExtensionManagementService } from 'vs/platform/extensionManagement/node
1919
import { ExtensionGalleryService } from 'vs/platform/extensionManagement/node/extensionGalleryService';
2020
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
2121
import { ConfigurationService } from 'vs/platform/configuration/node/configurationService';
22-
import { IRequestService } from 'vs/platform/request/node/request';
23-
import { RequestService } from 'vs/platform/request/electron-browser/requestService';
22+
import { IRequestService } from 'vs/platform/request/common/request';
23+
import { RequestService } from 'vs/platform/request/browser/requestService';
2424
import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
2525
import { combinedAppender, NullTelemetryService, ITelemetryAppender, NullAppender, LogAppender } from 'vs/platform/telemetry/common/telemetryUtils';
2626
import { resolveCommonProperties } from 'vs/platform/telemetry/node/commonProperties';
@@ -51,6 +51,10 @@ import { SpdLogService } from 'vs/platform/log/node/spdlogService';
5151
import { DiagnosticsService } from 'vs/platform/diagnostics/node/diagnosticsService';
5252
import { IDiagnosticsService } from 'vs/platform/diagnostics/common/diagnosticsService';
5353
import { DiagnosticsChannel } from 'vs/platform/diagnostics/node/diagnosticsIpc';
54+
import { FileService } from 'vs/platform/files/common/fileService';
55+
import { IFileService } from 'vs/platform/files/common/files';
56+
import { DiskFileSystemProvider } from 'vs/platform/files/electron-browser/diskFileSystemProvider';
57+
import { Schemas } from 'vs/base/common/network';
5458

5559
export interface ISharedProcessConfiguration {
5660
readonly machineId: string;
@@ -122,6 +126,15 @@ async function main(server: Server, initData: ISharedProcessInitData, configurat
122126
const dialogChannel = server.getChannel('dialog', activeWindowRouter);
123127
services.set(IDialogService, new DialogChannelClient(dialogChannel));
124128

129+
// Files
130+
const fileService = new FileService(logService);
131+
services.set(IFileService, fileService);
132+
disposables.add(fileService);
133+
134+
const diskFileSystemProvider = new DiskFileSystemProvider(logService);
135+
disposables.add(diskFileSystemProvider);
136+
fileService.registerProvider(Schemas.file, diskFileSystemProvider);
137+
125138
const instantiationService = new InstantiationService(services);
126139

127140
let telemetryService: ITelemetryService;

src/vs/code/electron-main/app.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,9 @@ import { statSync } from 'fs';
8383
import { ISignService } from 'vs/platform/sign/common/sign';
8484
import { IDiagnosticsService } from 'vs/platform/diagnostics/common/diagnosticsService';
8585
import { DiagnosticsService } from 'vs/platform/diagnostics/node/diagnosticsIpc';
86+
import { FileService } from 'vs/platform/files/common/fileService';
87+
import { IFileService } from 'vs/platform/files/common/files';
88+
import { DiskFileSystemProvider } from 'vs/platform/files/node/diskFileSystemProvider';
8689

8790
export class CodeApplication extends Disposable {
8891

@@ -418,6 +421,13 @@ export class CodeApplication extends Disposable {
418421
private async createServices(machineId: string, sharedProcess: SharedProcess, sharedProcessClient: Promise<Client<string>>): Promise<IInstantiationService> {
419422
const services = new ServiceCollection();
420423

424+
// Files
425+
const fileService = this._register(new FileService(this.logService));
426+
services.set(IFileService, fileService);
427+
428+
const diskFileSystemProvider = this._register(new DiskFileSystemProvider(this.logService));
429+
fileService.registerProvider(Schemas.file, diskFileSystemProvider);
430+
421431
switch (process.platform) {
422432
case 'win32':
423433
services.set(IUpdateService, new SyncDescriptor(Win32UpdateService));

src/vs/code/electron-main/main.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ import { IEnvironmentService, ParsedArgs } from 'vs/platform/environment/common/
2626
import { EnvironmentService } from 'vs/platform/environment/node/environmentService';
2727
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
2828
import { ConfigurationService } from 'vs/platform/configuration/node/configurationService';
29-
import { IRequestService } from 'vs/platform/request/node/request';
29+
import { IRequestService } from 'vs/platform/request/common/request';
3030
import { RequestService } from 'vs/platform/request/electron-main/requestService';
3131
import * as fs from 'fs';
3232
import { CodeApplication } from 'vs/code/electron-main/app';

src/vs/code/node/cliProcessMain.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
2222
import { combinedAppender, NullTelemetryService } from 'vs/platform/telemetry/common/telemetryUtils';
2323
import { TelemetryService, ITelemetryServiceConfig } from 'vs/platform/telemetry/common/telemetryService';
2424
import { resolveCommonProperties } from 'vs/platform/telemetry/node/commonProperties';
25-
import { IRequestService } from 'vs/platform/request/node/request';
25+
import { IRequestService } from 'vs/platform/request/common/request';
2626
import { RequestService } from 'vs/platform/request/node/requestService';
2727
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
2828
import { ConfigurationService } from 'vs/platform/configuration/node/configurationService';

src/vs/platform/download/node/downloadService.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,19 +7,20 @@ import { IDownloadService } from 'vs/platform/download/common/download';
77
import { URI } from 'vs/base/common/uri';
88
import { Schemas } from 'vs/base/common/network';
99
import { copy } from 'vs/base/node/pfs';
10-
import { IRequestService } from 'vs/platform/request/node/request';
11-
import { asText, download } from 'vs/base/node/request';
10+
import { IRequestService, asText } from 'vs/platform/request/common/request';
1211
import { CancellationToken } from 'vs/base/common/cancellation';
1312
import { join } from 'vs/base/common/path';
1413
import { tmpdir } from 'os';
1514
import { generateUuid } from 'vs/base/common/uuid';
15+
import { IFileService } from 'vs/platform/files/common/files';
1616

1717
export class DownloadService implements IDownloadService {
1818

1919
_serviceBrand: any;
2020

2121
constructor(
22-
@IRequestService private readonly requestService: IRequestService
22+
@IRequestService private readonly requestService: IRequestService,
23+
@IFileService private readonly fileService: IFileService
2324
) { }
2425

2526
download(uri: URI, target: string = join(tmpdir(), generateUuid()), cancellationToken: CancellationToken = CancellationToken.None): Promise<string> {
@@ -30,7 +31,7 @@ export class DownloadService implements IDownloadService {
3031
return this.requestService.request(options, cancellationToken)
3132
.then(context => {
3233
if (context.res.statusCode === 200) {
33-
return download(target, context).then(() => target);
34+
return this.fileService.writeFile(URI.file(target), context.stream).then(() => target);
3435
}
3536
return asText(context)
3637
.then(message => Promise.reject(new Error(`Expected 200, got back ${context.res.statusCode} instead.\n\n${message}`)));

src/vs/platform/extensionManagement/node/extensionGalleryService.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,9 @@ import { getErrorMessage, isPromiseCanceledError, canceled } from 'vs/base/commo
99
import { StatisticType, IGalleryExtension, IExtensionGalleryService, IGalleryExtensionAsset, IQueryOptions, SortBy, SortOrder, IExtensionIdentifier, IReportedExtension, InstallOperation, ITranslation, IGalleryExtensionVersion, IGalleryExtensionAssets, isIExtensionIdentifier } from 'vs/platform/extensionManagement/common/extensionManagement';
1010
import { getGalleryExtensionId, getGalleryExtensionTelemetryData, adoptToGalleryExtensionId } from 'vs/platform/extensionManagement/common/extensionManagementUtil';
1111
import { assign, getOrDefault } from 'vs/base/common/objects';
12-
import { IRequestService } from 'vs/platform/request/node/request';
1312
import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
1413
import { IPager } from 'vs/base/common/paging';
15-
import { IRequestOptions, IRequestContext, download, asJson, asText } from 'vs/base/node/request';
14+
import { IRequestService, IRequestOptions, IRequestContext, asJson, asText } from 'vs/platform/request/common/request';
1615
import pkg from 'vs/platform/product/node/package';
1716
import product from 'vs/platform/product/node/product';
1817
import { isEngineValid } from 'vs/platform/extensions/node/extensionValidator';
@@ -23,6 +22,8 @@ import { values } from 'vs/base/common/map';
2322
import { CancellationToken } from 'vs/base/common/cancellation';
2423
import { ILogService } from 'vs/platform/log/common/log';
2524
import { IExtensionManifest } from 'vs/platform/extensions/common/extensions';
25+
import { IFileService } from 'vs/platform/files/common/files';
26+
import { URI } from 'vs/base/common/uri';
2627

2728
interface IRawGalleryExtensionFile {
2829
assetType: string;
@@ -336,7 +337,8 @@ export class ExtensionGalleryService implements IExtensionGalleryService {
336337
@IRequestService private readonly requestService: IRequestService,
337338
@ILogService private readonly logService: ILogService,
338339
@IEnvironmentService private readonly environmentService: IEnvironmentService,
339-
@ITelemetryService private readonly telemetryService: ITelemetryService
340+
@ITelemetryService private readonly telemetryService: ITelemetryService,
341+
@IFileService private readonly fileService: IFileService,
340342
) {
341343
const config = product.extensionsGallery;
342344
this.extensionsGalleryUrl = config && config.serviceUrl;
@@ -555,7 +557,7 @@ export class ExtensionGalleryService implements IExtensionGalleryService {
555557
} : extension.assets.download;
556558

557559
return this.getAsset(downloadAsset)
558-
.then(context => download(zipPath, context))
560+
.then(context => this.fileService.writeFile(URI.file(zipPath), context.stream))
559561
.then(() => log(new Date().getTime() - startTime))
560562
.then(() => zipPath);
561563
}

src/vs/platform/files/common/files.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ export interface IFileService {
105105
/**
106106
* Updates the content replacing its previous value.
107107
*/
108-
writeFile(resource: URI, bufferOrReadable: VSBuffer | VSBufferReadable, options?: IWriteFileOptions): Promise<IFileStatWithMetadata>;
108+
writeFile(resource: URI, bufferOrReadable: VSBuffer | VSBufferReadable | VSBufferReadableStream, options?: IWriteFileOptions): Promise<IFileStatWithMetadata>;
109109

110110
/**
111111
* Moves the file/folder to a new path identified by the resource.

src/vs/platform/files/electron-browser/diskFileSystemProvider.ts

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,9 @@ import { FileDeleteOptions, FileSystemProviderCapabilities } from 'vs/platform/f
99
import { isWindows } from 'vs/base/common/platform';
1010
import { localize } from 'vs/nls';
1111
import { basename } from 'vs/base/common/path';
12-
import { ILogService } from 'vs/platform/log/common/log';
1312

1413
export class DiskFileSystemProvider extends NodeDiskFileSystemProvider {
1514

16-
constructor(logService: ILogService) {
17-
super(logService);
18-
}
19-
2015
get capabilities(): FileSystemProviderCapabilities {
2116
if (!this._capabilities) {
2217
this._capabilities = super.capabilities | FileSystemProviderCapabilities.Trash;

0 commit comments

Comments
 (0)