Compare commits

..

6 Commits

Author SHA1 Message Date
Tim van der Meij
5da507f279
Merge pull request #19805 from Snuffleupagus/_xfaStreams-Map
Change `PDFDocument.prototype._xfaStreams` to return a `Map`
2025-04-12 14:00:09 +02:00
Tim van der Meij
5f3e8806fe
Merge pull request #19789 from Snuffleupagus/generic-SignatureStorage-save
Simplify `Object.fromEntries` usage a tiny bit in the `web/generic_signature_storage.js` file
2025-04-12 13:37:40 +02:00
Tim van der Meij
f482232493
Merge pull request #19790 from Snuffleupagus/test-getAnnotationStorage-rm-entries
Simplify the `getAnnotationStorage` integration-test helper function
2025-04-12 13:36:20 +02:00
Jonas Jenwald
1c80412f61 Change PDFDocument.prototype._xfaStreams to return a Map
Using a `Map` rather than an `Object` is a nicer, since it has better support for both iteration and checking if a key exists.
We also change the initial values to be `null`, rather than empty strings, and reduce duplication when creating the `Map`.

*Please note:* Since this is worker-thread code, these changes are "invisible" at the API-level.
2025-04-12 12:47:22 +02:00
Jonas Jenwald
60bf9b133a Simplify the getAnnotationStorage integration-test helper function
As can be seen [at MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/fromEntries#parameters) the `Object.fromEntries` method accepts a `Map` directly, hence using the `Map.prototype.entries` method is superfluous here.
2025-04-09 13:42:22 +02:00
Jonas Jenwald
1d1e6e7b92 Simplify Object.fromEntries usage a tiny bit in the web/generic_signature_storage.js file
As can be seen [at MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/fromEntries#parameters) the `Object.fromEntries` method accepts a `Map` directly, hence using the `Map.prototype.entries` method is superfluous here.
2025-04-09 12:06:40 +02:00
3 changed files with 21 additions and 19 deletions

View File

@ -1117,24 +1117,26 @@ class PDFDocument {
} }
get _xfaStreams() { get _xfaStreams() {
const acroForm = this.catalog.acroForm; const { acroForm } = this.catalog;
if (!acroForm) { if (!acroForm) {
return null; return null;
} }
const xfa = acroForm.get("XFA"); const xfa = acroForm.get("XFA");
const entries = { const entries = new Map(
"xdp:xdp": "", [
template: "", "xdp:xdp",
datasets: "", "template",
config: "", "datasets",
connectionSet: "", "config",
localeSet: "", "connectionSet",
stylesheet: "", "localeSet",
"/xdp:xdp": "", "stylesheet",
}; "/xdp:xdp",
].map(e => [e, null])
);
if (xfa instanceof BaseStream && !xfa.isEmpty) { if (xfa instanceof BaseStream && !xfa.isEmpty) {
entries["xdp:xdp"] = xfa; entries.set("xdp:xdp", xfa);
return entries; return entries;
} }
@ -1152,14 +1154,14 @@ class PDFDocument {
name = xfa[i]; name = xfa[i];
} }
if (!entries.hasOwnProperty(name)) { if (!entries.has(name)) {
continue; continue;
} }
const data = this.xref.fetchIfRef(xfa[i + 1]); const data = this.xref.fetchIfRef(xfa[i + 1]);
if (!(data instanceof BaseStream) || data.isEmpty) { if (!(data instanceof BaseStream) || data.isEmpty) {
continue; continue;
} }
entries[name] = data; entries.set(name, data);
} }
return entries; return entries;
} }
@ -1170,7 +1172,7 @@ class PDFDocument {
return shadow(this, "xfaDatasets", null); return shadow(this, "xfaDatasets", null);
} }
for (const key of ["datasets", "xdp:xdp"]) { for (const key of ["datasets", "xdp:xdp"]) {
const stream = streams[key]; const stream = streams.get(key);
if (!stream) { if (!stream) {
continue; continue;
} }
@ -1192,7 +1194,7 @@ class PDFDocument {
return null; return null;
} }
const data = Object.create(null); const data = Object.create(null);
for (const [key, stream] of Object.entries(streams)) { for (const [key, stream] of streams) {
if (!stream) { if (!stream) {
continue; continue;
} }

View File

@ -466,8 +466,8 @@ async function getFirstSerialized(page, filter = undefined) {
function getAnnotationStorage(page) { function getAnnotationStorage(page) {
return page.evaluate(() => return page.evaluate(() =>
Object.fromEntries( Object.fromEntries(
window.PDFViewerApplication.pdfDocument.annotationStorage.serializable.map?.entries() || window.PDFViewerApplication.pdfDocument.annotationStorage.serializable
[] .map || []
) )
); );
} }

View File

@ -36,7 +36,7 @@ class SignatureStorage {
#save() { #save() {
localStorage.setItem( localStorage.setItem(
KEY_STORAGE, KEY_STORAGE,
JSON.stringify(Object.fromEntries(this.#signatures.entries())) JSON.stringify(Object.fromEntries(this.#signatures))
); );
} }