MCPcopy Index your code
hub / github.com/HtmlUnit/htmlunit / selects

Method selects

src/main/java/org/htmlunit/css/CssStyleSheet.java:410–564  ·  view source on GitHub ↗

Returns true if the specified selector selects the specified element. @param browserVersion the browser version @param selector the selector to test @param element the element to test @param pseudoElement the pseudo element to match, (can be null) @param fromQuerySelectorAll whether

(final BrowserVersion browserVersion, final Selector selector,
            final DomElement element, final String pseudoElement, final boolean fromQuerySelectorAll,
            final boolean throwOnSyntax)

Source from the content-addressed store, hash-verified

408 * @return {@code true} if it does apply, {@code false} if it doesn't apply
409 */
410 public static boolean selects(final BrowserVersion browserVersion, final Selector selector,
411 final DomElement element, final String pseudoElement, final boolean fromQuerySelectorAll,
412 final boolean throwOnSyntax) {
413 switch (selector.getSelectorType()) {
414 case ELEMENT_NODE_SELECTOR:
415 final ElementSelector es = (ElementSelector) selector;
416
417 final String name;
418 final String elementName;
419 if (element.getPage().hasCaseSensitiveTagNames()) {
420 name = es.getLocalName();
421 elementName = element.getLocalName();
422 }
423 else {
424 name = es.getLocalNameLowerCase();
425 elementName = element.getLowercaseName();
426 }
427
428 if (name == null || name.equals(elementName)) {
429 final List<Condition> conditions = es.getConditions();
430 if (conditions != null) {
431 for (final Condition condition : conditions) {
432 if (!selects(browserVersion, condition, element, fromQuerySelectorAll, throwOnSyntax)) {
433 return false;
434 }
435 }
436 }
437 return true;
438 }
439
440 return false;
441
442 case CHILD_SELECTOR:
443 final DomNode parentNode = element.getParentNode();
444 if (parentNode == element.getPage()) {
445 return false;
446 }
447 if (!(parentNode instanceof DomElement)) {
448 return false; // for instance parent is a DocumentFragment
449 }
450 final ChildSelector cs = (ChildSelector) selector;
451 return selects(browserVersion, cs.getSimpleSelector(), element, pseudoElement,
452 fromQuerySelectorAll, throwOnSyntax)
453 && selects(browserVersion, cs.getAncestorSelector(), (DomElement) parentNode,
454 pseudoElement, fromQuerySelectorAll, throwOnSyntax);
455
456 case DESCENDANT_SELECTOR:
457 final DescendantSelector ds = (DescendantSelector) selector;
458 final SimpleSelector simpleSelector = ds.getSimpleSelector();
459 if (selects(browserVersion, simpleSelector, element, pseudoElement,
460 fromQuerySelectorAll, throwOnSyntax)) {
461 DomNode ancestor = element;
462 if (simpleSelector.getSelectorType() != SelectorType.PSEUDO_ELEMENT_SELECTOR) {
463 ancestor = ancestor.getParentNode();
464 }
465 final Selector dsAncestorSelector = ds.getAncestorSelector();
466 while (ancestor instanceof DomElement) {
467 if (selects(browserVersion, dsAncestorSelector, (DomElement) ancestor, pseudoElement,

Callers 7

selects_miscSelectorsMethod · 0.95
testSelectsMethod · 0.95
querySelectorAllMethod · 0.95
closestMethod · 0.95
matchesMethod · 0.95
modifyIfNecessaryMethod · 0.95

Calls 15

getParentNodeMethod · 0.95
getPreviousSiblingMethod · 0.95
getNextSiblingMethod · 0.95
isEmptyStringMethod · 0.95
startsWithIgnoreCaseMethod · 0.95
endsWithIgnoreCaseMethod · 0.95
containsIgnoreCaseMethod · 0.95
toRootLowerCaseMethod · 0.95
selectsOneOfMethod · 0.95
selectsPseudoClassMethod · 0.95

Tested by 3

selects_miscSelectorsMethod · 0.76
testSelectsMethod · 0.76