Bug 1512745 - Allow leading and trailing spaces for pairs as well r=longsonr

We also allow leading and trailing spaces for pair to be consistent with length,
number, etc.

Differential Revision: https://phabricator.services.mozilla.com/D25050

--HG--
extra : moz-landing-system : lando
This commit is contained in:
violet 2019-03-28 08:57:10 +00:00
parent 032362875a
commit 38c5f25215
4 changed files with 50 additions and 16 deletions

View File

@ -29,10 +29,6 @@ static nsresult ParseIntegerOptionalInteger(const nsAString& aValue,
int32_t aValues[2]) {
nsCharSeparatedTokenizerTemplate<nsContentUtils::IsHTMLWhitespace> tokenizer(
aValue, ',', nsCharSeparatedTokenizer::SEPARATOR_OPTIONAL);
if (tokenizer.whitespaceBeforeFirstToken()) {
return NS_ERROR_DOM_SYNTAX_ERR;
}
uint32_t i;
for (i = 0; i < 2 && tokenizer.hasMoreTokens(); ++i) {
if (!SVGContentUtils::ParseInteger(tokenizer.nextToken(), aValues[i])) {
@ -43,10 +39,9 @@ static nsresult ParseIntegerOptionalInteger(const nsAString& aValue,
aValues[1] = aValues[0];
}
if (i == 0 || // Too few values.
tokenizer.hasMoreTokens() || // Too many values.
tokenizer.whitespaceAfterCurrentToken() || // Trailing whitespace.
tokenizer.separatorAfterCurrentToken()) { // Trailing comma.
if (i == 0 || // Too few values.
tokenizer.hasMoreTokens() || // Too many values.
tokenizer.separatorAfterCurrentToken()) { // Trailing comma.
return NS_ERROR_DOM_SYNTAX_ERR;
}

View File

@ -25,10 +25,6 @@ static nsresult ParseNumberOptionalNumber(const nsAString& aValue,
float aValues[2]) {
nsCharSeparatedTokenizerTemplate<nsContentUtils::IsHTMLWhitespace> tokenizer(
aValue, ',', nsCharSeparatedTokenizer::SEPARATOR_OPTIONAL);
if (tokenizer.whitespaceBeforeFirstToken()) {
return NS_ERROR_DOM_SYNTAX_ERR;
}
uint32_t i;
for (i = 0; i < 2 && tokenizer.hasMoreTokens(); ++i) {
if (!SVGContentUtils::ParseNumber(tokenizer.nextToken(), aValues[i])) {
@ -39,10 +35,9 @@ static nsresult ParseNumberOptionalNumber(const nsAString& aValue,
aValues[1] = aValues[0];
}
if (i == 0 || // Too few values.
tokenizer.hasMoreTokens() || // Too many values.
tokenizer.whitespaceAfterCurrentToken() || // Trailing whitespace.
tokenizer.separatorAfterCurrentToken()) { // Trailing comma.
if (i == 0 || // Too few values.
tokenizer.hasMoreTokens() || // Too many values.
tokenizer.separatorAfterCurrentToken()) { // Trailing comma.
return NS_ERROR_DOM_SYNTAX_ERR;
}

View File

@ -56,6 +56,7 @@ skip-if = true # disabled-for-intermittent-failures--bug-701060
[test_non-scaling-stroke.html]
[test_object-delayed-intrinsic-size.html]
[test_onerror.xhtml]
[test_pairParsing.html]
[test_pathAnimInterpolation.xhtml]
skip-if = true # We need to polyfill the SVG DOM for path data
[test_pointAtLength.xhtml]

View File

@ -0,0 +1,43 @@
<!doctype html>
<html>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=1512745
-->
<head>
<meta charset="utf-8">
<title>Test pair parsing</title>
<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
</head>
<body>
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1512745">Mozilla Bug 1512745</a>
<svg width="230" height="120"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink">
<filter><feGaussianBlur id="x1" stdDeviation=" 5 " /></filter>
<filter><feGaussianBlur id="x2" stdDeviation=" 5 10 " /></filter>
<filter><feGaussianBlur id="x3" stdDeviation="5 10 " /></filter>
<filter><feGaussianBlur id="x4" stdDeviation=" 5,10 " /></filter>
</svg>
<pre id="test">
<script class="testbody" type="text/javascript">
function checkValue(id, x, y) {
if (y === undefined) {
y = x;
}
let e = document.getElementById(id);
is(e.stdDeviationX.baseVal, x, "Wrong stdDeviationX");
is(e.stdDeviationY.baseVal, y, "Wrong stdDeviationY");
}
checkValue("x1", 5);
checkValue("x2", 5, 10);
checkValue("x3", 5, 10);
checkValue("x4", 5, 10);
</script>
</pre>
</body>
</html>