From 1bae7f7549b9256cb548d0dfaf9a3d3190d68d1f Mon Sep 17 00:00:00 2001 From: Romain Deltour Date: Thu, 17 Nov 2022 14:15:56 +0100 Subject: [PATCH] fix: consider HTML form elements as scripted content Fixes #1282 --- .../com/adobe/epubcheck/ops/OPSHandler30.java | 9 +++++++-- .../EPUB/content_001.xhtml | 16 ++++++++++++++++ .../EPUB/nav.xhtml | 0 .../EPUB/package.opf | 0 .../META-INF/container.xml | 0 .../mimetype | 0 .../EPUB/content_001.xhtml | 0 .../EPUB/nav.xhtml | 14 ++++++++++++++ .../EPUB/package.opf | 16 ++++++++++++++++ .../META-INF/container.xml | 6 ++++++ .../mimetype | 1 + .../05-package-document/package-document.feature | 10 ++++++++-- 12 files changed, 68 insertions(+), 4 deletions(-) create mode 100644 src/test/resources/epub3/05-package-document/files/package-manifest-prop-scripted-undeclared-form-error/EPUB/content_001.xhtml rename src/test/resources/epub3/05-package-document/files/{package-manifest-prop-scripted-undeclared-error => package-manifest-prop-scripted-undeclared-form-error}/EPUB/nav.xhtml (100%) rename src/test/resources/epub3/05-package-document/files/{package-manifest-prop-scripted-undeclared-error => package-manifest-prop-scripted-undeclared-form-error}/EPUB/package.opf (100%) rename src/test/resources/epub3/05-package-document/files/{package-manifest-prop-scripted-undeclared-error => package-manifest-prop-scripted-undeclared-form-error}/META-INF/container.xml (100%) rename src/test/resources/epub3/05-package-document/files/{package-manifest-prop-scripted-undeclared-error => package-manifest-prop-scripted-undeclared-form-error}/mimetype (100%) rename src/test/resources/epub3/05-package-document/files/{package-manifest-prop-scripted-undeclared-error => package-manifest-prop-scripted-undeclared-javascript-error}/EPUB/content_001.xhtml (100%) create mode 100644 src/test/resources/epub3/05-package-document/files/package-manifest-prop-scripted-undeclared-javascript-error/EPUB/nav.xhtml create mode 100644 src/test/resources/epub3/05-package-document/files/package-manifest-prop-scripted-undeclared-javascript-error/EPUB/package.opf create mode 100644 src/test/resources/epub3/05-package-document/files/package-manifest-prop-scripted-undeclared-javascript-error/META-INF/container.xml create mode 100644 src/test/resources/epub3/05-package-document/files/package-manifest-prop-scripted-undeclared-javascript-error/mimetype diff --git a/src/main/java/com/adobe/epubcheck/ops/OPSHandler30.java b/src/main/java/com/adobe/epubcheck/ops/OPSHandler30.java index 3e6fc0f7a..7e1c46812 100644 --- a/src/main/java/com/adobe/epubcheck/ops/OPSHandler30.java +++ b/src/main/java/com/adobe/epubcheck/ops/OPSHandler30.java @@ -324,6 +324,10 @@ else if (EpubConstants.HtmlNamespaceUri.equals(e.getNamespace()) && name.equals( { processMeta(); } + else if (name.equals("form")) + { + requiredProperties.add(ITEM_PROPERTIES.SCRIPTED); + } else if (name.equals("link")) { processLink(); @@ -538,7 +542,8 @@ protected void processVideo() protected void processHyperlink(URL href) { super.processHyperlink(href); - if ("data".equals(href.scheme())) { + if ("data".equals(href.scheme())) + { report.message(MessageId.RSC_029, location()); return; } @@ -912,7 +917,7 @@ protected void checkOverlaysStyles() if (context.opfItem.isPresent() && context.opfItem.get().getMediaOverlay() != null && (context.featureReport.hasFeature(FeatureEnum.MEDIA_OVERLAYS_ACTIVE_CLASS) || context.featureReport.hasFeature(FeatureEnum.MEDIA_OVERLAYS_PLAYBACK_ACTIVE_CLASS)) - && !this.hasCSS) + && !this.hasCSS) { report.message(MessageId.CSS_030, location()); } diff --git a/src/test/resources/epub3/05-package-document/files/package-manifest-prop-scripted-undeclared-form-error/EPUB/content_001.xhtml b/src/test/resources/epub3/05-package-document/files/package-manifest-prop-scripted-undeclared-form-error/EPUB/content_001.xhtml new file mode 100644 index 000000000..c383ed395 --- /dev/null +++ b/src/test/resources/epub3/05-package-document/files/package-manifest-prop-scripted-undeclared-form-error/EPUB/content_001.xhtml @@ -0,0 +1,16 @@ + + + + + Minimal EPUB + + +

Loomings

+

Call me Ishmael.

