From b6cee1ca22fd3773a450f774672f554ee2e63428 Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Thu, 15 Apr 2021 16:21:06 +0200 Subject: [PATCH] add cancellation to NotebookSerializer, https://github.com/microsoft/vscode/issues/121329 --- src/vs/vscode.proposed.d.ts | 4 ++-- src/vs/workbench/api/browser/mainThreadNotebook.ts | 4 ++-- src/vs/workbench/api/common/extHost.protocol.ts | 4 ++-- src/vs/workbench/api/common/extHostNotebook.ts | 8 ++++---- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/vs/vscode.proposed.d.ts b/src/vs/vscode.proposed.d.ts index 82a0202fff3..a462144cc7b 100644 --- a/src/vs/vscode.proposed.d.ts +++ b/src/vs/vscode.proposed.d.ts @@ -1404,8 +1404,8 @@ declare module 'vscode' { //#region https://github.com/microsoft/vscode/issues/106744, NotebookSerializer export interface NotebookSerializer { - deserializeNotebook(data: Uint8Array): NotebookData | Thenable; - serializeNotebook(data: NotebookData): Uint8Array | Thenable; + deserializeNotebook(data: Uint8Array, token: CancellationToken): NotebookData | Thenable; + serializeNotebook(data: NotebookData, token: CancellationToken): Uint8Array | Thenable; } export namespace notebook { diff --git a/src/vs/workbench/api/browser/mainThreadNotebook.ts b/src/vs/workbench/api/browser/mainThreadNotebook.ts index d8d3fea947f..be31750123b 100644 --- a/src/vs/workbench/api/browser/mainThreadNotebook.ts +++ b/src/vs/workbench/api/browser/mainThreadNotebook.ts @@ -132,10 +132,10 @@ export class MainThreadNotebooks implements MainThreadNotebookShape { const registration = this._notebookService.registerNotebookSerializer(viewType, extension, { options, dataToNotebook: (data: VSBuffer): Promise => { - return this._proxy.$dataToNotebook(handle, data); + return this._proxy.$dataToNotebook(handle, data, CancellationToken.None); }, notebookToData: (data: NotebookDataDto): Promise => { - return this._proxy.$notebookToData(handle, data); + return this._proxy.$notebookToData(handle, data, CancellationToken.None); } }); this._notebookSerializer.set(handle, registration); diff --git a/src/vs/workbench/api/common/extHost.protocol.ts b/src/vs/workbench/api/common/extHost.protocol.ts index de66ca25d72..28ebc81bedf 100644 --- a/src/vs/workbench/api/common/extHost.protocol.ts +++ b/src/vs/workbench/api/common/extHost.protocol.ts @@ -1942,8 +1942,8 @@ export interface ExtHostNotebookShape extends ExtHostNotebookDocumentsAndEditors $saveNotebookAs(viewType: string, uri: UriComponents, target: UriComponents, token: CancellationToken): Promise; $backupNotebook(viewType: string, uri: UriComponents, cancellation: CancellationToken): Promise; - $dataToNotebook(handle: number, data: VSBuffer): Promise; - $notebookToData(handle: number, data: NotebookDataDto): Promise; + $dataToNotebook(handle: number, data: VSBuffer, token: CancellationToken): Promise; + $notebookToData(handle: number, data: NotebookDataDto, token: CancellationToken): Promise; } export interface ExtHostNotebookDocumentsAndEditorsShape { diff --git a/src/vs/workbench/api/common/extHostNotebook.ts b/src/vs/workbench/api/common/extHostNotebook.ts index 36b67ed2e03..38d827ac4db 100644 --- a/src/vs/workbench/api/common/extHostNotebook.ts +++ b/src/vs/workbench/api/common/extHostNotebook.ts @@ -567,19 +567,19 @@ export class ExtHostNotebookController implements ExtHostNotebookShape { }); } - async $dataToNotebook(handle: number, bytes: VSBuffer): Promise { + async $dataToNotebook(handle: number, bytes: VSBuffer, token: CancellationToken): Promise { const serializer = this._notebookSerializer.get(handle); if (!serializer) { throw new Error('NO serializer found'); } - const data = await serializer.deserializeNotebook(bytes.buffer); + const data = await serializer.deserializeNotebook(bytes.buffer, token); return { metadata: typeConverters.NotebookDocumentMetadata.from(data.metadata), cells: data.cells.map(typeConverters.NotebookCellData.from), }; } - async $notebookToData(handle: number, data: NotebookDataDto): Promise { + async $notebookToData(handle: number, data: NotebookDataDto, token: CancellationToken): Promise { const serializer = this._notebookSerializer.get(handle); if (!serializer) { throw new Error('NO serializer found'); @@ -587,7 +587,7 @@ export class ExtHostNotebookController implements ExtHostNotebookShape { const bytes = await serializer.serializeNotebook({ metadata: typeConverters.NotebookDocumentMetadata.to(data.metadata), cells: data.cells.map(typeConverters.NotebookCellData.to) - }); + }, token); return VSBuffer.wrap(bytes); }