mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-07 00:08:39 +09:00
Support range media query syntax
This commit is contained in:
parent
8f8a4e7936
commit
667a753448
4 changed files with 62 additions and 6 deletions
|
|
@ -3845,9 +3845,7 @@ CSSParserImpl::ParseMediaQueryExpression(nsMediaQuery* aQuery)
|
|||
break;
|
||||
}
|
||||
}
|
||||
if (!feature->mName ||
|
||||
(expr->mRange != nsMediaExpression::eEqual &&
|
||||
feature->mRangeType != nsMediaFeature::eMinMaxAllowed)) {
|
||||
if (!feature->mName) {
|
||||
REPORT_UNEXPECTED_TOKEN(PEMQExpectedFeatureName);
|
||||
SkipUntil(')');
|
||||
return false;
|
||||
|
|
@ -3865,13 +3863,52 @@ CSSParserImpl::ParseMediaQueryExpression(nsMediaQuery* aQuery)
|
|||
return true;
|
||||
}
|
||||
|
||||
if (!mToken.IsSymbol(':')) {
|
||||
bool usesRangeSyntax = false;
|
||||
if (mToken.IsSymbol('<') || mToken.IsSymbol('>') || mToken.IsSymbol('=')) {
|
||||
if (expr->mRange != nsMediaExpression::eEqual) {
|
||||
REPORT_UNEXPECTED_TOKEN(PEMQExpectedFeatureNameEnd);
|
||||
UngetToken();
|
||||
SkipUntil(')');
|
||||
return false;
|
||||
}
|
||||
|
||||
usesRangeSyntax = true;
|
||||
char16_t rangeSymbol = mToken.mSymbol;
|
||||
bool inclusive = rangeSymbol == '=';
|
||||
|
||||
if (rangeSymbol != '=') {
|
||||
if (!GetToken(true)) {
|
||||
REPORT_UNEXPECTED_EOF(PEMQExpressionEOF);
|
||||
return false;
|
||||
}
|
||||
if (mToken.IsSymbol('=')) {
|
||||
inclusive = true;
|
||||
} else {
|
||||
UngetToken();
|
||||
}
|
||||
}
|
||||
|
||||
if (rangeSymbol == '>') {
|
||||
expr->mRange = inclusive ? nsMediaExpression::eMin
|
||||
: nsMediaExpression::eMinExclusive;
|
||||
} else if (rangeSymbol == '<') {
|
||||
expr->mRange = inclusive ? nsMediaExpression::eMax
|
||||
: nsMediaExpression::eMaxExclusive;
|
||||
}
|
||||
} else if (!mToken.IsSymbol(':')) {
|
||||
REPORT_UNEXPECTED_TOKEN(PEMQExpectedFeatureNameEnd);
|
||||
UngetToken();
|
||||
SkipUntil(')');
|
||||
return false;
|
||||
}
|
||||
|
||||
if ((expr->mRange != nsMediaExpression::eEqual || usesRangeSyntax) &&
|
||||
feature->mRangeType != nsMediaFeature::eMinMaxAllowed) {
|
||||
REPORT_UNEXPECTED_TOKEN(PEMQExpectedFeatureName);
|
||||
SkipUntil(')');
|
||||
return false;
|
||||
}
|
||||
|
||||
bool rv = false;
|
||||
switch (feature->mValueType) {
|
||||
case nsMediaFeature::eLength:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue