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, ...@@ -208,6 +208,11 @@ bool RuleSet::FindBestRuleSetAndAdd(const CSSSelector& component,
case CSSSelector::kPseudoHostContext: case CSSSelector::kPseudoHostContext:
shadow_host_rules_.push_back(rule_data); shadow_host_rules_.push_back(rule_data);
return true; return true;
case CSSSelector::kPseudoPart:
if (RuntimeEnabledFeatures::CSSPartPseudoElementEnabled()) {
part_pseudo_rules_.push_back(rule_data);
}
return true;
default: default:
break; break;
} }
...@@ -369,6 +374,7 @@ void RuleSet::CompactRules() { ...@@ -369,6 +374,7 @@ void RuleSet::CompactRules() {
font_face_rules_.ShrinkToFit(); font_face_rules_.ShrinkToFit();
keyframes_rules_.ShrinkToFit(); keyframes_rules_.ShrinkToFit();
deep_combinator_or_shadow_pseudo_rules_.ShrinkToFit(); deep_combinator_or_shadow_pseudo_rules_.ShrinkToFit();
part_pseudo_rules_.ShrinkToFit();
content_pseudo_element_rules_.ShrinkToFit(); content_pseudo_element_rules_.ShrinkToFit();
slotted_pseudo_element_rules_.ShrinkToFit(); slotted_pseudo_element_rules_.ShrinkToFit();
} }
...@@ -402,6 +408,7 @@ void RuleSet::Trace(blink::Visitor* visitor) { ...@@ -402,6 +408,7 @@ void RuleSet::Trace(blink::Visitor* visitor) {
visitor->Trace(font_face_rules_); visitor->Trace(font_face_rules_);
visitor->Trace(keyframes_rules_); visitor->Trace(keyframes_rules_);
visitor->Trace(deep_combinator_or_shadow_pseudo_rules_); visitor->Trace(deep_combinator_or_shadow_pseudo_rules_);
visitor->Trace(part_pseudo_rules_);
visitor->Trace(content_pseudo_element_rules_); visitor->Trace(content_pseudo_element_rules_);
visitor->Trace(slotted_pseudo_element_rules_); visitor->Trace(slotted_pseudo_element_rules_);
visitor->Trace(pending_rules_); visitor->Trace(pending_rules_);
......
...@@ -218,6 +218,10 @@ class CORE_EXPORT RuleSet : public GarbageCollectedFinalized<RuleSet> { ...@@ -218,6 +218,10 @@ class CORE_EXPORT RuleSet : public GarbageCollectedFinalized<RuleSet> {
DCHECK(!pending_rules_); DCHECK(!pending_rules_);
return &shadow_host_rules_; return &shadow_host_rules_;
} }
const HeapVector<RuleData>* PartPseudoRules() const {
DCHECK(!pending_rules_);
return &part_pseudo_rules_;
}
const HeapVector<Member<StyleRulePage>>& PageRules() const { const HeapVector<Member<StyleRulePage>>& PageRules() const {
DCHECK(!pending_rules_); DCHECK(!pending_rules_);
return page_rules_; return page_rules_;
...@@ -318,6 +322,7 @@ class CORE_EXPORT RuleSet : public GarbageCollectedFinalized<RuleSet> { ...@@ -318,6 +322,7 @@ class CORE_EXPORT RuleSet : public GarbageCollectedFinalized<RuleSet> {
HeapVector<RuleData> focus_pseudo_class_rules_; HeapVector<RuleData> focus_pseudo_class_rules_;
HeapVector<RuleData> universal_rules_; HeapVector<RuleData> universal_rules_;
HeapVector<RuleData> shadow_host_rules_; HeapVector<RuleData> shadow_host_rules_;
HeapVector<RuleData> part_pseudo_rules_;
RuleFeatureSet features_; RuleFeatureSet features_;
HeapVector<Member<StyleRulePage>> page_rules_; HeapVector<Member<StyleRulePage>> page_rules_;
HeapVector<Member<StyleRuleFontFace>> font_face_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