From dca54c8f8a34e1ac63b6a746fbf09fac6df34df5 Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Sun, 19 Feb 2023 16:33:05 +0100 Subject: [PATCH] [JS] Send a Validate action on change on Choice widget --- src/display/annotation_layer.js | 3 ++- test/integration/scripting_spec.js | 39 +++++++++++++++++++++++++++++ test/pdfs/.gitignore | 1 + test/pdfs/issue16067.pdf | Bin 0 -> 3761 bytes 4 files changed, 42 insertions(+), 1 deletion(-) create mode 100755 test/pdfs/issue16067.pdf diff --git a/src/display/annotation_layer.js b/src/display/annotation_layer.js index f8b3fd55b..e80d50f5d 100644 --- a/src/display/annotation_layer.js +++ b/src/display/annotation_layer.js @@ -1765,8 +1765,9 @@ class ChoiceWidgetAnnotationElement extends WidgetAnnotationElement { ["mouseleave", "Mouse Exit"], ["mouseup", "Mouse Up"], ["input", "Action"], + ["input", "Validate"], ], - event => event.target.checked + event => event.target.value ); } else { selectElement.addEventListener("input", function (event) { diff --git a/test/integration/scripting_spec.js b/test/integration/scripting_spec.js index f335fc1b6..7fd854623 100644 --- a/test/integration/scripting_spec.js +++ b/test/integration/scripting_spec.js @@ -1854,4 +1854,43 @@ describe("Interaction", () => { ); }); }); + + describe("in issue16067.pdf", () => { + let pages; + + beforeAll(async () => { + pages = await loadAndWait("issue16067.pdf", getSelector("6R")); + }); + + afterAll(async () => { + await closePages(pages); + }); + + it("must check that a field has the correct value when a choice is changed", async () => { + await Promise.all( + pages.map(async ([browserName, page]) => { + await page.waitForFunction( + "window.PDFViewerApplication.scriptingReady === true" + ); + + let text = await page.$eval(getSelector("44R"), el => el.value); + expect(text).withContext(`In ${browserName}`).toEqual(""); + + await page.select(getSelector("6R"), "Yes"); + await page.waitForTimeout(10); + + text = await page.$eval(getSelector("44R"), el => el.value); + expect(text).withContext(`In ${browserName}`).toEqual("Yes"); + + await clearInput(page, getSelector("44R")); + + await page.select(getSelector("6R"), "No"); + await page.waitForTimeout(10); + + text = await page.$eval(getSelector("44R"), el => el.value); + expect(text).withContext(`In ${browserName}`).toEqual("No"); + }) + ); + }); + }); }); diff --git a/test/pdfs/.gitignore b/test/pdfs/.gitignore index 5ea4bb2de..86847a119 100644 --- a/test/pdfs/.gitignore +++ b/test/pdfs/.gitignore @@ -575,3 +575,4 @@ !issue16021.pdf !bug1770750.pdf !issue16063.pdf +!issue16067.pdf diff --git a/test/pdfs/issue16067.pdf b/test/pdfs/issue16067.pdf new file mode 100755 index 0000000000000000000000000000000000000000..a5ef5a3a5246a46c0b796d9af07b2e18b5997255 GIT binary patch literal 3761 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 OIaGh@>MxgBG5!PKYLFcO literal 0 HcmV?d00001