[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