From 461f09ff789bc64f5dd05ac5e9c6243a0c2dc196 Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Thu, 8 Apr 2021 11:22:00 +0200 Subject: [PATCH] add extension identifier to kernel 2 --- src/vs/workbench/api/browser/mainThreadNotebookKernels.ts | 7 +++++-- src/vs/workbench/api/common/extHost.protocol.ts | 2 +- src/vs/workbench/api/common/extHostNotebookKernels.ts | 2 +- .../contrib/notebook/common/notebookKernelService.ts | 2 ++ .../contrib/notebook/common/notebookKernelServiceImpl.ts | 3 +-- .../test/browser/api/extHostNotebookKernel2.test.ts | 3 ++- 6 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/vs/workbench/api/browser/mainThreadNotebookKernels.ts b/src/vs/workbench/api/browser/mainThreadNotebookKernels.ts index 7dbebaa0a7e..41e6250ba98 100644 --- a/src/vs/workbench/api/browser/mainThreadNotebookKernels.ts +++ b/src/vs/workbench/api/browser/mainThreadNotebookKernels.ts @@ -6,6 +6,7 @@ import { Emitter, Event } from 'vs/base/common/event'; import { IDisposable } from 'vs/base/common/lifecycle'; import { URI } from 'vs/base/common/uri'; +import { ExtensionIdentifier } from 'vs/platform/extensions/common/extensions'; import { extHostNamedCustomer } from 'vs/workbench/api/common/extHostCustomers'; import { ICellRange } from 'vs/workbench/contrib/notebook/common/notebookCommon'; import { INotebookKernel2, INotebookKernel2ChangeEvent, INotebookKernelService } from 'vs/workbench/contrib/notebook/common/notebookKernelService'; @@ -19,11 +20,12 @@ abstract class MainThreadKernel implements INotebookKernel2 { readonly id: string; readonly selector: NotebookSelector; - readonly detail: string; + readonly extensionId: ExtensionIdentifier; implementsInterrupt: boolean; label: string; description?: string; + detail?: string; isPreferred?: boolean; supportedLanguages: string[]; hasExecutionOrder: boolean; @@ -33,7 +35,8 @@ abstract class MainThreadKernel implements INotebookKernel2 { constructor(data: INotebookKernelDto2) { this.id = data.id; this.selector = data.selector; - this.detail = data.extensionName; + this.extensionId = data.extensionId; + this.implementsInterrupt = data.supportsInterrupt ?? false; this.label = data.label; this.description = data.description; diff --git a/src/vs/workbench/api/common/extHost.protocol.ts b/src/vs/workbench/api/common/extHost.protocol.ts index 038f5796295..99e6e5c6f7e 100644 --- a/src/vs/workbench/api/common/extHost.protocol.ts +++ b/src/vs/workbench/api/common/extHost.protocol.ts @@ -902,7 +902,7 @@ export interface MainThreadNotebookDocumentsShape extends IDisposable { export interface INotebookKernelDto2 { id: string; selector: NotebookSelector; - extensionName: string; + extensionId: ExtensionIdentifier; extensionLocation: UriComponents; label: string; description?: string; diff --git a/src/vs/workbench/api/common/extHostNotebookKernels.ts b/src/vs/workbench/api/common/extHostNotebookKernels.ts index 2b9deaf922b..48914996237 100644 --- a/src/vs/workbench/api/common/extHostNotebookKernels.ts +++ b/src/vs/workbench/api/common/extHostNotebookKernels.ts @@ -46,7 +46,7 @@ export class ExtHostNotebookKernels implements ExtHostNotebookKernelsShape { const data: INotebookKernelDto2 = { id, selector, - extensionName: extension.displayName ?? extension.name, + extensionId: extension.identifier, extensionLocation: extension.extensionLocation, label, supportedLanguages: [], diff --git a/src/vs/workbench/contrib/notebook/common/notebookKernelService.ts b/src/vs/workbench/contrib/notebook/common/notebookKernelService.ts index b86b4849544..f6b37d03e99 100644 --- a/src/vs/workbench/contrib/notebook/common/notebookKernelService.ts +++ b/src/vs/workbench/contrib/notebook/common/notebookKernelService.ts @@ -6,6 +6,7 @@ import { Event } from 'vs/base/common/event'; import { IDisposable } from 'vs/base/common/lifecycle'; import { URI } from 'vs/base/common/uri'; +import { ExtensionIdentifier } from 'vs/platform/extensions/common/extensions'; import { createDecorator } from 'vs/platform/instantiation/common/instantiation'; import { ICellRange, INotebookTextModel } from 'vs/workbench/contrib/notebook/common/notebookCommon'; import { NotebookSelector } from 'vs/workbench/contrib/notebook/common/notebookSelector'; @@ -23,6 +24,7 @@ export interface INotebookKernel2 { readonly id: string; readonly selector: NotebookSelector + readonly extensionId: ExtensionIdentifier; readonly onDidChange: Event; diff --git a/src/vs/workbench/contrib/notebook/common/notebookKernelServiceImpl.ts b/src/vs/workbench/contrib/notebook/common/notebookKernelServiceImpl.ts index 2d4081660d1..a645f210168 100644 --- a/src/vs/workbench/contrib/notebook/common/notebookKernelServiceImpl.ts +++ b/src/vs/workbench/contrib/notebook/common/notebookKernelServiceImpl.ts @@ -13,7 +13,6 @@ import { Registry } from 'vs/platform/registry/common/platform'; import { LifecyclePhase } from 'vs/workbench/services/lifecycle/common/lifecycle'; import { INotebookService } from 'vs/workbench/contrib/notebook/common/notebookService'; import { URI } from 'vs/base/common/uri'; -import { nullExtensionDescription } from 'vs/workbench/services/extensions/common/extensions'; export class NotebookKernelService implements INotebookKernelService { @@ -106,7 +105,7 @@ class KernelAdaptorBridge implements IWorkbenchContribution { extensionLocation: kernel.localResourceRoot, supportedLanguages: kernel.supportedLanguages, implementsInterrupt: kernel.implementsInterrupt, - extension: nullExtensionDescription.identifier, // todo@jrieken + extension: kernel.extensionId, async resolve() { }, async executeNotebookCellsRequest(uri: URI, ranges: ICellRange[]): Promise { kernel.executeCells(uri, ranges); }, async cancelNotebookCellExecution(uri: URI, ranges: ICellRange[]): Promise { kernel.cancelCells(uri, ranges); }, diff --git a/src/vs/workbench/test/browser/api/extHostNotebookKernel2.test.ts b/src/vs/workbench/test/browser/api/extHostNotebookKernel2.test.ts index 9ae3e633fa0..85ab13df1a9 100644 --- a/src/vs/workbench/test/browser/api/extHostNotebookKernel2.test.ts +++ b/src/vs/workbench/test/browser/api/extHostNotebookKernel2.test.ts @@ -10,6 +10,7 @@ import { nullExtensionDescription } from 'vs/workbench/services/extensions/commo import { mock } from 'vs/workbench/test/common/workbenchTestServices'; import { INotebookKernelDto2, MainContext, MainThreadCommandsShape, MainThreadNotebookKernelsShape } from 'vs/workbench/api/common/extHost.protocol'; import { ExtHostNotebookKernels } from 'vs/workbench/api/common/extHostNotebookKernels'; +import { ExtensionIdentifier } from 'vs/platform/extensions/common/extensions'; suite('NotebookKernel', function () { @@ -59,7 +60,7 @@ suite('NotebookKernel', function () { let [first] = kernelData.values(); assert.strictEqual(first.id, 'foo'); - assert.strictEqual(first.extensionName, nullExtensionDescription.name); + assert.strictEqual(ExtensionIdentifier.equals(first.extensionId, nullExtensionDescription.identifier), true); assert.strictEqual(first.label, 'Foo'); assert.strictEqual(first.selector, '*');