Commit 2e9117b5 authored by Fergal Daly's avatar Fergal Daly Committed by Commit Bot

CSS: Handle ::part rules when building RuleSets.

Add a part_pseudo_rules vector to RuleSet to hold rules with ::part
selectors and update RuleSet::FindBestRuleSetAndAdd to populate this.


Bug: 805271
Change-Id: If18cabbd8c933f49a252e2f659246cb0e0471e3f
Reviewed-on: https://chromium-review.googlesource.com/972766
Commit-Queue: Fergal Daly <fergal@chromium.org>
Reviewed-by: default avatarRune Lillesveen <futhark@chromium.org>
Cr-Commit-Position: refs/heads/master@{#544969}
parent 52327b7c
......@@ -208,6 +208,11 @@ bool RuleSet::FindBestRuleSetAndAdd(const CSSSelector& component,
case CSSSelector::kPseudoHostContext:
shadow_host_rules_.push_back(rule_data);
return true;
case CSSSelector::kPseudoPart:
if (RuntimeEnabledFeatures::CSSPartPseudoElementEnabled()) {
part_pseudo_rules_.push_back(rule_data);
}
return true;
default:
break;
}
......@@ -369,6 +374,7 @@ void RuleSet::CompactRules() {
font_face_rules_.ShrinkToFit();
keyframes_rules_.ShrinkToFit();
deep_combinator_or_shadow_pseudo_rules_.ShrinkToFit();
part_pseudo_rules_.ShrinkToFit();
content_pseudo_element_rules_.ShrinkToFit();
slotted_pseudo_element_rules_.ShrinkToFit();
}
......@@ -402,6 +408,7 @@ void RuleSet::Trace(blink::Visitor* visitor) {
visitor->Trace(font_face_rules_);
visitor->Trace(keyframes_rules_);
visitor->Trace(deep_combinator_or_shadow_pseudo_rules_);
visitor->Trace(part_pseudo_rules_);
visitor->Trace(content_pseudo_element_rules_);
visitor->Trace(slotted_pseudo_element_rules_);
visitor->Trace(pending_rules_);
......
......@@ -218,6 +218,10 @@ class CORE_EXPORT RuleSet : public GarbageCollectedFinalized<RuleSet> {
DCHECK(!pending_rules_);
return &shadow_host_rules_;
}
const HeapVector<RuleData>* PartPseudoRules() const {
DCHECK(!pending_rules_);
return &part_pseudo_rules_;
}
const HeapVector<Member<StyleRulePage>>& PageRules() const {
DCHECK(!pending_rules_);
return page_rules_;
......@@ -318,6 +322,7 @@ class CORE_EXPORT RuleSet : public GarbageCollectedFinalized<RuleSet> {
HeapVector<RuleData> focus_pseudo_class_rules_;
HeapVector<RuleData> universal_rules_;
HeapVector<RuleData> shadow_host_rules_;
HeapVector<RuleData> part_pseudo_rules_;
RuleFeatureSet features_;
HeapVector<Member<StyleRulePage>> page_rules_;
HeapVector<Member<StyleRuleFontFace>> font_face_rules_;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment