Path: blob/main/src/vs/workbench/services/extensionManagement/electron-browser/extensionManagementService.ts
3296 views
/*---------------------------------------------------------------------------------------------1* Copyright (c) Microsoft Corporation. All rights reserved.2* Licensed under the MIT License. See License.txt in the project root for license information.3*--------------------------------------------------------------------------------------------*/45import { generateUuid } from '../../../../base/common/uuid.js';6import { ILocalExtension, IExtensionGalleryService, InstallOptions, IAllowedExtensionsService } from '../../../../platform/extensionManagement/common/extensionManagement.js';7import { URI } from '../../../../base/common/uri.js';8import { ExtensionManagementService as BaseExtensionManagementService } from '../common/extensionManagementService.js';9import { InstantiationType, registerSingleton } from '../../../../platform/instantiation/common/extensions.js';10import { IExtensionManagementServer, IExtensionManagementServerService, IWorkbenchExtensionManagementService } from '../common/extensionManagement.js';11import { Schemas } from '../../../../base/common/network.js';12import { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';13import { IDownloadService } from '../../../../platform/download/common/download.js';14import { IProductService } from '../../../../platform/product/common/productService.js';15import { INativeWorkbenchEnvironmentService } from '../../environment/electron-browser/environmentService.js';16import { joinPath } from '../../../../base/common/resources.js';17import { IUserDataSyncEnablementService } from '../../../../platform/userDataSync/common/userDataSync.js';18import { IDialogService } from '../../../../platform/dialogs/common/dialogs.js';19import { IWorkspaceTrustRequestService } from '../../../../platform/workspace/common/workspaceTrust.js';20import { IExtensionManifestPropertiesService } from '../../extensions/common/extensionManifestPropertiesService.js';21import { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';22import { IFileService } from '../../../../platform/files/common/files.js';23import { ILogService } from '../../../../platform/log/common/log.js';24import { IUserDataProfileService } from '../../userDataProfile/common/userDataProfile.js';25import { IExtensionsScannerService } from '../../../../platform/extensionManagement/common/extensionsScannerService.js';26import { ITelemetryService } from '../../../../platform/telemetry/common/telemetry.js';27import { IUserDataProfilesService } from '../../../../platform/userDataProfile/common/userDataProfile.js';28import { IStorageService } from '../../../../platform/storage/common/storage.js';2930export class ExtensionManagementService extends BaseExtensionManagementService {3132constructor(33@INativeWorkbenchEnvironmentService private readonly environmentService: INativeWorkbenchEnvironmentService,34@IExtensionManagementServerService extensionManagementServerService: IExtensionManagementServerService,35@IExtensionGalleryService extensionGalleryService: IExtensionGalleryService,36@IUserDataProfileService userDataProfileService: IUserDataProfileService,37@IUserDataProfilesService userDataProfilesService: IUserDataProfilesService,38@IConfigurationService configurationService: IConfigurationService,39@IProductService productService: IProductService,40@IDownloadService downloadService: IDownloadService,41@IUserDataSyncEnablementService userDataSyncEnablementService: IUserDataSyncEnablementService,42@IDialogService dialogService: IDialogService,43@IWorkspaceTrustRequestService workspaceTrustRequestService: IWorkspaceTrustRequestService,44@IExtensionManifestPropertiesService extensionManifestPropertiesService: IExtensionManifestPropertiesService,45@IFileService fileService: IFileService,46@ILogService logService: ILogService,47@IInstantiationService instantiationService: IInstantiationService,48@IExtensionsScannerService extensionsScannerService: IExtensionsScannerService,49@IAllowedExtensionsService allowedExtensionsService: IAllowedExtensionsService,50@IStorageService storageService: IStorageService,51@ITelemetryService telemetryService: ITelemetryService,52) {53super(54extensionManagementServerService,55extensionGalleryService,56userDataProfileService,57userDataProfilesService,58configurationService,59productService,60downloadService,61userDataSyncEnablementService,62dialogService,63workspaceTrustRequestService,64extensionManifestPropertiesService,65fileService,66logService,67instantiationService,68extensionsScannerService,69allowedExtensionsService,70storageService,71telemetryService72);73}7475protected override async installVSIXInServer(vsix: URI, server: IExtensionManagementServer, options: InstallOptions | undefined): Promise<ILocalExtension> {76if (vsix.scheme === Schemas.vscodeRemote && server === this.extensionManagementServerService.localExtensionManagementServer) {77const downloadedLocation = joinPath(this.environmentService.tmpDir, generateUuid());78await this.downloadService.download(vsix, downloadedLocation);79vsix = downloadedLocation;80}81return super.installVSIXInServer(vsix, server, options);82}83}8485registerSingleton(IWorkbenchExtensionManagementService, ExtensionManagementService, InstantiationType.Delayed);868788