Issue #2137 - Part 4: Fix namespace regression

This commit is contained in:
FranklinDM 2023-03-10 19:09:22 +08:00 • committed by roytam1
commit ef36c56593

View file

@ -118,7 +118,8 @@ enum class SelectorParsingFlags {
eIsNegated = 1 << 0, eIsNegated = 1 << 0,
eIsForgiving = 1 << 1, eIsForgiving = 1 << 1,
eDisallowCombinators = 1 << 2, eDisallowCombinators = 1 << 2,
eDisallowPseudoElements = 1 << 3 eDisallowPseudoElements = 1 << 3,
eInheritNamespace = 1 << 4
}; };
MOZ_MAKE_ENUM_CLASS_BITWISE_OPERATORS(SelectorParsingFlags) MOZ_MAKE_ENUM_CLASS_BITWISE_OPERATORS(SelectorParsingFlags)
@ -5786,8 +5787,10 @@ CSSParserImpl::ParseTypeOrUniversalSelector(int32_t& aDataMask,
} }
} }
else { else {
if (!(aFlags & SelectorParsingFlags::eInheritNamespace)) {
SetDefaultNamespaceOnSelector(aSelector); SetDefaultNamespaceOnSelector(aSelector);
} }
}
if (aFlags & SelectorParsingFlags::eIsNegated) { if (aFlags & SelectorParsingFlags::eIsNegated) {
// restore last token read in case of a negated type selector // restore last token read in case of a negated type selector
@ -6622,6 +6625,8 @@ CSSParserImpl::ParsePseudoClassWithSelectorListArg(nsCSSSelector& aSelector,
aFlags |= SelectorParsingFlags::eIsForgiving; aFlags |= SelectorParsingFlags::eIsForgiving;
} else if (isSingleSelector || aType == CSSPseudoClassType::mozAny) { } else if (isSingleSelector || aType == CSSPseudoClassType::mozAny) {
aFlags |= SelectorParsingFlags::eDisallowCombinators; aFlags |= SelectorParsingFlags::eDisallowCombinators;
} else if (aType == CSSPseudoClassType::negation) {
aFlags |= SelectorParsingFlags::eInheritNamespace;
} }
aFlags |= SelectorParsingFlags::eDisallowPseudoElements; aFlags |= SelectorParsingFlags::eDisallowPseudoElements;