mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-10-21 22:57:31 +09:00
Issue #2078 - Follow-up: Move isForgiving check to ParsePseudoClassWithSelectorListArg
This commit is contained in:
parent
03a3385702
commit
53f5905381
1 changed files with 9 additions and 11 deletions
|
|
@ -780,8 +780,7 @@ protected:
|
||||||
CSSPseudoClassType aType);
|
CSSPseudoClassType aType);
|
||||||
|
|
||||||
nsSelectorParsingStatus ParsePseudoClassWithSelectorListArg(nsCSSSelector& aSelector,
|
nsSelectorParsingStatus ParsePseudoClassWithSelectorListArg(nsCSSSelector& aSelector,
|
||||||
CSSPseudoClassType aType,
|
CSSPseudoClassType aType);
|
||||||
bool aIsForgiving);
|
|
||||||
|
|
||||||
nsSelectorParsingStatus ParseNegatedSimpleSelector(int32_t& aDataMask,
|
nsSelectorParsingStatus ParseNegatedSimpleSelector(int32_t& aDataMask,
|
||||||
nsCSSSelector& aSelector);
|
nsCSSSelector& aSelector);
|
||||||
|
|
@ -6166,11 +6165,8 @@ CSSParserImpl::ParsePseudoSelector(int32_t& aDataMask,
|
||||||
else {
|
else {
|
||||||
MOZ_ASSERT(nsCSSPseudoClasses::HasSelectorListArg(pseudoClassType),
|
MOZ_ASSERT(nsCSSPseudoClasses::HasSelectorListArg(pseudoClassType),
|
||||||
"unexpected pseudo with function token");
|
"unexpected pseudo with function token");
|
||||||
bool isForgiving =
|
|
||||||
nsCSSPseudoClasses::HasForgivingSelectorListArg(pseudoClassType);
|
|
||||||
parsingStatus = ParsePseudoClassWithSelectorListArg(aSelector,
|
parsingStatus = ParsePseudoClassWithSelectorListArg(aSelector,
|
||||||
pseudoClassType,
|
pseudoClassType);
|
||||||
isForgiving);
|
|
||||||
}
|
}
|
||||||
if (eSelectorParsingStatus_Continue != parsingStatus) {
|
if (eSelectorParsingStatus_Continue != parsingStatus) {
|
||||||
if (eSelectorParsingStatus_Error == parsingStatus) {
|
if (eSelectorParsingStatus_Error == parsingStatus) {
|
||||||
|
|
@ -6544,11 +6540,13 @@ CSSParserImpl::ParsePseudoClassWithNthPairArg(nsCSSSelector& aSelector,
|
||||||
//
|
//
|
||||||
CSSParserImpl::nsSelectorParsingStatus
|
CSSParserImpl::nsSelectorParsingStatus
|
||||||
CSSParserImpl::ParsePseudoClassWithSelectorListArg(nsCSSSelector& aSelector,
|
CSSParserImpl::ParsePseudoClassWithSelectorListArg(nsCSSSelector& aSelector,
|
||||||
CSSPseudoClassType aType,
|
CSSPseudoClassType aType)
|
||||||
bool aIsForgiving)
|
|
||||||
{
|
{
|
||||||
|
bool isForgiving =
|
||||||
|
nsCSSPseudoClasses::HasForgivingSelectorListArg(aType);
|
||||||
|
|
||||||
nsAutoPtr<nsCSSSelectorList> slist;
|
nsAutoPtr<nsCSSSelectorList> slist;
|
||||||
if (! ParseSelectorList(*getter_Transfers(slist), char16_t(')'), aIsForgiving)) {
|
if (! ParseSelectorList(*getter_Transfers(slist), char16_t(')'), isForgiving)) {
|
||||||
return eSelectorParsingStatus_Error; // our caller calls SkipUntil(')')
|
return eSelectorParsingStatus_Error; // our caller calls SkipUntil(')')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -6560,13 +6558,13 @@ CSSParserImpl::ParsePseudoClassWithSelectorListArg(nsCSSSelector& aSelector,
|
||||||
for (nsCSSSelectorList *l = slist; l; l = l->mNext) {
|
for (nsCSSSelectorList *l = slist; l; l = l->mNext) {
|
||||||
nsCSSSelector *s = l->mSelectors;
|
nsCSSSelector *s = l->mSelectors;
|
||||||
if (s == nullptr) {
|
if (s == nullptr) {
|
||||||
MOZ_ASSERT(aIsForgiving,
|
MOZ_ASSERT(isForgiving,
|
||||||
"unexpected empty selector in unforgiving selector list");
|
"unexpected empty selector in unforgiving selector list");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
// Check that none of the selectors in the list have combinators or
|
// Check that none of the selectors in the list have combinators or
|
||||||
// pseudo-elements.
|
// pseudo-elements.
|
||||||
if ((!aIsForgiving && s->mNext) || s->IsPseudoElement()) {
|
if ((!isForgiving && s->mNext) || s->IsPseudoElement()) {
|
||||||
return eSelectorParsingStatus_Error; // our caller calls SkipUntil(')')
|
return eSelectorParsingStatus_Error; // our caller calls SkipUntil(')')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue