Skip to content

Commit b1300a0

Browse files
committed
Use extension point kind while checking for ui extension
1 parent ceb4b0c commit b1300a0

6 files changed

Lines changed: 25 additions & 9 deletions

File tree

src/vs/code/node/cliProcessMain.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ export class Main {
129129
extension = path.isAbsolute(extension) ? extension : path.join(process.cwd(), extension);
130130

131131
const manifest = await getManifest(extension);
132-
if (this.remote && (!isLanguagePackExtension(manifest) && isUIExtension(manifest, this.configurationService))) {
132+
if (this.remote && (!isLanguagePackExtension(manifest) && isUIExtension(manifest, [], this.configurationService))) {
133133
console.log(localize('notSupportedUIExtension', "Can't install extension {0} since UI Extensions are not supported", getBaseLabel(extension)));
134134
return null;
135135
}
@@ -171,7 +171,7 @@ export class Main {
171171
}
172172

173173
const manifest = await this.extensionGalleryService.getManifest(extension, CancellationToken.None);
174-
if (this.remote && manifest && (!isLanguagePackExtension(manifest) && isUIExtension(manifest, this.configurationService))) {
174+
if (this.remote && manifest && (!isLanguagePackExtension(manifest) && isUIExtension(manifest, [], this.configurationService))) {
175175
console.log(localize('notSupportedUIExtension', "Can't install extension {0} since UI Extensions are not supported", extension.identifier.id));
176176
return null;
177177
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -345,7 +345,7 @@ export class ExtensionManagementService extends Disposable implements IExtension
345345

346346
if (this.remote) {
347347
const manifest = await this.galleryService.getManifest(extension, CancellationToken.None);
348-
if (manifest && isUIExtension(manifest, this.configurationService) && !isLanguagePackExtension(manifest)) {
348+
if (manifest && isUIExtension(manifest, [], this.configurationService) && !isLanguagePackExtension(manifest)) {
349349
return Promise.reject(new Error(nls.localize('notSupportedUIExtension', "Can't install extension {0} since UI Extensions are not supported", extension.identifier.id)));
350350
}
351351
}
@@ -516,7 +516,7 @@ export class ExtensionManagementService extends Disposable implements IExtension
516516
return Promise.all(extensionsToInstall.map(async e => {
517517
if (this.remote) {
518518
const manifest = await this.galleryService.getManifest(e, CancellationToken.None);
519-
if (manifest && isUIExtension(manifest, this.configurationService) && !isLanguagePackExtension(manifest)) {
519+
if (manifest && isUIExtension(manifest, [], this.configurationService) && !isLanguagePackExtension(manifest)) {
520520
this.logService.info('Ignored installing the UI dependency', e.identifier.id);
521521
return;
522522
}

src/vs/platform/extensions/node/extensionsUtil.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import { getGalleryExtensionId, areSameExtensions } from 'vs/platform/extensionM
99
import { isNonEmptyArray } from 'vs/base/common/arrays';
1010
import product from 'vs/platform/product/node/product';
1111

12-
export function isUIExtension(manifest: IExtensionManifest, configurationService: IConfigurationService): boolean {
12+
export function isUIExtension(manifest: IExtensionManifest, uiContributions: string[], configurationService: IConfigurationService): boolean {
1313
const extensionId = getGalleryExtensionId(manifest.publisher, manifest.name);
1414
const configuredUIExtensions = configurationService.getValue<string[]>('_workbench.uiExtensions') || [];
1515
if (configuredUIExtensions.length) {
@@ -30,8 +30,10 @@ export function isUIExtension(manifest: IExtensionManifest, configurationService
3030
if (manifest.main) {
3131
return false;
3232
}
33-
if (manifest.contributes && isNonEmptyArray(manifest.contributes.debuggers)) {
34-
return false;
33+
if (manifest.contributes) {
34+
if (!uiContributions.length || Object.keys(manifest.contributes).some(contribution => uiContributions.indexOf(contribution) === -1)) {
35+
return false;
36+
}
3537
}
3638
// Default is UI Extension
3739
return true;

src/vs/workbench/contrib/extensions/node/extensionsWorkbenchService.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ import { CancellationToken } from 'vs/base/common/cancellation';
3535
import { IStorageService, StorageScope } from 'vs/platform/storage/common/storage';
3636
import { IFileService } from 'vs/platform/files/common/files';
3737
import { IExtensionManifest, ExtensionType, ExtensionIdentifierWithVersion, IExtension as IPlatformExtension } from 'vs/platform/extensions/common/extensions';
38-
import { isUIExtension } from 'vs/platform/extensions/node/extensionsUtil';
38+
import { isUIExtension } from 'vs/workbench/services/extensions/node/extensionsUtil';
3939

4040
interface IExtensionStateProvider<T> {
4141
(extension: Extension): T;

src/vs/workbench/services/extensionManagement/node/multiExtensionManagement.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import { getManifest } from 'vs/platform/extensionManagement/node/extensionManag
1919
import { ILogService } from 'vs/platform/log/common/log';
2020
import { areSameExtensions } from 'vs/platform/extensionManagement/common/extensionManagementUtil';
2121
import { localize } from 'vs/nls';
22-
import { isUIExtension } from 'vs/platform/extensions/node/extensionsUtil';
22+
import { isUIExtension } from 'vs/workbench/services/extensions/node/extensionsUtil';
2323
import { registerSingleton } from 'vs/platform/instantiation/common/extensions';
2424

2525
export class MultiExtensionManagementService extends Disposable implements IExtensionManagementService {
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
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 { IConfigurationService } from 'vs/platform/configuration/common/configuration';
7+
import { IExtensionManifest } from 'vs/platform/extensions/common/extensions';
8+
import { ExtensionsRegistry } from 'vs/workbench/services/extensions/common/extensionsRegistry';
9+
import { isUIExtension as _isUIExtension } from 'vs/platform/extensions/node/extensionsUtil';
10+
11+
export function isUIExtension(manifest: IExtensionManifest, configurationService: IConfigurationService): boolean {
12+
const uiExtensionPoints = ExtensionsRegistry.getExtensionPoints().filter(e => e.defaultExtensionKind !== 'workspace').map(e => e.name);
13+
return _isUIExtension(manifest, uiExtensionPoints, configurationService);
14+
}

0 commit comments

Comments
 (0)