[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-10851-g50815da
simon.fraser at apple.com
simon.fraser at apple.com
Wed Dec 22 18:41:58 UTC 2010
The following commit has been merged in the debian/experimental branch:
commit 517dd05845743d918a50b1f5f4e20ed68af49892
Author: simon.fraser at apple.com <simon.fraser at apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Wed Dec 15 23:49:57 2010 +0000
2010-12-15 Simon Fraser <simon.fraser at apple.com>
Reviewed by Chris Marrin.
Percentage Z values in 3d transform functions and transform-origin should cause the property to be invalid
https://bugs.webkit.org/show_bug.cgi?id=51070
Treat as inavlid -webkit-transform values that include a percentage value in translateZ()
or in the third parameter to translate3d().
Test: transforms/3d/general/3dtransform-values.html
* css/CSSParser.cpp:
(WebCore::CSSParser::parseTransform):
(WebCore::CSSParser::parseTransformOrigin): Whitespace change.
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@74156 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
index df6efee..4939a81 100644
--- a/LayoutTests/ChangeLog
+++ b/LayoutTests/ChangeLog
@@ -2,6 +2,21 @@
Reviewed by Chris Marrin.
+ Percentage Z values in 3d transform functions and transform-origin should cause the property to be invalid
+ https://bugs.webkit.org/show_bug.cgi?id=51070
+
+ Testcase for various 3d transform values.
+
+ * transforms/2d/resources/transform-test-utils.js:
+ (compareMatrices): Use early return, enhance to deal with matrix3d(),
+ and avoid evaluating the regular expressions twice.
+ * transforms/3d/general/3dtransform-values-expected.txt: Added.
+ * transforms/3d/general/3dtransform-values.html: Added.
+
+2010-12-15 Simon Fraser <simon.fraser at apple.com>
+
+ Reviewed by Chris Marrin.
+
Reflection does not render properly when -webkit-transform is toggled, untoggled, and retoggled
https://bugs.webkit.org/show_bug.cgi?id=50967
diff --git a/LayoutTests/transforms/2d/resources/transform-test-utils.js b/LayoutTests/transforms/2d/resources/transform-test-utils.js
index 6a1f1b7..be24b36 100644
--- a/LayoutTests/transforms/2d/resources/transform-test-utils.js
+++ b/LayoutTests/transforms/2d/resources/transform-test-utils.js
@@ -11,26 +11,27 @@ function compareMatrices(a, b)
{
if (a == "none" && b == "none")
return true;
- else {
- var matrixRegex = /matrix\((.+)\)/;
- if (!matrixRegex.exec(a) || !matrixRegex.exec(b))
- return false;
-
- var aValues = matrixRegex.exec(a)[1];
- var bValues = matrixRegex.exec(b)[1];
-
- var aComps = aValues.split(',');
- var bComps = bValues.split(',');
+ var matrixRegex = /matrix(?:3d)?\((.+)\)/;
- if (aComps.length != bComps.length)
- return false;
+ var resultA = matrixRegex.exec(a);
+ var resultB = matrixRegex.exec(b);
+ if (!resultA || !resultB)
+ return false;
- for (var i = 0; i < aComps.length; ++i)
- {
- if (!floatingPointEqual(aComps[i], bComps[i]))
- return false;
- }
+ var aValues = resultA[1];
+ var bValues = resultB[1];
+
+ var aComps = aValues.split(',');
+ var bComps = bValues.split(',');
+
+ if (aComps.length != bComps.length)
+ return false;
+
+ for (var i = 0; i < aComps.length; ++i)
+ {
+ if (!floatingPointEqual(aComps[i], bComps[i]))
+ return false;
}
return true;
diff --git a/LayoutTests/transforms/3d/general/3dtransform-values-expected.txt b/LayoutTests/transforms/3d/general/3dtransform-values-expected.txt
new file mode 100644
index 0000000..353d3f8
--- /dev/null
+++ b/LayoutTests/transforms/3d/general/3dtransform-values-expected.txt
@@ -0,0 +1,12 @@
+transform "translate3d(0, 0, 10px)" expected "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 10, 1)" : PASS
+transform "translateZ(10px)" expected "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 10, 1)" : PASS
+transform "rotate3d(0, 1, 0, 180deg)" expected "matrix3d(-1, 0, 0, 0, 0, 1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1)" : PASS
+transform "translate3d(0, 0, 10px)" expected "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 10, 1)" : PASS
+transform "translate3d(0, 0, 10%)" expected "none" : PASS
+transform "translate3d(0, 0, 10)" expected "none" : PASS
+transform "translateZ(10%)" expected "none" : PASS
+transform "translateZ(10)" expected "none" : PASS
+transform "rotate3d(0, 1, 0, 180)" expected "none" : PASS
+transform "rotate3d(0, 1, 0, 180px)" expected "none" : PASS
+transform "rotate3d(0, 1, 0, 180px)" expected "none" : PASS
+
diff --git a/LayoutTests/transforms/3d/general/3dtransform-values.html b/LayoutTests/transforms/3d/general/3dtransform-values.html
new file mode 100644
index 0000000..f6a1ea9
--- /dev/null
+++ b/LayoutTests/transforms/3d/general/3dtransform-values.html
@@ -0,0 +1,60 @@
+<!DOCTYPE html>
+
+<html>
+<head>
+ <style type="text/css" media="screen">
+ .container {
+ height: 100px;
+ width: 100px;
+ margin: 30px;
+ outline: 1px solid black;
+ }
+ .box {
+ height: 100%;
+ width: 100%;
+ background-color: green;
+ }
+ #results {
+ margin-top: 100px;
+ }
+ </style>
+ <script src="../../2d/resources/transform-test-utils.js" type="text/javascript" charset="utf-8"></script>
+ <script type="text/javascript">
+ if (window.layoutTestController) {
+ layoutTestController.dumpAsText();
+ layoutTestController.waitUntilDone();
+ }
+
+ var gTests = [
+ { 'transform' : 'translate3d(0, 0, 10px)', 'result' : 'matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 10, 1)' },
+ { 'transform' : 'translateZ(10px)', 'result' : 'matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 10, 1)' },
+ { 'transform' : 'rotate3d(0, 1, 0, 180deg)', 'result' : 'matrix3d(-1, 0, 0, 0, 0, 1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1)' },
+ { 'transform' : 'translate3d(0, 0, 10px)', 'result' : 'matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 10, 1)' },
+ { 'transform' : 'translate3d(0, 0, 10%)', 'result' : 'none' }, // percentage values not allowed in the z param
+ { 'transform' : 'translate3d(0, 0, 10)', 'result' : 'none' }, // must have units for the z param
+ { 'transform' : 'translateZ(10%)', 'result' : 'none' }, // percentage values not allowed in the z param
+ { 'transform' : 'translateZ(10)', 'result' : 'none' }, // must have units
+ { 'transform' : 'rotate3d(0, 1, 0, 180)', 'result' : 'none' }, // last value must be an angle
+ { 'transform' : 'rotate3d(0, 1, 0, 180px)', 'result' : 'none' }, // last value must be an angle
+ { 'transform' : 'rotate3d(0, 1, 0, 180px)', 'result' : 'none' }, // last value must be an angle
+ ];
+
+ function runTests()
+ {
+ testTransforms();
+
+ if (window.layoutTestController)
+ layoutTestController.notifyDone();
+ }
+ </script>
+</head>
+<body onload="runTests()">
+
+ <div class="container">
+ <div id="test-box" class="box"></div>
+ </div>
+
+ <div id="results">
+ </div>
+</body>
+</html>
diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index faf19a3..18ac320 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -2,6 +2,22 @@
Reviewed by Chris Marrin.
+ Percentage Z values in 3d transform functions and transform-origin should cause the property to be invalid
+ https://bugs.webkit.org/show_bug.cgi?id=51070
+
+ Treat as inavlid -webkit-transform values that include a percentage value in translateZ()
+ or in the third parameter to translate3d().
+
+ Test: transforms/3d/general/3dtransform-values.html
+
+ * css/CSSParser.cpp:
+ (WebCore::CSSParser::parseTransform):
+ (WebCore::CSSParser::parseTransformOrigin): Whitespace change.
+
+2010-12-15 Simon Fraser <simon.fraser at apple.com>
+
+ Reviewed by Chris Marrin.
+
Reflection does not render properly when -webkit-transform is toggled, untoggled, and retoggled
https://bugs.webkit.org/show_bug.cgi?id=50967
diff --git a/WebCore/css/CSSParser.cpp b/WebCore/css/CSSParser.cpp
index 392e548..1fb38d7 100644
--- a/WebCore/css/CSSParser.cpp
+++ b/WebCore/css/CSSParser.cpp
@@ -4995,10 +4995,18 @@ PassRefPtr<CSSValueList> CSSParser::parseTransform()
while (a) {
CSSParser::Units unit = info.unit();
- // 4th param of rotate3d() is an angle rather than a bare number, validate it as such
if (info.type() == WebKitCSSTransformValue::Rotate3DTransformOperation && argNumber == 3) {
+ // 4th param of rotate3d() is an angle rather than a bare number, validate it as such
if (!validUnit(a, FAngle, true))
return 0;
+ } else if (info.type() == WebKitCSSTransformValue::Translate3DTransformOperation && argNumber == 2) {
+ // 3rd param of translate3d() cannot be a percentage
+ if (!validUnit(a, FLength, true))
+ return 0;
+ } else if (info.type() == WebKitCSSTransformValue::TranslateZTransformOperation && argNumber == 0) {
+ // 1st param of translateZ() cannot be a percentage
+ if (!validUnit(a, FLength, true))
+ return 0;
} else if (!validUnit(a, unit, true))
return 0;
@@ -5052,7 +5060,7 @@ bool CSSParser::parseTransformOrigin(int propId, int& propId1, int& propId2, int
}
case CSSPropertyWebkitTransformOriginZ: {
if (validUnit(m_valueList->current(), FLength, m_strict))
- value = CSSPrimitiveValue::create(m_valueList->current()->fValue, (CSSPrimitiveValue::UnitTypes)m_valueList->current()->unit);
+ value = CSSPrimitiveValue::create(m_valueList->current()->fValue, (CSSPrimitiveValue::UnitTypes)m_valueList->current()->unit);
if (value)
m_valueList->next();
break;
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list