From ec2bcdbb5789f9318bc4b353f3e48f01cf1839e5 Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu Date: Tue, 1 Dec 2020 10:19:02 +0100 Subject: [PATCH] #111573 also check for setting value type --- .../common/webExtensionsScannerService.ts | 45 ++++++++++--------- 1 file changed, 24 insertions(+), 21 deletions(-) diff --git a/src/vs/workbench/services/extensionManagement/common/webExtensionsScannerService.ts b/src/vs/workbench/services/extensionManagement/common/webExtensionsScannerService.ts index c548a88dd08..db084cc3f1b 100644 --- a/src/vs/workbench/services/extensionManagement/common/webExtensionsScannerService.ts +++ b/src/vs/workbench/services/extensionManagement/common/webExtensionsScannerService.ts @@ -25,6 +25,7 @@ import { Event } from 'vs/base/common/event'; import { localizeManifest } from 'vs/platform/extensionManagement/common/extensionNls'; import { localize } from 'vs/nls'; import * as semver from 'vs/base/common/semver/semver'; +import { isArray } from 'vs/base/common/types'; interface IUserExtension { identifier: IExtensionIdentifier; @@ -125,28 +126,30 @@ export class WebExtensionsScannerService extends Disposable implements IWebExten private async readDefaultUserWebExtensions(): Promise { const result: IStaticExtension[] = []; - const defaultUserWebExtensions = this.configurationService.getValue<{ location: string }[]>('_extensions.defaultUserWebExtensions') || []; - for (const webExtension of defaultUserWebExtensions) { - try { - const extensionLocation = URI.parse(webExtension.location); - const manifestLocation = joinPath(extensionLocation, 'package.json'); - const context = await this.requestService.request({ type: 'GET', url: manifestLocation.toString(true) }, CancellationToken.None); - if (!isSuccess(context)) { - this.logService.warn('Skipped default user web extension as there is an error while fetching manifest', manifestLocation); - continue; - } - const content = await asText(context); - if (!content) { - this.logService.warn('Skipped default user web extension as there is manifest is not found', manifestLocation); - continue; + const defaultUserWebExtensions = this.configurationService.getValue<{ location: string }[]>('_extensions.defaultUserWebExtensions'); + if (isArray(defaultUserWebExtensions)) { + for (const webExtension of defaultUserWebExtensions) { + try { + const extensionLocation = URI.parse(webExtension.location); + const manifestLocation = joinPath(extensionLocation, 'package.json'); + const context = await this.requestService.request({ type: 'GET', url: manifestLocation.toString(true) }, CancellationToken.None); + if (!isSuccess(context)) { + this.logService.warn('Skipped default user web extension as there is an error while fetching manifest', manifestLocation); + continue; + } + const content = await asText(context); + if (!content) { + this.logService.warn('Skipped default user web extension as there is manifest is not found', manifestLocation); + continue; + } + const packageJSON = JSON.parse(content); + result.push({ + packageJSON, + extensionLocation, + }); + } catch (error) { + this.logService.warn('Skipped default user web extension as there is an error while fetching manifest', webExtension); } - const packageJSON = JSON.parse(content); - result.push({ - packageJSON, - extensionLocation, - }); - } catch (error) { - this.logService.warn('Skipped default user web extension as there is an error while fetching manifest', webExtension); } } return result; -- GitLab