handlePseudoRules method
Implementation
void handlePseudoRules(Element parentElement, List<CSSStyleRule> rules) {
_didProcessPseudoRules = true;
if (rules.isEmpty) {
if (pseudoBeforeStyle != null) {
pseudoBeforeStyle = null;
parentElement.markBeforePseudoElementNeedsUpdate();
}
if (pseudoAfterStyle != null) {
pseudoAfterStyle = null;
parentElement.markAfterPseudoElementNeedsUpdate();
}
if (pseudoFirstLetterStyle != null) {
pseudoFirstLetterStyle = null;
parentElement.markFirstLetterPseudoNeedsUpdate();
}
if (pseudoFirstLineStyle != null) {
pseudoFirstLineStyle = null;
parentElement.markFirstLinePseudoNeedsUpdate();
}
return;
}
List<CSSStyleRule>? beforeRules;
List<CSSStyleRule>? afterRules;
List<CSSStyleRule>? firstLetterRules;
List<CSSStyleRule>? firstLineRules;
for (CSSStyleRule style in rules) {
final int pseudoElementMask = style.selectorGroup.pseudoElementMask;
if ((pseudoElementMask & kPseudoElementMaskBefore) != 0) {
(beforeRules ??= <CSSStyleRule>[]).add(style);
}
if ((pseudoElementMask & kPseudoElementMaskAfter) != 0) {
(afterRules ??= <CSSStyleRule>[]).add(style);
}
if ((pseudoElementMask & kPseudoElementMaskFirstLetter) != 0) {
(firstLetterRules ??= <CSSStyleRule>[]).add(style);
}
if ((pseudoElementMask & kPseudoElementMaskFirstLine) != 0) {
(firstLineRules ??= <CSSStyleRule>[]).add(style);
}
}
if (beforeRules != null) {
pseudoBeforeStyle = cascadeMatchedStyleRules(beforeRules,
cacheVersion: parentElement.ownerDocument.ruleSetVersion,
copyResult: true);
} else if (pseudoBeforeStyle != null) {
pseudoBeforeStyle = null;
}
if (afterRules != null) {
pseudoAfterStyle = cascadeMatchedStyleRules(afterRules,
cacheVersion: parentElement.ownerDocument.ruleSetVersion,
copyResult: true);
} else if (pseudoAfterStyle != null) {
pseudoAfterStyle = null;
}
if (firstLetterRules != null) {
pseudoFirstLetterStyle = cascadeMatchedStyleRules(firstLetterRules,
cacheVersion: parentElement.ownerDocument.ruleSetVersion,
copyResult: true);
} else if (pseudoFirstLetterStyle != null) {
pseudoFirstLetterStyle = null;
}
if (firstLineRules != null) {
pseudoFirstLineStyle = cascadeMatchedStyleRules(firstLineRules,
cacheVersion: parentElement.ownerDocument.ruleSetVersion,
copyResult: true);
} else if (pseudoFirstLineStyle != null) {
pseudoFirstLineStyle = null;
}
}