Skip to content

Commit fe92dc7

Browse files
committed
fix specificity for :is() selector
1 parent 437148e commit fe92dc7

File tree

2 files changed

+22
-2
lines changed

2 files changed

+22
-2
lines changed

src/main/java/org/htmlunit/cssparser/parser/selector/SelectorSpecificity.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import java.io.Serializable;
1818

1919
import org.htmlunit.cssparser.parser.condition.Condition;
20+
import org.htmlunit.cssparser.parser.condition.IsPseudoClassCondition;
2021
import org.htmlunit.cssparser.parser.condition.NotPseudoClassCondition;
2122

2223
/**
@@ -131,8 +132,15 @@ private void readSelectorSpecificity(final Condition condition) {
131132
return;
132133
case NOT_PSEUDO_CLASS_CONDITION:
133134
final NotPseudoClassCondition notPseudoCondition = (NotPseudoClassCondition) condition;
134-
final SelectorList selectorList = notPseudoCondition.getSelectors();
135-
for (final Selector selector : selectorList) {
135+
final SelectorList notSelectorList = notPseudoCondition.getSelectors();
136+
for (final Selector selector : notSelectorList) {
137+
readSelectorSpecificity(selector);
138+
}
139+
return;
140+
case IS_PSEUDO_CLASS_CONDITION:
141+
final IsPseudoClassCondition isPseudoCondition = (IsPseudoClassCondition) condition;
142+
final SelectorList isSelectorList = isPseudoCondition.getSelectors();
143+
for (final Selector selector : isSelectorList) {
136144
readSelectorSpecificity(selector);
137145
}
138146
return;

src/test/java/org/htmlunit/cssparser/parser/selector/SelectorSpecificityTest.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,4 +213,16 @@ public void notTest() throws Exception {
213213

214214
selectorSpecifity("a:not(#fakeId#fakeId#fakeID)", "0,3,0,1");
215215
}
216+
217+
/**
218+
* @throws Exception if the test fails
219+
*/
220+
@Test
221+
public void isTest() throws Exception {
222+
selectorSpecifity("div:is(.inner) p", "0,0,1,2");
223+
224+
selectorSpecifity("div:is(.inner, #fakeId) p", "0,1,1,2");
225+
226+
selectorSpecifity("a:is(#fakeId#fakeId#fakeID)", "0,3,0,1");
227+
}
216228
}

0 commit comments

Comments
 (0)