Merge pull request #16053 from Snuffleupagus/test-set-annotationStorage

Reduce duplication for reference tests with an `annotationStorage` entry
This commit is contained in:
Jonas Jenwald 2023-02-13 11:56:12 +01:00 committed by GitHub
commit 546902df63
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 24 additions and 22 deletions

View File

@ -120,10 +120,22 @@ class AnnotationStorage {
return this.#storage.has(key); return this.#storage.has(key);
} }
/**
* @returns {Object | null}
*/
getAll() { getAll() {
return this.#storage.size > 0 ? objectFromMap(this.#storage) : null; 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() { get size() {
return this.#storage.size; return this.#storage.size;
} }

View File

@ -486,24 +486,18 @@ class Driver {
let promise = loadingTask.promise; let promise = loadingTask.promise;
if (task.save) { if (task.save) {
if (!task.annotationStorage) { promise = loadingTask.promise.then(async doc => {
promise = Promise.reject( if (!task.annotationStorage) {
new Error("Missing `annotationStorage` entry.") throw new Error("Missing `annotationStorage` entry.");
); }
} else { doc.annotationStorage.setAll(task.annotationStorage);
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;
return getDocument(data).promise; const data = await doc.saveDocument();
}); await loadingTask.destroy();
} delete task.annotationStorage;
return getDocument(data).promise;
});
} }
promise.then( promise.then(
@ -668,11 +662,7 @@ class Driver {
pageColors = null; pageColors = null;
if (task.annotationStorage) { if (task.annotationStorage) {
const entries = Object.entries(task.annotationStorage), task.pdfDoc.annotationStorage.setAll(task.annotationStorage);
docAnnotationStorage = task.pdfDoc.annotationStorage;
for (const [key, value] of entries) {
docAnnotationStorage.setValue(key, value);
}
} }
let textLayerCanvas, annotationLayerCanvas, annotationLayerContext; let textLayerCanvas, annotationLayerCanvas, annotationLayerContext;