From 55808238e4ac00db453803a49a3bf4218fc2f852 Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Wed, 24 Apr 2024 13:02:03 +0200 Subject: [PATCH] Set correctly the change property for the event triggered when a choice list is changed It fixes #17998. --- src/display/annotation_layer.js | 2 ++ test/integration/scripting_spec.mjs | 43 ++++++++++++++++++++++++++++ test/pdfs/.gitignore | 1 + test/pdfs/issue17998.pdf | Bin 0 -> 7762 bytes 4 files changed, 46 insertions(+) create mode 100755 test/pdfs/issue17998.pdf diff --git a/src/display/annotation_layer.js b/src/display/annotation_layer.js index 8d63349726632..e6555745c15bd 100644 --- a/src/display/annotation_layer.js +++ b/src/display/annotation_layer.js @@ -1993,6 +1993,7 @@ class ChoiceWidgetAnnotationElement extends WidgetAnnotationElement { selectElement.addEventListener("input", event => { const exportValue = getValue(/* isExport */ true); + const change = getValue(/* isExport */ false); storage.setValue(id, { value: exportValue }); event.preventDefault(); @@ -2003,6 +2004,7 @@ class ChoiceWidgetAnnotationElement extends WidgetAnnotationElement { id, name: "Keystroke", value: selectedValues, + change, changeEx: exportValue, willCommit: false, commitKey: 1, diff --git a/test/integration/scripting_spec.mjs b/test/integration/scripting_spec.mjs index a17b2ef00c029..acbbd0f60c06a 100644 --- a/test/integration/scripting_spec.mjs +++ b/test/integration/scripting_spec.mjs @@ -2425,4 +2425,47 @@ describe("Interaction", () => { ); }); }); + + describe("Value of event.change when a choice list is modified", () => { + let pages; + let otherPages; + + beforeAll(async () => { + otherPages = await Promise.all( + global.integrationSessions.map(async session => + session.browser.newPage() + ) + ); + pages = await loadAndWait("issue17998.pdf", getSelector("7R")); + }); + + afterAll(async () => { + await closePages(pages); + await Promise.all(otherPages.map(page => page.close())); + }); + + it("must check the properties of the event", async () => { + await Promise.all( + pages.map(async ([browserName, page], i) => { + await page.waitForFunction( + "window.PDFViewerApplication.scriptingReady === true" + ); + + for (const [value, expected] of [ + ["b", "change=B,changeEx=b,value=A"], + ["c", "change=C,changeEx=c,value=B"], + ["a", "change=A,changeEx=a,value=C"], + ]) { + await page.select(getSelector("7R"), value); + await page.waitForFunction( + `${getQuerySelector("10R")}.value !== ""` + ); + const text = await page.$eval(getSelector("10R"), el => el.value); + expect(text).withContext(`In ${browserName}`).toEqual(expected); + await clearInput(page, getSelector("10R")); + } + }) + ); + }); + }); }); diff --git a/test/pdfs/.gitignore b/test/pdfs/.gitignore index 5460d43a57af2..c14796e4fcdde 100644 --- a/test/pdfs/.gitignore +++ b/test/pdfs/.gitignore @@ -644,3 +644,4 @@ !issue17929.pdf !issue12213.pdf !tracemonkey_freetext.pdf +!issue17998.pdf diff --git a/test/pdfs/issue17998.pdf b/test/pdfs/issue17998.pdf new file mode 100755 index 0000000000000000000000000000000000000000..1624b181541d2e13277e555d3b15b03d5039eb5f GIT binary patch literal 7762 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 literal 0 HcmV?d00001