From afa288e7570e5571a6dbe43bbe188ed01764ef58 Mon Sep 17 00:00:00 2001 From: Alex Dima Date: Thu, 6 Aug 2020 22:54:30 +0200 Subject: [PATCH] Add `IWorkbenchConstructionOptions._enableBuiltinExtensions` --- resources/serverless/code-web.js | 3 +- .../builtinExtensionsScannerService.ts | 68 ++++++++++++------- src/vs/workbench/workbench.web.api.ts | 8 +++ 3 files changed, 51 insertions(+), 28 deletions(-) diff --git a/resources/serverless/code-web.js b/resources/serverless/code-web.js index 8faf40a27712..7d0492003438 100644 --- a/resources/serverless/code-web.js +++ b/resources/serverless/code-web.js @@ -295,8 +295,7 @@ async function handleRoot(req, res) { const webConfigJSON = escapeAttribute(JSON.stringify({ folderUri: folderUri, - staticExtensions, - builtinExtensionsServiceUrl: `${SCHEME}://${AUTHORITY}/static/extensions` + staticExtensions })); const data = (await readFile(WEB_MAIN)).toString() diff --git a/src/vs/workbench/services/extensionManagement/browser/builtinExtensionsScannerService.ts b/src/vs/workbench/services/extensionManagement/browser/builtinExtensionsScannerService.ts index ef657aa2114b..60940f44d2d1 100644 --- a/src/vs/workbench/services/extensionManagement/browser/builtinExtensionsScannerService.ts +++ b/src/vs/workbench/services/extensionManagement/browser/builtinExtensionsScannerService.ts @@ -29,38 +29,54 @@ export class BuiltinExtensionsScannerService implements IBuiltinExtensionsScanne @IWorkbenchEnvironmentService environmentService: IWorkbenchEnvironmentService, @IUriIdentityService uriIdentityService: IUriIdentityService, ) { + if (isWeb) { + const builtinExtensionsServiceUrl = this._getBuiltinExtensionsUrl(environmentService); + if (builtinExtensionsServiceUrl) { + let scannedBuiltinExtensions: IScannedBuiltinExtension[] = []; - const builtinExtensionsServiceUrl = environmentService.options?.builtinExtensionsServiceUrl ? URI.parse(environmentService.options?.builtinExtensionsServiceUrl) : undefined; - if (isWeb && builtinExtensionsServiceUrl) { - - let scannedBuiltinExtensions: IScannedBuiltinExtension[] = []; - - if (environmentService.isBuilt) { - // Built time configuration (do NOT modify) - scannedBuiltinExtensions = [/*BUILD->INSERT_BUILTIN_EXTENSIONS*/]; - } else { - // Find builtin extensions by checking for DOM - const builtinExtensionsElement = document.getElementById('vscode-workbench-builtin-extensions'); - const builtinExtensionsElementAttribute = builtinExtensionsElement ? builtinExtensionsElement.getAttribute('data-settings') : undefined; - if (builtinExtensionsElementAttribute) { - try { - scannedBuiltinExtensions = JSON.parse(builtinExtensionsElementAttribute); - } catch (error) { /* ignore error*/ } + if (environmentService.isBuilt) { + // Built time configuration (do NOT modify) + scannedBuiltinExtensions = [/*BUILD->INSERT_BUILTIN_EXTENSIONS*/]; + } else { + // Find builtin extensions by checking for DOM + const builtinExtensionsElement = document.getElementById('vscode-workbench-builtin-extensions'); + const builtinExtensionsElementAttribute = builtinExtensionsElement ? builtinExtensionsElement.getAttribute('data-settings') : undefined; + if (builtinExtensionsElementAttribute) { + try { + scannedBuiltinExtensions = JSON.parse(builtinExtensionsElementAttribute); + } catch (error) { /* ignore error*/ } + } } - } - this.builtinExtensions = scannedBuiltinExtensions.map(e => ({ - identifier: { id: getGalleryExtensionId(e.packageJSON.publisher, e.packageJSON.name) }, - location: uriIdentityService.extUri.joinPath(builtinExtensionsServiceUrl!, e.extensionPath), - type: ExtensionType.System, - packageJSON: e.packageJSON, - packageNLS: e.packageNLS, - readmeUrl: e.readmePath ? uriIdentityService.extUri.joinPath(builtinExtensionsServiceUrl!, e.readmePath) : undefined, - changelogUrl: e.changelogPath ? uriIdentityService.extUri.joinPath(builtinExtensionsServiceUrl!, e.changelogPath) : undefined, - })); + this.builtinExtensions = scannedBuiltinExtensions.map(e => ({ + identifier: { id: getGalleryExtensionId(e.packageJSON.publisher, e.packageJSON.name) }, + location: uriIdentityService.extUri.joinPath(builtinExtensionsServiceUrl!, e.extensionPath), + type: ExtensionType.System, + packageJSON: e.packageJSON, + packageNLS: e.packageNLS, + readmeUrl: e.readmePath ? uriIdentityService.extUri.joinPath(builtinExtensionsServiceUrl!, e.readmePath) : undefined, + changelogUrl: e.changelogPath ? uriIdentityService.extUri.joinPath(builtinExtensionsServiceUrl!, e.changelogPath) : undefined, + })); + } } } + private _getBuiltinExtensionsUrl(environmentService: IWorkbenchEnvironmentService): URI | undefined { + if (environmentService.options?.builtinExtensionsServiceUrl) { + return URI.parse(environmentService.options?.builtinExtensionsServiceUrl); + } + let enableBuiltinExtensions: boolean; + if (environmentService.options && typeof environmentService.options._enableBuiltinExtensions !== 'undefined') { + enableBuiltinExtensions = environmentService.options._enableBuiltinExtensions; + } else { + enableBuiltinExtensions = environmentService.configuration.remoteAuthority ? false : true; + } + if (enableBuiltinExtensions) { + return URI.parse(require.toUrl('../../../../../../extensions')); + } + return undefined; + } + async scanBuiltinExtensions(): Promise { if (isWeb) { return this.builtinExtensions; diff --git a/src/vs/workbench/workbench.web.api.ts b/src/vs/workbench/workbench.web.api.ts index 7932149e035f..be9efca3cd8a 100644 --- a/src/vs/workbench/workbench.web.api.ts +++ b/src/vs/workbench/workbench.web.api.ts @@ -268,10 +268,18 @@ interface IWorkbenchConstructionOptions { readonly staticExtensions?: ReadonlyArray; /** + * [TEMPORARY]: This will be removed soon. * Service end-point hosting builtin extensions */ readonly builtinExtensionsServiceUrl?: string; + /** + * [TEMPORARY]: This will be removed soon. + * Disable the inlined extensions. + * Defaults to false on serverful and true on serverless. + */ + readonly _enableBuiltinExtensions?: boolean; + /** * Support for URL callbacks. */