From 8026ed6b0ae180c88fbc94937ecb64bd45c7b654 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Mon, 13 Feb 2023 09:56:08 +0100 Subject: [PATCH] Reduce duplication for reference tests with an `annotationStorage` entry Currently we duplicate the same code more than once in the `test/driver.js` file, which we can avoid by adding a new `AnnotationStorage` helper method instead. --- src/display/annotation_storage.js | 12 +++++++++++ test/driver.js | 34 +++++++++++-------------------- 2 files changed, 24 insertions(+), 22 deletions(-) diff --git a/src/display/annotation_storage.js b/src/display/annotation_storage.js index 843e8cd74..4fe1f478a 100644 --- a/src/display/annotation_storage.js +++ b/src/display/annotation_storage.js @@ -120,10 +120,22 @@ class AnnotationStorage { return this.#storage.has(key); } + /** + * @returns {Object | null} + */ getAll() { return this.#storage.size > 0 ? objectFromMap(this.#storage) : null; } + /** + * @param {Object} obj + */ + setAll(obj) { + for (const [key, val] of Object.entries(obj)) { + this.setValue(key, val); + } + } + get size() { return this.#storage.size; } diff --git a/test/driver.js b/test/driver.js index fc6f092ce..410173c9d 100644 --- a/test/driver.js +++ b/test/driver.js @@ -486,24 +486,18 @@ class Driver { let promise = loadingTask.promise; if (task.save) { - if (!task.annotationStorage) { - promise = Promise.reject( - new Error("Missing `annotationStorage` entry.") - ); - } else { - promise = loadingTask.promise.then(async doc => { - for (const [key, value] of Object.entries( - task.annotationStorage - )) { - doc.annotationStorage.setValue(key, value); - } - const data = await doc.saveDocument(); - await loadingTask.destroy(); - delete task.annotationStorage; + promise = loadingTask.promise.then(async doc => { + if (!task.annotationStorage) { + throw new Error("Missing `annotationStorage` entry."); + } + doc.annotationStorage.setAll(task.annotationStorage); - return getDocument(data).promise; - }); - } + const data = await doc.saveDocument(); + await loadingTask.destroy(); + delete task.annotationStorage; + + return getDocument(data).promise; + }); } promise.then( @@ -668,11 +662,7 @@ class Driver { pageColors = null; if (task.annotationStorage) { - const entries = Object.entries(task.annotationStorage), - docAnnotationStorage = task.pdfDoc.annotationStorage; - for (const [key, value] of entries) { - docAnnotationStorage.setValue(key, value); - } + task.pdfDoc.annotationStorage.setAll(task.annotationStorage); } let textLayerCanvas, annotationLayerCanvas, annotationLayerContext;