Bug 1339629 Part 11: Call EnsureUniqueInner from ServoCSSRuleList when a StyleSheet is set.
MozReview-Commit-ID: cvdITwpREk
--- a/layout/style/ServoCSSRuleList.cpp
+++ b/layout/style/ServoCSSRuleList.cpp
@@ -70,18 +70,18 @@ ServoCSSRuleList::SetParentRule(css::Gro
rule->SetParentRule(aParentRule);
});
}
void
ServoCSSRuleList::SetStyleSheet(StyleSheet* aStyleSheet)
{
mStyleSheet = aStyleSheet ? aStyleSheet->AsServo() : nullptr;
- EnumerateInstantiatedRules([aStyleSheet](css::Rule* rule) {
- rule->SetStyleSheet(aStyleSheet);
+ EnumerateInstantiatedRules([this](css::Rule* rule) {
+ rule->SetStyleSheet(mStyleSheet);
});
}
css::Rule*
ServoCSSRuleList::GetRule(uint32_t aIndex)
{
uintptr_t rule = mRules[aIndex];
if (rule <= kMaxRuleType) {
--- a/layout/style/ServoStyleSheet.cpp
+++ b/layout/style/ServoStyleSheet.cpp
@@ -221,18 +221,21 @@ ServoStyleSheet::ClearRuleCascadesIntern
setHandle->AsServo()->UpdateStylistIfNeeded();
}
}
CSSRuleList*
ServoStyleSheet::GetCssRulesInternal(ErrorResult& aRv)
{
if (!mRuleList) {
+ EnsureUniqueInner();
+
RefPtr<ServoCssRules> rawRules =
Servo_StyleSheet_GetRules(Inner()->mSheet).Consume();
+ MOZ_ASSERT(rawRules);
mRuleList = new ServoCSSRuleList(rawRules.forget());
mRuleList->SetStyleSheet(this);
}
return mRuleList;
}
uint32_t
ServoStyleSheet::InsertRuleInternal(const nsAString& aRule,