1
0
Fork 0
mirror of https://github.com/mozilla/pdf.js.git synced 2025-04-19 06:38:07 +02:00

Merge pull request #19778 from Snuffleupagus/replace-getAll

[api-minor] Replace various `getAll` methods with iterators
This commit is contained in:
Jonas Jenwald 2025-04-08 17:26:24 +02:00 committed by GitHub
commit 22657e2b6e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 53 additions and 92 deletions

View file

@ -738,7 +738,7 @@ class Driver {
await page.getAnnotations({ intent: "display" });
}
}
doc.annotationStorage.setAll(task.annotationStorage);
doc.annotationStorage._setValues(task.annotationStorage);
const data = await doc.saveDocument();
await loadingTask.destroy();
@ -919,7 +919,7 @@ class Driver {
pageColors = null;
if (task.annotationStorage) {
task.pdfDoc.annotationStorage.setAll(task.annotationStorage);
task.pdfDoc.annotationStorage._setValues(task.annotationStorage);
}
let textLayerCanvas, annotationLayerCanvas, annotationLayerContext;

View file

@ -59,7 +59,7 @@ describe("AnnotationStorage", function () {
it("should set a new value in the annotation storage", function () {
const annotationStorage = new AnnotationStorage();
annotationStorage.setValue("123A", { value: "an other string" });
const value = annotationStorage.getAll()["123A"].value;
const { value } = annotationStorage.getRawValue("123A");
expect(value).toEqual("an other string");
});

View file

@ -16,8 +16,6 @@
import { Metadata } from "../../src/display/metadata.js";
import { MetadataParser } from "../../src/core/metadata_parser.js";
const emptyObj = Object.create(null);
function createMetadata(data) {
const metadataParser = new MetadataParser(data);
return new Metadata(metadataParser.serializable);
@ -33,13 +31,10 @@ describe("metadata", function () {
"</rdf:Alt></dc:title></rdf:Description></rdf:RDF></x:xmpmeta>";
const metadata = createMetadata(data);
expect(metadata.has("dc:title")).toBeTruthy();
expect(metadata.has("dc:qux")).toBeFalsy();
expect(metadata.get("dc:title")).toEqual("Foo bar baz");
expect(metadata.get("dc:qux")).toEqual(null);
expect(metadata.getAll()).toEqual({ "dc:title": "Foo bar baz" });
expect([...metadata]).toEqual([["dc:title", "Foo bar baz"]]);
});
it("should repair and handle invalid metadata", function () {
@ -51,13 +46,10 @@ describe("metadata", function () {
"</rdf:Description></rdf:RDF></x:xmpmeta>";
const metadata = createMetadata(data);
expect(metadata.has("dc:title")).toBeTruthy();
expect(metadata.has("dc:qux")).toBeFalsy();
expect(metadata.get("dc:title")).toEqual("PDF&");
expect(metadata.get("dc:qux")).toEqual(null);
expect(metadata.getAll()).toEqual({ "dc:title": "PDF&" });
expect([...metadata]).toEqual([["dc:title", "PDF&"]]);
});
it("should repair and handle invalid metadata (bug 1424938)", function () {
@ -94,19 +86,16 @@ describe("metadata", function () {
"</x:xmpmeta>";
const metadata = createMetadata(data);
expect(metadata.has("dc:title")).toBeTruthy();
expect(metadata.has("dc:qux")).toBeFalsy();
expect(metadata.get("dc:title")).toEqual(
"L'Odissee thématique logo Odisséé - décembre 2008.pub"
);
expect(metadata.get("dc:qux")).toEqual(null);
expect(metadata.getAll()).toEqual({
"dc:creator": ["ODIS"],
"dc:title": "L'Odissee thématique logo Odisséé - décembre 2008.pub",
"xap:creatortool": "PDFCreator Version 0.9.6",
});
expect([...metadata].sort()).toEqual([
["dc:creator", ["ODIS"]],
["dc:title", "L'Odissee thématique logo Odisséé - décembre 2008.pub"],
["xap:creatortool", "PDFCreator Version 0.9.6"],
]);
});
it("should gracefully handle incomplete tags (issue 8884)", function () {
@ -137,7 +126,7 @@ describe("metadata", function () {
'<?xpacket end="w"?>';
const metadata = createMetadata(data);
expect(metadata.getAll()).toEqual(emptyObj);
expect([...metadata]).toEqual([]);
});
it('should gracefully handle "junk" before the actual metadata (issue 10395)', function () {
@ -168,26 +157,23 @@ describe("metadata", function () {
'</rdf:Description></rdf:RDF></x:xmpmeta><?xpacket end="w"?>';
const metadata = createMetadata(data);
expect(metadata.has("dc:title")).toBeTruthy();
expect(metadata.has("dc:qux")).toBeFalsy();
expect(metadata.get("dc:title")).toEqual("");
expect(metadata.get("dc:qux")).toEqual(null);
expect(metadata.getAll()).toEqual({
"dc:creator": [""],
"dc:description": "",
"dc:format": "application/pdf",
"dc:subject": [],
"dc:title": "",
"pdf:keywords": "",
"pdf:pdfversion": "1.7",
"pdf:producer": "PDFKit.NET 4.0.102.0",
"xap:createdate": "2018-12-27T13:50:36-08:00",
"xap:creatortool": "",
"xap:metadatadate": "2018-12-27T13:50:38-08:00",
"xap:modifydate": "2018-12-27T13:50:38-08:00",
});
expect([...metadata].sort()).toEqual([
["dc:creator", [""]],
["dc:description", ""],
["dc:format", "application/pdf"],
["dc:subject", []],
["dc:title", ""],
["pdf:keywords", ""],
["pdf:pdfversion", "1.7"],
["pdf:producer", "PDFKit.NET 4.0.102.0"],
["xap:createdate", "2018-12-27T13:50:36-08:00"],
["xap:creatortool", ""],
["xap:metadatadate", "2018-12-27T13:50:38-08:00"],
["xap:modifydate", "2018-12-27T13:50:38-08:00"],
]);
});
it('should correctly handle metadata containing "&apos" (issue 10407)', function () {
@ -200,13 +186,10 @@ describe("metadata", function () {
"</rdf:Alt></dc:title></rdf:Description></rdf:RDF></x:xmpmeta>";
const metadata = createMetadata(data);
expect(metadata.has("dc:title")).toBeTruthy();
expect(metadata.has("dc:qux")).toBeFalsy();
expect(metadata.get("dc:title")).toEqual("'Foo bar baz'");
expect(metadata.get("dc:qux")).toEqual(null);
expect(metadata.getAll()).toEqual({ "dc:title": "'Foo bar baz'" });
expect([...metadata]).toEqual([["dc:title", "'Foo bar baz'"]]);
});
it("should gracefully handle unbalanced end tags (issue 10410)", function () {
@ -229,7 +212,7 @@ describe("metadata", function () {
'</rdf:RDF></x:xmpmeta><?xpacket end="w"?>';
const metadata = createMetadata(data);
expect(metadata.getAll()).toEqual(emptyObj);
expect([...metadata]).toEqual([]);
});
it("should not be vulnerable to the billion laughs attack", function () {
@ -258,12 +241,9 @@ describe("metadata", function () {
"</rdf:RDF>";
const metadata = createMetadata(data);
expect(metadata.has("dc:title")).toBeTruthy();
expect(metadata.has("dc:qux")).toBeFalsy();
expect(metadata.get("dc:title")).toEqual("a&lol9;b");
expect(metadata.get("dc:qux")).toEqual(null);
expect(metadata.getAll()).toEqual({ "dc:title": "a&lol9;b" });
expect([...metadata]).toEqual([["dc:title", "a&lol9;b"]]);
});
});