Issue #2045 - Part 3: Implement cascade origin tracking to CSS parser

The CSS parser already knows the cascade origin, but it is using a different enum for storing it.
This commit is contained in:
Francis Dominic Fajardo 2025-07-03 17:13:32 +08:00 committed by roytam1
commit b0f0972314

View file

@ -1525,6 +1525,9 @@ protected:
// enum type be signed.
css::SheetParsingMode mParsingMode : 3;
// Indicates the cascade origin of the sheet.
mozilla::SheetType mLevel;
// True if we are in parsing rules for the chrome.
bool mIsChrome : 1;
@ -1656,6 +1659,7 @@ CSSParserImpl::CSSParserImpl()
mHashlessColorQuirk(false),
mUnitlessLengthQuirk(false),
mParsingMode(css::eAuthorSheetFeatures),
mLevel(mozilla::SheetType::Doc),
mIsChrome(false),
mViewportUnitsEnabled(true),
mHTMLMediaMode(false),
@ -1799,6 +1803,22 @@ CSSParserImpl::ParseSheet(const nsAString& aInput,
}
mParsingMode = mSheet->ParsingMode();
switch (mParsingMode) {
case css::eAgentSheetFeatures:
mLevel = mozilla::SheetType::Agent;
break;
case css::eUserSheetFeatures:
mLevel = mozilla::SheetType::User;
break;
case css::eAuthorSheetFeatures:
mLevel = mozilla::SheetType::Doc;
break;
default:
MOZ_CRASH("impossible value for aType");
}
mIsChrome = dom::IsChromeURI(aSheetURI);
mReusableSheets = aReusableSheets;
@ -1824,6 +1844,7 @@ CSSParserImpl::ParseSheet(const nsAString& aInput,
ReleaseScanner();
mParsingMode = css::eAuthorSheetFeatures;
mLevel = mozilla::SheetType::Doc;
mIsChrome = false;
mReusableSheets = nullptr;