Issue #1592 - Part 1c: Pass SelectorParsingFlags as a reference

This commit is contained in:
FranklinDM 2023-03-19 16:57:55 +08:00 committed by roytam1
commit ab63b7b946

View file

@ -776,7 +776,7 @@ protected:
// aFlags is not set.
nsSelectorParsingStatus ParsePseudoSelector(int32_t& aDataMask,
nsCSSSelector& aSelector,
SelectorParsingFlags aFlags,
SelectorParsingFlags& aFlags,
nsIAtom** aPseudoElement,
nsAtomList** aPseudoElementArgs,
CSSPseudoElementType* aPseudoElementType);
@ -784,9 +784,9 @@ protected:
nsSelectorParsingStatus ParseAttributeSelector(int32_t& aDataMask,
nsCSSSelector& aSelector);
nsSelectorParsingStatus ParseTypeOrUniversalSelector(int32_t& aDataMask,
nsCSSSelector& aSelector,
SelectorParsingFlags aFlags);
nsSelectorParsingStatus ParseTypeOrUniversalSelector(int32_t& aDataMask,
nsCSSSelector& aSelector,
SelectorParsingFlags& aFlags);
nsSelectorParsingStatus ParsePseudoClassWithIdentArg(nsCSSSelector& aSelector,
CSSPseudoClassType aType);
@ -796,22 +796,22 @@ protected:
nsSelectorParsingStatus ParsePseudoClassWithSelectorListArg(nsCSSSelector& aSelector,
CSSPseudoClassType aType,
SelectorParsingFlags aFlags);
SelectorParsingFlags& aFlags);
nsSelectorParsingStatus ParseNegatedSimpleSelector(int32_t& aDataMask,
nsCSSSelector& aSelector,
SelectorParsingFlags aFlags);
nsSelectorParsingStatus ParseNegatedSimpleSelector(int32_t& aDataMask,
nsCSSSelector& aSelector,
SelectorParsingFlags& aFlags);
// If aStopChar is non-zero, the selector list is done when we hit
// aStopChar. Otherwise, it's done when we hit EOF.
bool ParseSelectorList(nsCSSSelectorList*& aListHead,
char16_t aStopChar,
SelectorParsingFlags aFlags = SelectorParsingFlags::eNone);
SelectorParsingFlags& aFlags);
bool ParseSelectorGroup(nsCSSSelectorList*& aListHead,
SelectorParsingFlags aFlags);
SelectorParsingFlags& aFlags);
bool ParseSelector(nsCSSSelectorList* aList,
char16_t aPrevCombinator,
SelectorParsingFlags aFlags);
SelectorParsingFlags& aFlags);
enum {
eParseDeclaration_InBraces = 1 << 0,
@ -2343,7 +2343,8 @@ CSSParserImpl::ParseSelectorString(const nsSubstring& aSelectorString,
css::ErrorReporter reporter(scanner, mSheet, mChildLoader, aURI);
InitScanner(scanner, reporter, aURI, aURI, nullptr);
bool success = ParseSelectorList(*aSelectorList, char16_t(0));
SelectorParsingFlags flags = SelectorParsingFlags::eNone;
bool success = ParseSelectorList(*aSelectorList, char16_t(0), flags);
// We deliberately do not call OUTPUT_ERROR here, because all our
// callers map a failure return to a JS exception, and if that JS
@ -5457,9 +5458,10 @@ CSSParserImpl::ParseRuleSet(RuleAppendFunc aAppendFunc, void* aData,
{
// First get the list of selectors for the rule
nsCSSSelectorList* slist = nullptr;
SelectorParsingFlags flags = SelectorParsingFlags::eNone;
uint32_t linenum, colnum;
if (!GetNextTokenLocation(true, &linenum, &colnum) ||
!ParseSelectorList(slist, char16_t('{'))) {
!ParseSelectorList(slist, char16_t('{'), flags)) {
REPORT_UNEXPECTED(PEBadSelectorRSIgnored);
OUTPUT_ERROR();
SkipRuleSet(aInsideBraces);
@ -5496,7 +5498,7 @@ CSSParserImpl::ParseRuleSet(RuleAppendFunc aAppendFunc, void* aData,
bool
CSSParserImpl::ParseSelectorList(nsCSSSelectorList*& aListHead,
char16_t aStopChar,
SelectorParsingFlags aFlags)
SelectorParsingFlags& aFlags)
{
nsCSSSelectorList* list = nullptr;
if (! ParseSelectorGroup(list, aFlags)) {
@ -5580,7 +5582,7 @@ static bool IsUniversalSelector(const nsCSSSelector& aSelector)
bool
CSSParserImpl::ParseSelectorGroup(nsCSSSelectorList*& aList,
SelectorParsingFlags aFlags)
SelectorParsingFlags& aFlags)
{
char16_t combinator = 0;
nsAutoPtr<nsCSSSelectorList> list(new nsCSSSelectorList());
@ -5681,9 +5683,9 @@ CSSParserImpl::ParseClassSelector(int32_t& aDataMask,
// namespace|type or namespace|* or *|* or *
//
CSSParserImpl::nsSelectorParsingStatus
CSSParserImpl::ParseTypeOrUniversalSelector(int32_t& aDataMask,
nsCSSSelector& aSelector,
SelectorParsingFlags aFlags)
CSSParserImpl::ParseTypeOrUniversalSelector(int32_t& aDataMask,
nsCSSSelector& aSelector,
SelectorParsingFlags& aFlags)
{
nsAutoString buffer;
if (mToken.IsSymbol('*')) { // universal element selector, or universal namespace
@ -6048,7 +6050,7 @@ CSSParserImpl::ParseAttributeSelector(int32_t& aDataMask,
CSSParserImpl::nsSelectorParsingStatus
CSSParserImpl::ParsePseudoSelector(int32_t& aDataMask,
nsCSSSelector& aSelector,
SelectorParsingFlags aFlags,
SelectorParsingFlags& aFlags,
nsIAtom** aPseudoElement,
nsAtomList** aPseudoElementArgs,
CSSPseudoElementType* aPseudoElementType)
@ -6336,9 +6338,9 @@ CSSParserImpl::ParsePseudoSelector(int32_t& aDataMask,
// Parse the argument of a negation pseudo-class :not()
//
CSSParserImpl::nsSelectorParsingStatus
CSSParserImpl::ParseNegatedSimpleSelector(int32_t& aDataMask,
nsCSSSelector& aSelector,
SelectorParsingFlags aFlags)
CSSParserImpl::ParseNegatedSimpleSelector(int32_t& aDataMask,
nsCSSSelector& aSelector,
SelectorParsingFlags& aFlags)
{
aFlags |= SelectorParsingFlags::eIsNegated;
@ -6616,7 +6618,7 @@ CSSParserImpl::ParsePseudoClassWithNthPairArg(nsCSSSelector& aSelector,
CSSParserImpl::nsSelectorParsingStatus
CSSParserImpl::ParsePseudoClassWithSelectorListArg(nsCSSSelector& aSelector,
CSSPseudoClassType aType,
SelectorParsingFlags aFlags)
SelectorParsingFlags& aFlags)
{
bool isSingleSelector =
nsCSSPseudoClasses::HasSingleSelectorArg(aType);
@ -6684,7 +6686,7 @@ CSSParserImpl::ParsePseudoClassWithSelectorListArg(nsCSSSelector& aSelector,
bool
CSSParserImpl::ParseSelector(nsCSSSelectorList* aList,
char16_t aPrevCombinator,
SelectorParsingFlags aFlags)
SelectorParsingFlags& aFlags)
{
if (! GetToken(true)) {
REPORT_UNEXPECTED_EOF(PESelectorEOF);