зеркало из 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
|
// supports_condition_negation
|
||||||
// : 'not' S+ supports_condition_in_parens
|
// : 'not' supports_condition_in_parens
|
||||||
// ;
|
// ;
|
||||||
bool
|
bool
|
||||||
CSSParserImpl::ParseSupportsConditionNegation(bool& aConditionMet)
|
CSSParserImpl::ParseSupportsConditionNegation(bool& aConditionMet)
|
||||||
|
@ -4496,11 +4496,6 @@ CSSParserImpl::ParseSupportsConditionNegation(bool& aConditionMet)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!RequireWhitespace()) {
|
|
||||||
REPORT_UNEXPECTED(PESupportsWhitespaceRequired);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ParseSupportsConditionInParens(aConditionMet)) {
|
if (ParseSupportsConditionInParens(aConditionMet)) {
|
||||||
aConditionMet = !aConditionMet;
|
aConditionMet = !aConditionMet;
|
||||||
return true;
|
return true;
|
||||||
|
@ -4662,14 +4657,14 @@ CSSParserImpl::ParseSupportsConditionInParensInsideParens(bool& aConditionMet)
|
||||||
}
|
}
|
||||||
|
|
||||||
// supports_condition_terms
|
// supports_condition_terms
|
||||||
// : S+ 'and' supports_condition_terms_after_operator('and')
|
// : 'and' supports_condition_terms_after_operator('and')
|
||||||
// | S+ 'or' supports_condition_terms_after_operator('or')
|
// | 'or' supports_condition_terms_after_operator('or')
|
||||||
// |
|
// |
|
||||||
// ;
|
// ;
|
||||||
bool
|
bool
|
||||||
CSSParserImpl::ParseSupportsConditionTerms(bool& aConditionMet)
|
CSSParserImpl::ParseSupportsConditionTerms(bool& aConditionMet)
|
||||||
{
|
{
|
||||||
if (!RequireWhitespace() || !GetToken(false)) {
|
if (!GetToken(true)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4691,18 +4686,13 @@ CSSParserImpl::ParseSupportsConditionTerms(bool& aConditionMet)
|
||||||
}
|
}
|
||||||
|
|
||||||
// supports_condition_terms_after_operator(operator)
|
// 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
|
bool
|
||||||
CSSParserImpl::ParseSupportsConditionTermsAfterOperator(
|
CSSParserImpl::ParseSupportsConditionTermsAfterOperator(
|
||||||
bool& aConditionMet,
|
bool& aConditionMet,
|
||||||
CSSParserImpl::SupportsConditionTermOperator aOperator)
|
CSSParserImpl::SupportsConditionTermOperator aOperator)
|
||||||
{
|
{
|
||||||
if (!RequireWhitespace()) {
|
|
||||||
REPORT_UNEXPECTED(PESupportsWhitespaceRequired);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
const char* token = aOperator == eAnd ? "and" : "or";
|
const char* token = aOperator == eAnd ? "and" : "or";
|
||||||
for (;;) {
|
for (;;) {
|
||||||
bool termConditionMet = false;
|
bool termConditionMet = false;
|
||||||
|
|
|
@ -50,7 +50,7 @@ to mochitest command.
|
||||||
* test_bug798843_pref.html [3]
|
* test_bug798843_pref.html [3]
|
||||||
* Incorrect parsing
|
* Incorrect parsing
|
||||||
* different parsing bug 1364260
|
* different parsing bug 1364260
|
||||||
* test_supports_rules.html [6]
|
* test_supports_rules.html [1]
|
||||||
* test_condition_text.html [1]
|
* test_condition_text.html [1]
|
||||||
* Incorrect serialization
|
* Incorrect serialization
|
||||||
* place-{content,items,self} shorthands bug 1363971
|
* place-{content,items,self} shorthands bug 1363971
|
||||||
|
|
|
@ -63,19 +63,19 @@ function runTest() {
|
||||||
check_balanced_condition("not(color: green)", false);
|
check_balanced_condition("not(color: green)", false);
|
||||||
check_balanced_condition("not(colour: green)", false);
|
check_balanced_condition("not(colour: green)", false);
|
||||||
check_balanced_condition("not/* */(color: 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 /* */ (color: green)", false);
|
||||||
check_balanced_condition("not /* */ (colour: green)", true);
|
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)", 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)", false);
|
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)", 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)", false);
|
check_balanced_condition("(color: green)or (color: blue)", true);
|
||||||
|
|
||||||
SimpleTest.finish();
|
SimpleTest.finish();
|
||||||
}
|
}
|
||||||
|
|
Загрузка…
Ссылка в новой задаче