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.
This commit is contained in:
Jonas Jenwald 2023-02-13 09:56:08 +01:00
parent f66cbb0b5e
commit 8026ed6b0a
2 changed files with 24 additions and 22 deletions

View File

@ -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;
}

View File

@ -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;