in src/main/java/org/apache/sling/xss/impl/style/ValidatingDocumentHandler.java [99:121]
private boolean isValidSelector(Selector selector) {
switch (selector.getSelectorType()) {
case Selector.SAC_ANY_NODE_SELECTOR:
case Selector.SAC_ELEMENT_NODE_SELECTOR:
case Selector.SAC_PSEUDO_ELEMENT_SELECTOR:
case Selector.SAC_ROOT_NODE_SELECTOR:
case Selector.SAC_NEGATIVE_SELECTOR:
return cssPolicy.isValidElementName(selector.toString().toLowerCase(Locale.ENGLISH));
case Selector.SAC_DIRECT_ADJACENT_SELECTOR:
SiblingSelector sibling = (SiblingSelector) selector;
return isValidSelector(sibling.getSiblingSelector()) && isValidSelector(sibling.getSelector());
case Selector.SAC_CONDITIONAL_SELECTOR:
ConditionalSelector conditional = (ConditionalSelector) selector;
return isValidSelector(conditional.getSimpleSelector()) && isValidCondition(conditional.getCondition());
case Selector.SAC_CHILD_SELECTOR:
case Selector.SAC_DESCENDANT_SELECTOR:
DescendantSelector descendant = (DescendantSelector) selector;
return isValidSelector(descendant.getAncestorSelector())
&& isValidSelector(descendant.getSimpleSelector());
default:
return false;
}
}