From 728e657c4938cbcb2cc350263d5fcaaf5755bacc Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu Date: Tue, 21 Aug 2018 11:21:57 +0200 Subject: [PATCH] Make download service optional --- src/vs/code/node/cliProcessMain.ts | 3 -- .../platform/download/node/downloadService.ts | 38 ------------------- .../node/extensionManagementService.ts | 6 ++- src/vs/workbench/electron-browser/shell.ts | 3 -- 4 files changed, 5 insertions(+), 45 deletions(-) delete mode 100644 src/vs/platform/download/node/downloadService.ts diff --git a/src/vs/code/node/cliProcessMain.ts b/src/vs/code/node/cliProcessMain.ts index 9ed28b80f05..0731a9d7b13 100644 --- a/src/vs/code/node/cliProcessMain.ts +++ b/src/vs/code/node/cliProcessMain.ts @@ -42,8 +42,6 @@ import { CommandLineDialogService } from 'vs/platform/dialogs/node/dialogService import { areSameExtensions, getGalleryExtensionIdFromLocal } from 'vs/platform/extensionManagement/common/extensionManagementUtil'; import Severity from 'vs/base/common/severity'; import URI from 'vs/base/common/uri'; -import { IDownloadService } from 'vs/platform/download/common/download'; -import { DownloadService } from 'vs/platform/download/node/downloadService'; const notFound = (id: string) => localize('notFound', "Extension '{0}' not found.", id); const notInstalled = (id: string) => localize('notInstalled', "Extension '{0}' is not installed.", id); @@ -243,7 +241,6 @@ export function main(argv: ParsedArgs): TPromise { services.set(IExtensionManagementService, new SyncDescriptor(ExtensionManagementService)); services.set(IExtensionGalleryService, new SyncDescriptor(ExtensionGalleryService)); services.set(IDialogService, new SyncDescriptor(CommandLineDialogService)); - services.set(IDownloadService, new SyncDescriptor(DownloadService)); const appenders: AppInsightsAppender[] = []; if (isBuilt && !extensionDevelopmentPath && !envService.args['disable-telemetry'] && product.enableTelemetry) { diff --git a/src/vs/platform/download/node/downloadService.ts b/src/vs/platform/download/node/downloadService.ts deleted file mode 100644 index e59afec589a..00000000000 --- a/src/vs/platform/download/node/downloadService.ts +++ /dev/null @@ -1,38 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -'use strict'; - -import URI from 'vs/base/common/uri'; -import { TPromise } from 'vs/base/common/winjs.base'; -import { IDownloadService } from 'vs/platform/download/common/download'; -import { IRequestService } from 'vs/platform/request/node/request'; -import { Schemas } from 'vs/base/common/network'; -import { copy } from 'vs/base/node/pfs'; -import { download, asText } from 'vs/base/node/request'; - -export class DownloadService implements IDownloadService { - - _serviceBrand: any; - - constructor( - @IRequestService private requestService: IRequestService - ) { } - - download(from: URI, to: string): TPromise { - if (from.scheme === Schemas.file) { - return copy(from.fsPath, to); - } - return this.requestService.request({ url: from.path }) - .then(context => { - if (context.res.statusCode === 200) { - return download(to, context); - } - return asText(context) - .then(message => TPromise.wrapError(new Error(`Expected 200, got back ${context.res.statusCode} instead.\n\n${message}`))); - }); - } - -} \ No newline at end of file diff --git a/src/vs/platform/extensionManagement/node/extensionManagementService.ts b/src/vs/platform/extensionManagement/node/extensionManagementService.ts index ba5c82e925f..08d00874143 100644 --- a/src/vs/platform/extensionManagement/node/extensionManagementService.ts +++ b/src/vs/platform/extensionManagement/node/extensionManagementService.ts @@ -45,6 +45,7 @@ import { getPathFromAmdModule } from 'vs/base/common/amd'; import { tmpdir } from 'os'; import { generateUuid } from 'vs/base/common/uuid'; import { IDownloadService } from 'vs/platform/download/common/download'; +import { optional } from 'vs/platform/instantiation/common/instantiation'; const SystemExtensionsRoot = path.normalize(path.join(getPathFromAmdModule(require, ''), '..', 'extensions')); const ERROR_SCANNING_SYS_EXTENSIONS = 'scanningSystem'; @@ -140,7 +141,7 @@ export class ExtensionManagementService extends Disposable implements IExtension @IDialogService private dialogService: IDialogService, @IExtensionGalleryService private galleryService: IExtensionGalleryService, @ILogService private logService: ILogService, - @IDownloadService private downloadService: IDownloadService, + @optional(IDownloadService) private downloadService: IDownloadService, @ITelemetryService private telemetryService: ITelemetryService, ) { super(); @@ -165,6 +166,9 @@ export class ExtensionManagementService extends Disposable implements IExtension } unzip(zipLocation: URI): TPromise { + if (!this.downloadService) { + throw new Error('Download service is not available'); + } const downloadedLocation = path.join(tmpdir(), generateUuid()); return this.downloadService.download(zipLocation, downloadedLocation).then(() => this.install(URI.file(downloadedLocation))); } diff --git a/src/vs/workbench/electron-browser/shell.ts b/src/vs/workbench/electron-browser/shell.ts index d440340a68b..33cd10f079b 100644 --- a/src/vs/workbench/electron-browser/shell.ts +++ b/src/vs/workbench/electron-browser/shell.ts @@ -97,8 +97,6 @@ import { SearchHistoryService } from 'vs/workbench/services/search/node/searchHi import { MulitExtensionManagementService } from 'vs/platform/extensionManagement/common/multiExtensionManagement'; import { ExtensionManagementServerService } from 'vs/workbench/services/extensions/node/extensionManagementServerService'; import { DownloadServiceChannel } from 'vs/platform/download/node/downloadIpc'; -import { IDownloadService } from 'vs/platform/download/common/download'; -import { DownloadService } from 'vs/platform/download/node/downloadService'; /** * Services that we require for the Shell @@ -391,7 +389,6 @@ export class WorkbenchShell extends Disposable { serviceCollection.set(IExtensionEnablementService, extensionEnablementService); serviceCollection.set(IRequestService, new SyncDescriptor(RequestService)); - serviceCollection.set(IDownloadService, new SyncDescriptor(DownloadService)); this.extensionService = instantiationService.createInstance(ExtensionService); serviceCollection.set(IExtensionService, this.extensionService);