Issue #2828 - Part 6: Assert rules were added to the rule cascade data

This commit is contained in:
Francis Dominic Fajardo 2025-07-19 22:23:19 +08:00 • committed by roytam1
commit d3b305b819
2 changed files with 7 additions and 9 deletions

View file

@ -1570,7 +1570,7 @@ CascadeEnumData::CascadeEnumData(nsPresContext* aPresContext,
, mName(aName) , mName(aName)
, mIsAnonymous(mName.IsEmpty()) , mIsAnonymous(mName.IsEmpty())
, mIsWeak(aIsWeak) , mIsWeak(aIsWeak)
, mWasFlattened(false) , mRulesAdded(false)
#ifdef DEBUG #ifdef DEBUG
, mParent(aParent) , mParent(aParent)
, mIsRoot(false) , mIsRoot(false)
@ -1594,7 +1594,7 @@ CascadeEnumData::CascadeEnumData(nsPresContext* aPresContext,
: mPresContext(aPresContext) : mPresContext(aPresContext)
, mIsAnonymous(false) , mIsAnonymous(false)
, mIsWeak(false) , mIsWeak(false)
, mWasFlattened(false) , mRulesAdded(false)
#ifdef DEBUG #ifdef DEBUG
, mParent(nullptr) , mParent(nullptr)
, mIsRoot(true) , mIsRoot(true)
@ -1683,6 +1683,8 @@ CompareWeightData(const void* aArg1, const void* aArg2, void* closure)
void void
CascadeEnumData::AddRules() CascadeEnumData::AddRules()
{ {
MOZ_ASSERT(!mRulesAdded, "Rule cascade data already filled");
for (css::StyleRule* styleRule : mStyleRules) { for (css::StyleRule* styleRule : mStyleRules) {
for (nsCSSSelectorList* sel = styleRule->Selector(); sel; for (nsCSSSelectorList* sel = styleRule->Selector(); sel;
sel = sel->mNext) { sel = sel->mNext) {
@ -1750,15 +1752,13 @@ CascadeEnumData::AddRules()
nsCSSCounterStyleRule* rule = mData->mCounterStyleRules[i]; nsCSSCounterStyleRule* rule = mData->mCounterStyleRules[i];
mData->mCounterStyleRuleTable.Put(rule->GetName(), rule); mData->mCounterStyleRuleTable.Put(rule->GetName(), rule);
} }
mRulesAdded = true;
} }
void void
CascadeEnumData::EnumerateAllLayers(nsLayerEnumFunc aFunc, void* aData) CascadeEnumData::EnumerateAllLayers(nsLayerEnumFunc aFunc, void* aData)
{ {
if (mWasFlattened) {
return;
}
if (mPreLayers.Length() > 0) { if (mPreLayers.Length() > 0) {
for (CascadeEnumData* pre : mPreLayers) { for (CascadeEnumData* pre : mPreLayers) {
pre->EnumerateAllLayers(aFunc, aData); pre->EnumerateAllLayers(aFunc, aData);
@ -1772,8 +1772,6 @@ CascadeEnumData::EnumerateAllLayers(nsLayerEnumFunc aFunc, void* aData)
post->EnumerateAllLayers(aFunc, aData); post->EnumerateAllLayers(aFunc, aData);
} }
} }
mWasFlattened = true;
} }
void void

View file

@ -369,7 +369,7 @@ struct CascadeEnumData
nsString mName; nsString mName;
bool mIsAnonymous; bool mIsAnonymous;
bool mIsWeak; bool mIsWeak;
bool mWasFlattened; bool mRulesAdded;
RuleCascadeData* mData; RuleCascadeData* mData;