+
+ + + +
+ + diff --git a/src/test/resources/epub3/05-package-document/files/package-manifest-prop-scripted-undeclared-error/EPUB/nav.xhtml b/src/test/resources/epub3/05-package-document/files/package-manifest-prop-scripted-undeclared-form-error/EPUB/nav.xhtml similarity index 100% rename from src/test/resources/epub3/05-package-document/files/package-manifest-prop-scripted-undeclared-error/EPUB/nav.xhtml rename to src/test/resources/epub3/05-package-document/files/package-manifest-prop-scripted-undeclared-form-error/EPUB/nav.xhtml diff --git a/src/test/resources/epub3/05-package-document/files/package-manifest-prop-scripted-undeclared-error/EPUB/package.opf b/src/test/resources/epub3/05-package-document/files/package-manifest-prop-scripted-undeclared-form-error/EPUB/package.opf similarity index 100% rename from src/test/resources/epub3/05-package-document/files/package-manifest-prop-scripted-undeclared-error/EPUB/package.opf rename to src/test/resources/epub3/05-package-document/files/package-manifest-prop-scripted-undeclared-form-error/EPUB/package.opf diff --git a/src/test/resources/epub3/05-package-document/files/package-manifest-prop-scripted-undeclared-error/META-INF/container.xml b/src/test/resources/epub3/05-package-document/files/package-manifest-prop-scripted-undeclared-form-error/META-INF/container.xml similarity index 100% rename from src/test/resources/epub3/05-package-document/files/package-manifest-prop-scripted-undeclared-error/META-INF/container.xml rename to src/test/resources/epub3/05-package-document/files/package-manifest-prop-scripted-undeclared-form-error/META-INF/container.xml diff --git a/src/test/resources/epub3/05-package-document/files/package-manifest-prop-scripted-undeclared-error/mimetype b/src/test/resources/epub3/05-package-document/files/package-manifest-prop-scripted-undeclared-form-error/mimetype similarity index 100% rename from src/test/resources/epub3/05-package-document/files/package-manifest-prop-scripted-undeclared-error/mimetype rename to src/test/resources/epub3/05-package-document/files/package-manifest-prop-scripted-undeclared-form-error/mimetype diff --git a/src/test/resources/epub3/05-package-document/files/package-manifest-prop-scripted-undeclared-error/EPUB/content_001.xhtml b/src/test/resources/epub3/05-package-document/files/package-manifest-prop-scripted-undeclared-javascript-error/EPUB/content_001.xhtml similarity index 100% rename from src/test/resources/epub3/05-package-document/files/package-manifest-prop-scripted-undeclared-error/EPUB/content_001.xhtml rename to src/test/resources/epub3/05-package-document/files/package-manifest-prop-scripted-undeclared-javascript-error/EPUB/content_001.xhtml diff --git a/src/test/resources/epub3/05-package-document/files/package-manifest-prop-scripted-undeclared-javascript-error/EPUB/nav.xhtml b/src/test/resources/epub3/05-package-document/files/package-manifest-prop-scripted-undeclared-javascript-error/EPUB/nav.xhtml new file mode 100644 index 000000000..240745e63 --- /dev/null +++ b/src/test/resources/epub3/05-package-document/files/package-manifest-prop-scripted-undeclared-javascript-error/EPUB/nav.xhtml @@ -0,0 +1,14 @@ + + + + + Minimal Nav + + + + + diff --git a/src/test/resources/epub3/05-package-document/files/package-manifest-prop-scripted-undeclared-javascript-error/EPUB/package.opf b/src/test/resources/epub3/05-package-document/files/package-manifest-prop-scripted-undeclared-javascript-error/EPUB/package.opf new file mode 100644 index 000000000..0d1eec6e9 --- /dev/null +++ b/src/test/resources/epub3/05-package-document/files/package-manifest-prop-scripted-undeclared-javascript-error/EPUB/package.opf @@ -0,0 +1,16 @@ + + + + Minimal EPUB 3.0 + en + NOID + 2017-06-14T00:00:01Z + + + + + + + + + \ No newline at end of file diff --git a/src/test/resources/epub3/05-package-document/files/package-manifest-prop-scripted-undeclared-javascript-error/META-INF/container.xml b/src/test/resources/epub3/05-package-document/files/package-manifest-prop-scripted-undeclared-javascript-error/META-INF/container.xml new file mode 100644 index 000000000..318782179 --- /dev/null +++ b/src/test/resources/epub3/05-package-document/files/package-manifest-prop-scripted-undeclared-javascript-error/META-INF/container.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/test/resources/epub3/05-package-document/files/package-manifest-prop-scripted-undeclared-javascript-error/mimetype b/src/test/resources/epub3/05-package-document/files/package-manifest-prop-scripted-undeclared-javascript-error/mimetype new file mode 100644 index 000000000..57ef03f24 --- /dev/null +++ b/src/test/resources/epub3/05-package-document/files/package-manifest-prop-scripted-undeclared-javascript-error/mimetype @@ -0,0 +1 @@ +application/epub+zip \ No newline at end of file diff --git a/src/test/resources/epub3/05-package-document/package-document.feature b/src/test/resources/epub3/05-package-document/package-document.feature index 239211170..09e356667 100644 --- a/src/test/resources/epub3/05-package-document/package-document.feature +++ b/src/test/resources/epub3/05-package-document/package-document.feature @@ -587,8 +587,14 @@ Feature: EPUB 3 — Package document And no other errors or warnings are reported @spec @xref:sec-item-resource-properties - Scenario: Report a scripted document without the `scripted` property declared in the package document - When checking EPUB 'package-manifest-prop-scripted-undeclared-error' + Scenario: Report a scripted document (javascript) without the `scripted` property declared in the package document + When checking EPUB 'package-manifest-prop-scripted-undeclared-javascript-error' + Then error OPF-014 is reported + And no other errors or warnings are reported + + @spec @xref:sec-item-resource-properties + Scenario: Report a scripted document (form) without the `scripted` property declared in the package document + When checking EPUB 'package-manifest-prop-scripted-undeclared-form-error' Then error OPF-014 is reported And no other errors or warnings are reported