From 55ac452768382a64dc38c8b3de99eb1ca5264580 Mon Sep 17 00:00:00 2001 From: rebornix Date: Mon, 18 May 2020 16:29:02 -0700 Subject: [PATCH] webview id attached to notebook editor --- .../api/browser/mainThreadNotebook.ts | 94 ++++++++++--------- .../workbench/api/common/extHost.protocol.ts | 2 +- .../workbench/api/common/extHostNotebook.ts | 75 ++++++++------- .../notebook/browser/notebookEditor.ts | 5 +- .../notebook/browser/notebookEditorInput.ts | 4 +- .../notebook/browser/notebookEditorWidget.ts | 2 +- .../notebook/browser/notebookServiceImpl.ts | 8 +- .../common/model/notebookTextModel.ts | 3 +- .../notebook/common/notebookEditorModel.ts | 22 +++-- .../notebook/common/notebookService.ts | 6 +- .../notebook/test/notebookViewModel.test.ts | 3 +- .../notebook/test/testNotebookEditor.ts | 3 +- .../api/extHostNotebookConcatDocument.test.ts | 1 - 13 files changed, 122 insertions(+), 106 deletions(-) diff --git a/src/vs/workbench/api/browser/mainThreadNotebook.ts b/src/vs/workbench/api/browser/mainThreadNotebook.ts index f7e6505cce450..8163fe1bde07d 100644 --- a/src/vs/workbench/api/browser/mainThreadNotebook.ts +++ b/src/vs/workbench/api/browser/mainThreadNotebook.ts @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ import { extHostNamedCustomer } from 'vs/workbench/api/common/extHostCustomers'; -import { MainContext, MainThreadNotebookShape, NotebookExtensionDescription, IExtHostContext, ExtHostNotebookShape, ExtHostContext, INotebookDocumentsAndEditorsDelta } from '../common/extHost.protocol'; +import { MainContext, MainThreadNotebookShape, NotebookExtensionDescription, IExtHostContext, ExtHostNotebookShape, ExtHostContext, INotebookDocumentsAndEditorsDelta, INotebookModelAddedData } from '../common/extHost.protocol'; import { Disposable, IDisposable, combinedDisposable } from 'vs/base/common/lifecycle'; import { URI, UriComponents } from 'vs/base/common/uri'; import { INotebookService, IMainNotebookController } from 'vs/workbench/contrib/notebook/common/notebookService'; @@ -17,7 +17,6 @@ import { CancellationToken } from 'vs/base/common/cancellation'; import { IAccessibilityService } from 'vs/platform/accessibility/common/accessibility'; import { IRelativePattern } from 'vs/base/common/glob'; import { ExtensionIdentifier } from 'vs/platform/extensions/common/extensions'; -import { generateUuid } from 'vs/base/common/uuid'; export class MainThreadNotebookDocument extends Disposable { private _textModel: NotebookTextModel; @@ -30,11 +29,10 @@ export class MainThreadNotebookDocument extends Disposable { private readonly _proxy: ExtHostNotebookShape, public handle: number, public viewType: string, - public uri: URI, - public webviewId: string, + public uri: URI ) { super(); - this._textModel = new NotebookTextModel(handle, viewType, uri, webviewId); + this._textModel = new NotebookTextModel(handle, viewType, uri); this._register(this._textModel.onDidModelChange(e => { this._proxy.$acceptModelChanged(this.uri, e); })); @@ -189,6 +187,12 @@ export class MainThreadNotebooks extends Disposable implements MainThreadNoteboo })); } + async addNotebookDocument(data: INotebookModelAddedData) { + this._proxy.$acceptDocumentAndEditorsDelta({ + addedDocuments: [data] + }); + } + private _addNotebookEditor(e: IEditor) { this._toDisposeOnEditorRemove.set(e.getId(), combinedDisposable( e.onDidChangeModel(() => this._updateState()), @@ -335,7 +339,7 @@ export class MainThreadNotebookController implements IMainNotebookController { ) { } - async createNotebook(viewType: string, uri: URI, backup: INotebookTextModelBackup | undefined, forceReload: boolean): Promise { + async createNotebook(viewType: string, uri: URI, backup: INotebookTextModelBackup | undefined, forceReload: boolean, editorId?: string): Promise { let mainthreadNotebook = this._mapping.get(URI.from(uri).toString()); if (mainthreadNotebook) { @@ -355,7 +359,7 @@ export class MainThreadNotebookController implements IMainNotebookController { return mainthreadNotebook.textModel; } - let document = new MainThreadNotebookDocument(this._proxy, MainThreadNotebookController.documentHandle++, viewType, uri, generateUuid()); + let document = new MainThreadNotebookDocument(this._proxy, MainThreadNotebookController.documentHandle++, viewType, uri); this._mapping.set(document.uri.toString(), document); if (backup) { @@ -367,28 +371,29 @@ export class MainThreadNotebookController implements IMainNotebookController { { editType: CellEditType.Insert, index: 0, - cells: backup.cells + cells: backup.cells || [] } ]); - await this._proxy.$acceptDocumentAndEditorsDelta({ - addedDocuments: [{ - viewType: document.viewType, - handle: document.handle, - webviewId: document.webviewId, - uri: document.uri, - metadata: document.textModel.metadata, - versionId: document.textModel.versionId, - cells: document.textModel.cells.map(cell => ({ - handle: cell.handle, - uri: cell.uri, - source: cell.textBuffer.getLinesContent(), - language: cell.language, - cellKind: cell.cellKind, - outputs: cell.outputs, - metadata: cell.metadata - })) - }] + this._mainThreadNotebook.addNotebookDocument({ + viewType: document.viewType, + handle: document.handle, + uri: document.uri, + metadata: document.textModel.metadata, + versionId: document.textModel.versionId, + cells: document.textModel.cells.map(cell => ({ + handle: cell.handle, + uri: cell.uri, + source: cell.textBuffer.getLinesContent(), + language: cell.language, + cellKind: cell.cellKind, + outputs: cell.outputs, + metadata: cell.metadata + })), + attachedEditor: editorId ? { + id: editorId, + selections: document.textModel.selections + } : undefined }); return document.textModel; @@ -410,24 +415,25 @@ export class MainThreadNotebookController implements IMainNotebookController { document.textModel.insertTemplateCell(mainCell); } - await this._proxy.$acceptDocumentAndEditorsDelta({ - addedDocuments: [{ - viewType: document.viewType, - handle: document.handle, - webviewId: document.webviewId, - uri: document.uri, - metadata: document.textModel.metadata, - versionId: document.textModel.versionId, - cells: document.textModel.cells.map(cell => ({ - handle: cell.handle, - uri: cell.uri, - source: cell.textBuffer.getLinesContent(), - language: cell.language, - cellKind: cell.cellKind, - outputs: cell.outputs, - metadata: cell.metadata - })) - }] + await this._mainThreadNotebook.addNotebookDocument({ + viewType: document.viewType, + handle: document.handle, + uri: document.uri, + metadata: document.textModel.metadata, + versionId: document.textModel.versionId, + cells: document.textModel.cells.map(cell => ({ + handle: cell.handle, + uri: cell.uri, + source: cell.textBuffer.getLinesContent(), + language: cell.language, + cellKind: cell.cellKind, + outputs: cell.outputs, + metadata: cell.metadata + })), + attachedEditor: editorId ? { + id: editorId, + selections: document.textModel.selections + } : undefined }); this._proxy.$acceptEditorPropertiesChanged(uri, { selections: null, metadata: document.textModel.metadata }); diff --git a/src/vs/workbench/api/common/extHost.protocol.ts b/src/vs/workbench/api/common/extHost.protocol.ts index 5742c3a445c8d..edffd9602f3e0 100644 --- a/src/vs/workbench/api/common/extHost.protocol.ts +++ b/src/vs/workbench/api/common/extHost.protocol.ts @@ -1546,11 +1546,11 @@ export interface INotebookEditorPropertiesChangeData { export interface INotebookModelAddedData { uri: UriComponents; handle: number; - webviewId: string; versionId: number; cells: IMainCellDto[], viewType: string; metadata?: NotebookDocumentMetadata; + attachedEditor?: { id: string; selections: number[]; } } export interface INotebookEditorAddData { diff --git a/src/vs/workbench/api/common/extHostNotebook.ts b/src/vs/workbench/api/common/extHostNotebook.ts index 04301f4315692..e65561ae7de22 100644 --- a/src/vs/workbench/api/common/extHostNotebook.ts +++ b/src/vs/workbench/api/common/extHostNotebook.ts @@ -219,8 +219,6 @@ export class ExtHostNotebookDocument extends Disposable implements vscode.Notebo return this._versionId; } - webviewId: string = ''; - constructor( private readonly _proxy: MainThreadNotebookShape, private _documentsAndEditors: ExtHostDocumentsAndEditors, @@ -501,7 +499,6 @@ export class ExtHostNotebookEditor extends Disposable implements vscode.Notebook public uri: URI, private _proxy: MainThreadNotebookShape, private _onDidReceiveMessage: Emitter, - public _webviewId: string, private _webviewInitData: WebviewInitData, public document: ExtHostNotebookDocument, private _documentsAndEditors: ExtHostDocumentsAndEditors @@ -591,7 +588,7 @@ export class ExtHostNotebookEditor extends Disposable implements vscode.Notebook } asWebviewUri(localResource: vscode.Uri): vscode.Uri { - return asWebviewUri(this._webviewInitData, this._webviewId, localResource); + return asWebviewUri(this._webviewInitData, this.id, localResource); } } @@ -997,7 +994,38 @@ export class ExtHostNotebookController implements ExtHostNotebookShape, ExtHostN } } + private _createExtHostEditor(document: ExtHostNotebookDocument, editorId: string, selections: number[]) { + const onDidReceiveMessage = new Emitter(); + const revivedUri = document.uri; + + let editor = new ExtHostNotebookEditor( + document.viewType, + editorId, + revivedUri, + this._proxy, + onDidReceiveMessage, + this._webviewInitData, + document, + this._documentsAndEditors + ); + + const cells = editor.document.cells; + + if (selections.length) { + const firstCell = selections[0]; + editor.selection = cells.find(cell => cell.handle === firstCell); + } else { + editor.selection = undefined; + } + + this._editors.get(editorId)?.editor.dispose(); + + this._editors.set(editorId, { editor, onDidReceiveMessage }); + } + async $acceptDocumentAndEditorsDelta(delta: INotebookDocumentsAndEditorsDelta) { + let editorChanged = false; + if (delta.removedDocuments) { delta.removedDocuments.forEach((uri) => { let document = this._documents.get(URI.revive(uri).toString()); @@ -1045,8 +1073,13 @@ export class ExtHostNotebookController implements ExtHostNotebookShape, ExtHostN ] }); - document.webviewId = modelData.webviewId; this._documents.set(revivedUriStr, document); + + // create editor if populated + if (modelData.attachedEditor) { + this._createExtHostEditor(document, modelData.attachedEditor.id, modelData.attachedEditor.selections); + editorChanged = true; + } } const document = this._documents.get(revivedUriStr)!; @@ -1054,40 +1087,18 @@ export class ExtHostNotebookController implements ExtHostNotebookShape, ExtHostN }); } - let editorChanged = false; - if (delta.addedEditors) { delta.addedEditors.forEach(editorModelData => { + if (this._editors.has(editorModelData.id)) { + return; + } + const revivedUri = URI.revive(editorModelData.documentUri); const document = this._documents.get(revivedUri.toString()); if (document) { - const onDidReceiveMessage = new Emitter(); - - let editor = new ExtHostNotebookEditor( - document.viewType, - editorModelData.id, - revivedUri, - this._proxy, - onDidReceiveMessage, - document.webviewId, - this._webviewInitData, - document, - this._documentsAndEditors - ); - - const cells = editor.document.cells; - - if (editorModelData.selections.length) { - const firstCell = editorModelData.selections[0]; - editor.selection = cells.find(cell => cell.handle === firstCell); - } else { - editor.selection = undefined; - } - + this._createExtHostEditor(document, editorModelData.id, editorModelData.selections); editorChanged = true; - - this._editors.set(editorModelData.id, { editor, onDidReceiveMessage }); } }); } diff --git a/src/vs/workbench/contrib/notebook/browser/notebookEditor.ts b/src/vs/workbench/contrib/notebook/browser/notebookEditor.ts index defe7ff21cbda..d49401468805d 100644 --- a/src/vs/workbench/contrib/notebook/browser/notebookEditor.ts +++ b/src/vs/workbench/contrib/notebook/browser/notebookEditor.ts @@ -139,8 +139,6 @@ export class NotebookEditor extends BaseEditor { }); - const model = await input.resolve(); - const viewState = this.loadTextEditorViewState(input); const existingEditorWidgetForInput = NotebookRegistry.getNotebookEditorWidget(input); if (existingEditorWidgetForInput) { // hide current widget @@ -161,6 +159,9 @@ export class NotebookEditor extends BaseEditor { this._widget.layout(this.dimension, this._rootElement); } + const model = await input.resolve(this._widget!.getId()); + const viewState = this.loadTextEditorViewState(input); + this._widget.setModel(model.notebook, viewState, options); } diff --git a/src/vs/workbench/contrib/notebook/browser/notebookEditorInput.ts b/src/vs/workbench/contrib/notebook/browser/notebookEditorInput.ts index dd68d55c079db..6917333842a52 100644 --- a/src/vs/workbench/contrib/notebook/browser/notebookEditorInput.ts +++ b/src/vs/workbench/contrib/notebook/browser/notebookEditorInput.ts @@ -129,12 +129,12 @@ export class NotebookEditorInput extends EditorInput { return; } - async resolve(): Promise { + async resolve(editorId?: string): Promise { if (!await this.notebookService.canResolve(this.viewType!)) { throw new Error(`Cannot open notebook of type '${this.viewType}'`); } - this.textModel = await this.notebookService.modelManager.resolve(this.resource, this.viewType!); + this.textModel = await this.notebookService.modelManager.resolve(this.resource, this.viewType!, editorId); this._register(this.textModel.onDidChangeDirty(() => { this._onDidChangeDirty.fire(); diff --git a/src/vs/workbench/contrib/notebook/browser/notebookEditorWidget.ts b/src/vs/workbench/contrib/notebook/browser/notebookEditorWidget.ts index 5d38d13826ca1..bf224dc5e8836 100644 --- a/src/vs/workbench/contrib/notebook/browser/notebookEditorWidget.ts +++ b/src/vs/workbench/contrib/notebook/browser/notebookEditorWidget.ts @@ -471,7 +471,7 @@ export class NotebookEditorWidget extends Disposable implements INotebookEditor } private async attachModel(textModel: NotebookTextModel, viewState: INotebookEditorViewState | undefined) { - this.createWebview(textModel.webviewId); + this.createWebview(this.getId()); await this.webview!.waitForInitialization(); this.eventDispatcher = new NotebookEventDispatcher(); diff --git a/src/vs/workbench/contrib/notebook/browser/notebookServiceImpl.ts b/src/vs/workbench/contrib/notebook/browser/notebookServiceImpl.ts index fdafadc5704b0..746542dbc088b 100644 --- a/src/vs/workbench/contrib/notebook/browser/notebookServiceImpl.ts +++ b/src/vs/workbench/contrib/notebook/browser/notebookServiceImpl.ts @@ -265,13 +265,13 @@ export class NotebookService extends Disposable implements INotebookService, ICu return; } - async createNotebookFromBackup(viewType: string, uri: URI, metadata: NotebookDocumentMetadata, languages: string[], cells: ICellDto2[]): Promise { + async createNotebookFromBackup(viewType: string, uri: URI, metadata: NotebookDocumentMetadata, languages: string[], cells: ICellDto2[], editorId?: string): Promise { const provider = this._notebookProviders.get(viewType); if (!provider) { return undefined; } - const notebookModel = await provider.controller.createNotebook(viewType, uri, { metadata, languages, cells }, false); + const notebookModel = await provider.controller.createNotebook(viewType, uri, { metadata, languages, cells }, false, editorId); if (!notebookModel) { return undefined; } @@ -286,7 +286,7 @@ export class NotebookService extends Disposable implements INotebookService, ICu return modelData.model; } - async resolveNotebook(viewType: string, uri: URI, forceReload: boolean): Promise { + async resolveNotebook(viewType: string, uri: URI, forceReload: boolean, editorId?: string): Promise { const provider = this._notebookProviders.get(viewType); if (!provider) { return undefined; @@ -294,7 +294,7 @@ export class NotebookService extends Disposable implements INotebookService, ICu let notebookModel: NotebookTextModel | undefined; - notebookModel = await provider.controller.createNotebook(viewType, uri, undefined, forceReload); + notebookModel = await provider.controller.createNotebook(viewType, uri, undefined, forceReload, editorId); // new notebook model created const modelId = MODEL_ID(uri); diff --git a/src/vs/workbench/contrib/notebook/common/model/notebookTextModel.ts b/src/vs/workbench/contrib/notebook/common/model/notebookTextModel.ts index d7ed741fb38ee..5b1fc5f593583 100644 --- a/src/vs/workbench/contrib/notebook/common/model/notebookTextModel.ts +++ b/src/vs/workbench/contrib/notebook/common/model/notebookTextModel.ts @@ -104,8 +104,7 @@ export class NotebookTextModel extends Disposable implements INotebookTextModel constructor( public handle: number, public viewType: string, - public uri: URI, - public webviewId: string + public uri: URI ) { super(); this.cells = []; diff --git a/src/vs/workbench/contrib/notebook/common/notebookEditorModel.ts b/src/vs/workbench/contrib/notebook/common/notebookEditorModel.ts index 77e8c69d52309..d7fa13eae3b86 100644 --- a/src/vs/workbench/contrib/notebook/common/notebookEditorModel.ts +++ b/src/vs/workbench/contrib/notebook/common/notebookEditorModel.ts @@ -21,16 +21,18 @@ import { DefaultEndOfLine, ITextBuffer, EndOfLinePreference } from 'vs/editor/co export interface INotebookEditorModelManager { models: NotebookEditorModel[]; - resolve(resource: URI, viewType: string): Promise; + resolve(resource: URI, viewType: string, editorId?: string): Promise; get(resource: URI): NotebookEditorModel | undefined; } -export interface INotebookRevertOptions { +export interface INotebookLoadOptions { /** * Go to disk bypassing any cache of the model if any. */ forceReadFromDisk?: boolean; + + editorId?: string; } @@ -98,7 +100,7 @@ export class NotebookEditorModel extends EditorModel implements IWorkingCopy, IN return; } - async load(options?: INotebookRevertOptions): Promise { + async load(options?: INotebookLoadOptions): Promise { if (options?.forceReadFromDisk) { return this.loadFromProvider(true); } @@ -114,20 +116,20 @@ export class NotebookEditorModel extends EditorModel implements IWorkingCopy, IN if (backup) { try { - return await this.loadFromBackup(backup.value.create(DefaultEndOfLine.LF)); + return await this.loadFromBackup(backup.value.create(DefaultEndOfLine.LF), options?.editorId); } catch (error) { // this.logService.error('[text file model] load() from backup', error); // ignore error and continue to load as file below } } - return this.loadFromProvider(false); + return this.loadFromProvider(false, options?.editorId); } - private async loadFromBackup(content: ITextBuffer): Promise { + private async loadFromBackup(content: ITextBuffer, editorId?: string): Promise { const fullRange = content.getRangeAt(0, content.getLength()); const data = JSON.parse(content.getValueInRange(fullRange, EndOfLinePreference.LF)); - const notebook = await this.notebookService.createNotebookFromBackup(this.viewType!, this.resource, data.metadata, data.languages, data.cells); + const notebook = await this.notebookService.createNotebookFromBackup(this.viewType!, this.resource, data.metadata, data.languages, data.cells, editorId); this._notebook = notebook!; this._name = basename(this._notebook!.uri); @@ -143,8 +145,8 @@ export class NotebookEditorModel extends EditorModel implements IWorkingCopy, IN return this; } - private async loadFromProvider(forceReloadFromDisk: boolean) { - const notebook = await this.notebookService.resolveNotebook(this.viewType!, this.resource, forceReloadFromDisk); + private async loadFromProvider(forceReloadFromDisk: boolean, editorId?: string) { + const notebook = await this.notebookService.resolveNotebook(this.viewType!, this.resource, forceReloadFromDisk, editorId); this._notebook = notebook!; this._name = basename(this._notebook!.uri); @@ -207,7 +209,7 @@ export class NotebookEditorModelManager extends Disposable implements INotebookE super(); } - async resolve(resource: URI, viewType: string): Promise { + async resolve(resource: URI, viewType: string, editorId?: string): Promise { // Return early if model is currently being loaded const pendingLoad = this.mapResourceToPendingModelLoaders.get(resource); if (pendingLoad) { diff --git a/src/vs/workbench/contrib/notebook/common/notebookService.ts b/src/vs/workbench/contrib/notebook/common/notebookService.ts index 6aa772b825b20..cd2d25882b6d0 100644 --- a/src/vs/workbench/contrib/notebook/common/notebookService.ts +++ b/src/vs/workbench/contrib/notebook/common/notebookService.ts @@ -18,7 +18,7 @@ export const INotebookService = createDecorator('notebookServi export interface IMainNotebookController { kernel: INotebookKernelInfoDto | undefined; - createNotebook(viewType: string, uri: URI, backup: INotebookTextModelBackup | undefined, forceReload: boolean): Promise; + createNotebook(viewType: string, uri: URI, backup: INotebookTextModelBackup | undefined, forceReload: boolean, editorId?: string): Promise; executeNotebook(viewType: string, uri: URI, useAttachedKernel: boolean, token: CancellationToken): Promise; onDidReceiveMessage(uri: URI, message: any): void; executeNotebookCell(uri: URI, handle: number, useAttachedKernel: boolean, token: CancellationToken): Promise; @@ -43,8 +43,8 @@ export interface INotebookService { unregisterNotebookKernel(id: string): void; getContributedNotebookKernels(viewType: string, resource: URI): readonly INotebookKernelInfo[]; getRendererInfo(handle: number): INotebookRendererInfo | undefined; - resolveNotebook(viewType: string, uri: URI, forceReload: boolean): Promise; - createNotebookFromBackup(viewType: string, uri: URI, metadata: NotebookDocumentMetadata, languages: string[], cells: ICellDto2[]): Promise; + resolveNotebook(viewType: string, uri: URI, forceReload: boolean, editorId?: string): Promise; + createNotebookFromBackup(viewType: string, uri: URI, metadata: NotebookDocumentMetadata, languages: string[], cells: ICellDto2[], editorId?: string): Promise; executeNotebook(viewType: string, uri: URI, useAttachedKernel: boolean, token: CancellationToken): Promise; executeNotebookCell(viewType: string, uri: URI, handle: number, useAttachedKernel: boolean, token: CancellationToken): Promise; executeNotebook2(viewType: string, uri: URI, kernelId: string, token: CancellationToken): Promise; diff --git a/src/vs/workbench/contrib/notebook/test/notebookViewModel.test.ts b/src/vs/workbench/contrib/notebook/test/notebookViewModel.test.ts index 37fa644debb8c..0d57383c533e1 100644 --- a/src/vs/workbench/contrib/notebook/test/notebookViewModel.test.ts +++ b/src/vs/workbench/contrib/notebook/test/notebookViewModel.test.ts @@ -15,7 +15,6 @@ import { NotebookTextModel } from 'vs/workbench/contrib/notebook/common/model/no import { NotebookEventDispatcher } from 'vs/workbench/contrib/notebook/browser/viewModel/eventDispatcher'; import { TrackedRangeStickiness } from 'vs/editor/common/model'; import { reduceCellRanges, ICellRange } from 'vs/workbench/contrib/notebook/browser/notebookBrowser'; -import { generateUuid } from 'vs/base/common/uuid'; suite('NotebookViewModel', () => { const instantiationService = new TestInstantiationService(); @@ -24,7 +23,7 @@ suite('NotebookViewModel', () => { instantiationService.spy(IUndoRedoService, 'pushElement'); test('ctor', function () { - const notebook = new NotebookTextModel(0, 'notebook', URI.parse('test'), generateUuid()); + const notebook = new NotebookTextModel(0, 'notebook', URI.parse('test')); const model = new NotebookEditorTestModel(notebook); const eventDispatcher = new NotebookEventDispatcher(); const viewModel = new NotebookViewModel('notebook', model.notebook, eventDispatcher, null, instantiationService, blukEditService, undoRedoService); diff --git a/src/vs/workbench/contrib/notebook/test/testNotebookEditor.ts b/src/vs/workbench/contrib/notebook/test/testNotebookEditor.ts index b932b80e94e3c..ff45bcd977383 100644 --- a/src/vs/workbench/contrib/notebook/test/testNotebookEditor.ts +++ b/src/vs/workbench/contrib/notebook/test/testNotebookEditor.ts @@ -22,7 +22,6 @@ import { NotebookTextModel } from 'vs/workbench/contrib/notebook/common/model/no import { CellKind, CellUri, INotebookEditorModel, IOutput, NotebookCellMetadata, INotebookKernelInfo } from 'vs/workbench/contrib/notebook/common/notebookCommon'; import { Webview } from 'vs/workbench/contrib/webview/browser/webview'; import { ICompositeCodeEditor, IEditor } from 'vs/editor/common/editorCommon'; -import { generateUuid } from 'vs/base/common/uuid'; export class TestCell extends NotebookCellTextModel { constructor( @@ -281,7 +280,7 @@ export class NotebookEditorTestModel extends EditorModel implements INotebookEdi export function withTestNotebook(instantiationService: IInstantiationService, blukEditService: IBulkEditService, undoRedoService: IUndoRedoService, cells: [string[], string, CellKind, IOutput[], NotebookCellMetadata][], callback: (editor: TestNotebookEditor, viewModel: NotebookViewModel, textModel: NotebookTextModel) => void) { const viewType = 'notebook'; const editor = new TestNotebookEditor(); - const notebook = new NotebookTextModel(0, viewType, URI.parse('test'), generateUuid()); + const notebook = new NotebookTextModel(0, viewType, URI.parse('test')); notebook.cells = cells.map((cell, index) => { return new NotebookCellTextModel(notebook.uri, index, cell[0], cell[1], cell[2], cell[3], cell[4]); }); diff --git a/src/vs/workbench/test/browser/api/extHostNotebookConcatDocument.test.ts b/src/vs/workbench/test/browser/api/extHostNotebookConcatDocument.test.ts index cc45bd7f4ef87..26b9fde6c3b2a 100644 --- a/src/vs/workbench/test/browser/api/extHostNotebookConcatDocument.test.ts +++ b/src/vs/workbench/test/browser/api/extHostNotebookConcatDocument.test.ts @@ -53,7 +53,6 @@ suite('NotebookConcatDocument', function () { handle: 0, uri: notebookUri, viewType: 'test', - webviewId: 'testid', cells: [{ handle: 0, uri: CellUri.generate(notebookUri, 0),