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