зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1364260 - Don't require whitespace between keywords and parens in supports rule condition. r=dbaron
MozReview-Commit-ID: B7GsrDQ6NuO --HG-- extra : rebase_source : 1e768a6d9baeae290d35221520a28487f705f50a
This commit is contained in:
Родитель
267881f1f1
Коммит
6bd73cdf47
|
@ -4480,7 +4480,7 @@ CSSParserImpl::ParseSupportsCondition(bool& aConditionMet)
|
|||
}
|
||||
|
||||
// supports_condition_negation
|
||||
// : 'not' S+ supports_condition_in_parens
|
||||
// : 'not' supports_condition_in_parens
|
||||
// ;
|
||||
bool
|
||||
CSSParserImpl::ParseSupportsConditionNegation(bool& aConditionMet)
|
||||
|
@ -4496,11 +4496,6 @@ CSSParserImpl::ParseSupportsConditionNegation(bool& aConditionMet)
|
|||
return false;
|
||||
}
|
||||
|
||||
if (!RequireWhitespace()) {
|
||||
REPORT_UNEXPECTED(PESupportsWhitespaceRequired);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (ParseSupportsConditionInParens(aConditionMet)) {
|
||||
aConditionMet = !aConditionMet;
|
||||
return true;
|
||||
|
@ -4662,14 +4657,14 @@ CSSParserImpl::ParseSupportsConditionInParensInsideParens(bool& aConditionMet)
|
|||
}
|
||||
|
||||
// supports_condition_terms
|
||||
// : S+ 'and' supports_condition_terms_after_operator('and')
|
||||
// | S+ 'or' supports_condition_terms_after_operator('or')
|
||||
// : 'and' supports_condition_terms_after_operator('and')
|
||||
// | 'or' supports_condition_terms_after_operator('or')
|
||||
// |
|
||||
// ;
|
||||
bool
|
||||
CSSParserImpl::ParseSupportsConditionTerms(bool& aConditionMet)
|
||||
{
|
||||
if (!RequireWhitespace() || !GetToken(false)) {
|
||||
if (!GetToken(true)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -4691,18 +4686,13 @@ CSSParserImpl::ParseSupportsConditionTerms(bool& aConditionMet)
|
|||
}
|
||||
|
||||
// supports_condition_terms_after_operator(operator)
|
||||
// : S+ supports_condition_in_parens ( <operator> supports_condition_in_parens )*
|
||||
// : supports_condition_in_parens ( <operator> supports_condition_in_parens )*
|
||||
// ;
|
||||
bool
|
||||
CSSParserImpl::ParseSupportsConditionTermsAfterOperator(
|
||||
bool& aConditionMet,
|
||||
CSSParserImpl::SupportsConditionTermOperator aOperator)
|
||||
{
|
||||
if (!RequireWhitespace()) {
|
||||
REPORT_UNEXPECTED(PESupportsWhitespaceRequired);
|
||||
return false;
|
||||
}
|
||||
|
||||
const char* token = aOperator == eAnd ? "and" : "or";
|
||||
for (;;) {
|
||||
bool termConditionMet = false;
|
||||
|
|
|
@ -50,7 +50,7 @@ to mochitest command.
|
|||
* test_bug798843_pref.html [3]
|
||||
* Incorrect parsing
|
||||
* different parsing bug 1364260
|
||||
* test_supports_rules.html [6]
|
||||
* test_supports_rules.html [1]
|
||||
* test_condition_text.html [1]
|
||||
* Incorrect serialization
|
||||
* place-{content,items,self} shorthands bug 1363971
|
||||
|
|
|
@ -63,19 +63,19 @@ function runTest() {
|
|||
check_balanced_condition("not(color: green)", false);
|
||||
check_balanced_condition("not(colour: green)", false);
|
||||
check_balanced_condition("not/* */(color: green)", false);
|
||||
check_balanced_condition("not/* */(colour: green)", false);
|
||||
check_balanced_condition("not/* */(colour: green)", true);
|
||||
check_balanced_condition("not /* */ (color: green)", false);
|
||||
check_balanced_condition("not /* */ (colour: green)", true);
|
||||
check_balanced_condition("(color: green) and (color: blue)", true);
|
||||
check_balanced_condition("(color: green) /* */ /* */ and /* */ /* */ (color: blue)", true);
|
||||
check_balanced_condition("(color: green) and(color: blue)", false);
|
||||
check_balanced_condition("(color: green) and/* */(color: blue)", false);
|
||||
check_balanced_condition("(color: green)and (color: blue)", false);
|
||||
check_balanced_condition("(color: green) and/* */(color: blue)", true);
|
||||
check_balanced_condition("(color: green)and (color: blue)", true);
|
||||
check_balanced_condition("(color: green) or (color: blue)", true);
|
||||
check_balanced_condition("(color: green) /* */ /* */ or /* */ /* */ (color: blue)", true);
|
||||
check_balanced_condition("(color: green) or(color: blue)", false);
|
||||
check_balanced_condition("(color: green) or/* */(color: blue)", false);
|
||||
check_balanced_condition("(color: green)or (color: blue)", false);
|
||||
check_balanced_condition("(color: green) or/* */(color: blue)", true);
|
||||
check_balanced_condition("(color: green)or (color: blue)", true);
|
||||
|
||||
SimpleTest.finish();
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче