From 12bbfe9607b6354b9dcefb2a7e77b4e3fde4b7cb Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu Date: Fri, 9 Nov 2018 17:08:38 +0100 Subject: [PATCH] explore classifying extensions --- .../common/extensionManagement.ts | 3 +++ .../platform/extensions/common/extensions.ts | 25 +++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/src/vs/platform/extensionManagement/common/extensionManagement.ts b/src/vs/platform/extensionManagement/common/extensionManagement.ts index fc31e3d9605..8265011215d 100644 --- a/src/vs/platform/extensionManagement/common/extensionManagement.ts +++ b/src/vs/platform/extensionManagement/common/extensionManagement.ts @@ -112,6 +112,8 @@ export interface IExtensionContributions { remoteAuthorityResolvers?: IRemoteAuthorityResolver[]; } +export type ExtensionKind = 'ui' | 'workspace'; + export interface IExtensionManifest { name: string; publisher: string; @@ -126,6 +128,7 @@ export interface IExtensionManifest { activationEvents?: string[]; extensionDependencies?: string[]; extensionPack?: string[]; + extensionKind?: ExtensionKind; contributes?: IExtensionContributions; repository?: { url: string; diff --git a/src/vs/platform/extensions/common/extensions.ts b/src/vs/platform/extensions/common/extensions.ts index 1bae8460fe9..25998a367b2 100644 --- a/src/vs/platform/extensions/common/extensions.ts +++ b/src/vs/platform/extensions/common/extensions.ts @@ -3,6 +3,31 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ +import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; +import { IExtensionManifest } from 'vs/platform/extensionManagement/common/extensionManagement'; +import { getGalleryExtensionId } from 'vs/platform/extensionManagement/common/extensionManagementUtil'; + export const MANIFEST_CACHE_FOLDER = 'CachedExtensions'; export const USER_MANIFEST_CACHE_FILE = 'user'; export const BUILTIN_MANIFEST_CACHE_FILE = 'builtin'; + +const uiExtensions = new Set(); +uiExtensions.add('msjsdiag.debugger-for-chrome'); + +export function isUIExtension(manifest: IExtensionManifest, configurationService: IConfigurationService): boolean { + const extensionId = getGalleryExtensionId(manifest.publisher, manifest.name); + const configuredUIExtensions = configurationService.getValue('_workbench.uiExtensions') || []; + if (configuredUIExtensions.length) { + if (configuredUIExtensions.indexOf(extensionId) !== -1) { + return true; + } + if (configuredUIExtensions.indexOf(`-${extensionId}`) !== -1) { + return false; + } + } + switch (manifest.extensionKind) { + case 'ui': return true; + case 'workspace': return false; + default: return uiExtensions.has(extensionId) || !manifest.main; + } +} -- GitLab