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() {