From 2283bdfd284fa6161ee6d08c2cf721d0883a6d6c Mon Sep 17 00:00:00 2001 From: Ronald Brill Date: Sun, 11 Aug 2024 09:27:14 +0200 Subject: [PATCH] Method CSSStyleSheet.validateSelectors(SelectorList, int, DomNode) is deprecated; please use method CSSStyleSheet.validateSelectors(SelectorList, DomNode) instead. --- .../java/org/htmlunit/css/CssStyleSheet.java | 46 ++++++++++++------- src/main/java/org/htmlunit/html/DomNode.java | 2 +- .../javascript/host/css/CSSStyleSheet.java | 4 +- 3 files changed, 33 insertions(+), 19 deletions(-) diff --git a/src/main/java/org/htmlunit/css/CssStyleSheet.java b/src/main/java/org/htmlunit/css/CssStyleSheet.java index 15edf2d5b53..a2ac13ac9d9 100644 --- a/src/main/java/org/htmlunit/css/CssStyleSheet.java +++ b/src/main/java/org/htmlunit/css/CssStyleSheet.java @@ -1087,11 +1087,28 @@ private static String toString(final InputSource source) { * @param documentMode see {@link Document#getDocumentMode()} * @param domNode the dom node the query should work on * @throws CSSException if a selector is invalid + * + * @deprecated as of version 4.5.0; use {@link #validateSelectors(SelectorList, DomNode)} instead */ + @Deprecated public static void validateSelectors(final SelectorList selectorList, final int documentMode, final DomNode domNode) throws CSSException { for (final Selector selector : selectorList) { - if (!isValidSelector(selector, documentMode, domNode)) { + if (!isValidSelector(selector, domNode)) { + throw new CSSException("Invalid selector: " + selector, null); + } + } + } + + /** + * Validates the list of selectors. + * @param selectorList the selectors + * @param domNode the dom node the query should work on + * @throws CSSException if a selector is invalid + */ + public static void validateSelectors(final SelectorList selectorList, final DomNode domNode) throws CSSException { + for (final Selector selector : selectorList) { + if (!isValidSelector(selector, domNode)) { throw new CSSException("Invalid selector: " + selector, null); } } @@ -1100,13 +1117,13 @@ public static void validateSelectors(final SelectorList selectorList, final int /** * @param documentMode see {@link Document#getDocumentMode()} */ - private static boolean isValidSelector(final Selector selector, final int documentMode, final DomNode domNode) { + private static boolean isValidSelector(final Selector selector, final DomNode domNode) { switch (selector.getSelectorType()) { case ELEMENT_NODE_SELECTOR: final List conditions = ((ElementSelector) selector).getConditions(); if (conditions != null) { for (final Condition condition : conditions) { - if (!isValidCondition(condition, documentMode, domNode)) { + if (!isValidCondition(condition, domNode)) { return false; } } @@ -1114,20 +1131,20 @@ private static boolean isValidSelector(final Selector selector, final int docume return true; case DESCENDANT_SELECTOR: final DescendantSelector ds = (DescendantSelector) selector; - return isValidSelector(ds.getAncestorSelector(), documentMode, domNode) - && isValidSelector(ds.getSimpleSelector(), documentMode, domNode); + return isValidSelector(ds.getAncestorSelector(), domNode) + && isValidSelector(ds.getSimpleSelector(), domNode); case CHILD_SELECTOR: final ChildSelector cs = (ChildSelector) selector; - return isValidSelector(cs.getAncestorSelector(), documentMode, domNode) - && isValidSelector(cs.getSimpleSelector(), documentMode, domNode); + return isValidSelector(cs.getAncestorSelector(), domNode) + && isValidSelector(cs.getSimpleSelector(), domNode); case DIRECT_ADJACENT_SELECTOR: final DirectAdjacentSelector das = (DirectAdjacentSelector) selector; - return isValidSelector(das.getSelector(), documentMode, domNode) - && isValidSelector(das.getSimpleSelector(), documentMode, domNode); + return isValidSelector(das.getSelector(), domNode) + && isValidSelector(das.getSimpleSelector(), domNode); case GENERAL_ADJACENT_SELECTOR: final GeneralAdjacentSelector gas = (GeneralAdjacentSelector) selector; - return isValidSelector(gas.getSelector(), documentMode, domNode) - && isValidSelector(gas.getSimpleSelector(), documentMode, domNode); + return isValidSelector(gas.getSelector(), domNode) + && isValidSelector(gas.getSimpleSelector(), domNode); default: if (LOG.isWarnEnabled()) { LOG.warn("Unhandled CSS selector type '" @@ -1140,7 +1157,7 @@ private static boolean isValidSelector(final Selector selector, final int docume /** * @param documentMode see {@link Document#getDocumentMode()} */ - private static boolean isValidCondition(final Condition condition, final int documentMode, final DomNode domNode) { + private static boolean isValidCondition(final Condition condition, final DomNode domNode) { switch (condition.getConditionType()) { case ATTRIBUTE_CONDITION: case ID_CONDITION: @@ -1156,7 +1173,7 @@ private static boolean isValidCondition(final Condition condition, final int doc final NotPseudoClassCondition notPseudoCondition = (NotPseudoClassCondition) condition; final SelectorList selectorList = notPseudoCondition.getSelectors(); for (final Selector selector : selectorList) { - if (!isValidSelector(selector, documentMode, domNode)) { + if (!isValidSelector(selector, domNode)) { return false; } } @@ -1169,9 +1186,6 @@ private static boolean isValidCondition(final Condition condition, final int doc } value = value.substring(0, value.indexOf('(') + 1) + ')'; } - if (documentMode < 9) { - return CSS2_PSEUDO_CLASSES.contains(value); - } if ("nth-child()".equals(value)) { final String arg = StringUtils.substringBetween(condition.getValue(), "(", ")").trim(); diff --git a/src/main/java/org/htmlunit/html/DomNode.java b/src/main/java/org/htmlunit/html/DomNode.java index 12c1015609c..dd932aeb4c0 100644 --- a/src/main/java/org/htmlunit/html/DomNode.java +++ b/src/main/java/org/htmlunit/html/DomNode.java @@ -1789,7 +1789,7 @@ protected SelectorList getSelectorList(final String selectors, final WebClient w } if (selectorList != null) { - CssStyleSheet.validateSelectors(selectorList, 9, this); + CssStyleSheet.validateSelectors(selectorList, this); } return selectorList; diff --git a/src/main/java/org/htmlunit/javascript/host/css/CSSStyleSheet.java b/src/main/java/org/htmlunit/javascript/host/css/CSSStyleSheet.java index 7b90618498b..c7ba18abc44 100644 --- a/src/main/java/org/htmlunit/javascript/host/css/CSSStyleSheet.java +++ b/src/main/java/org/htmlunit/javascript/host/css/CSSStyleSheet.java @@ -321,13 +321,13 @@ public String getUri() { * @throws CSSException if a selector is invalid * * @deprecated as of version 3.7.0; use - * {@link CssStyleSheet#validateSelectors(org.htmlunit.cssparser.parser.selector.SelectorList, int, DomNode)} + * {@link CssStyleSheet#validateSelectors(org.htmlunit.cssparser.parser.selector.SelectorList, DomNode)} * instead */ @Deprecated public static void validateSelectors(final SelectorList selectorList, final int documentMode, final DomNode domNode) throws CSSException { - CssStyleSheet.validateSelectors(selectorList, documentMode, domNode); + CssStyleSheet.validateSelectors(selectorList, domNode); } private void initCssRules() {