Remove the prefix for CSS Transforms
authordino@apple.com <dino@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 22 Mar 2015 04:55:33 +0000 (04:55 +0000)
committerdino@apple.com <dino@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 22 Mar 2015 04:55:33 +0000 (04:55 +0000)
https://bugs.webkit.org/show_bug.cgi?id=142927
<rdar://problem/11568151>

Reviewed by Simon Fraser.

Source/WebCore:

Support the bare form of:
- transform
- transform-style
- transform-origin
- perspective
- perspective-origin

For transform-style, we also still differentiate the prefixed property
because we may want to use that as an indicator of legacy content.

This is mostly a find and replace, but with some related naming
changes. The DOM interface for WebKitCSSTransformValue remains
unchanged.

Tests: transforms/2d/transform-2d-prefixed.html
       transforms/3d/general/prefixed-3dtransform-values.html

* bindings/js/JSCSSStyleDeclarationCustom.cpp:
(WebCore::propertyChangeMayRepaintNonDescendants):
* css/CSSComputedStyleDeclaration.cpp:
(WebCore::isLayoutDependent):
(WebCore::ComputedStyleExtractor::propertyValue):
* css/CSSParser.cpp:
(WebCore::isValidKeywordPropertyAndValue):
(WebCore::isKeywordPropertyID):
(WebCore::parseTranslateTransformValue):
(WebCore::CSSParser::parseValue):
(WebCore::CSSParser::parseTransformOrigin):
(WebCore::CSSParser::parsePerspectiveOrigin):
* css/CSSPropertyNames.in:
* css/StyleProperties.cpp:
(WebCore::StyleProperties::getPropertyValue):
(WebCore::StyleProperties::asText):
* css/WebKitCSSMatrix.cpp:
(WebCore::WebKitCSSMatrix::setMatrixValue):
* html/track/VTTCue.cpp:
(WebCore::VTTCueBox::applyCSSProperties):
* page/animation/AnimationController.cpp:
(WebCore::AnimationControllerPrivate::computeExtentOfAnimation):
* page/animation/CSSPropertyAnimation.cpp:
(WebCore::PropertyWrapperAcceleratedTransform::PropertyWrapperAcceleratedTransform):
(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):
* page/animation/CompositeAnimation.cpp:
(WebCore::CompositeAnimation::computeExtentOfTransformAnimation):
* page/animation/ImplicitAnimation.cpp:
(WebCore::ImplicitAnimation::computeExtentOfTransformAnimation):
* page/animation/KeyframeAnimation.cpp:
(WebCore::KeyframeAnimation::computeExtentOfTransformAnimation):
(WebCore::KeyframeAnimation::validateTransformFunctionList):
* platform/graphics/GraphicsLayer.cpp:
(WebCore::GraphicsLayer::validateTransformOperations):
* platform/graphics/GraphicsLayerClient.h:
* platform/graphics/ca/GraphicsLayerCA.cpp:
(WebCore::propertyIdToString):
(WebCore::GraphicsLayerCA::moveOrCopyAnimations):
(WebCore::GraphicsLayerCA::addAnimation):
(WebCore::GraphicsLayerCA::isRunningTransformAnimation):
(WebCore::GraphicsLayerCA::createAnimationFromKeyframes):
(WebCore::GraphicsLayerCA::createTransformAnimationsFromKeyframes):
* platform/graphics/texmap/GraphicsLayerTextureMapper.cpp:
(WebCore::GraphicsLayerTextureMapper::addAnimation):
* platform/graphics/texmap/TextureMapperAnimation.cpp:
(WebCore::TextureMapperAnimation::applyInternal):
* platform/graphics/texmap/TextureMapperLayer.cpp:
(WebCore::TextureMapperLayer::syncAnimations):
* platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:
(WebCore::CoordinatedGraphicsLayer::selfOrAncestorHasActiveTransformAnimation):
(WebCore::CoordinatedGraphicsLayer::selfOrAncestorHaveNonAffineTransforms):
(WebCore::CoordinatedGraphicsLayer::addAnimation):
* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::updateGeometry):
(WebCore::RenderLayerBacking::startAnimation):
(WebCore::RenderLayerBacking::startTransition):
(WebCore::RenderLayerBacking::graphicsLayerToCSSProperty):
(WebCore::RenderLayerBacking::cssToGraphicsLayerProperty):
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::requiresCompositingForAnimation):
(WebCore::RenderLayerCompositor::isRunningTransformAnimation):
* svg/SVGElement.cpp:
(WebCore::populateAttributeNameToCSSPropertyIDMap):

Source/WebKit2:

Rename AnimatedPropertyWebkitTransform to AnimatedPropertyTransform.

* Shared/CoordinatedGraphics/CoordinatedGraphicsArgumentCoders.cpp:
(IPC::ArgumentCoder<TextureMapperAnimation>::encode):

LayoutTests:

Convert the helper functions for transforms to use the unprefixed
form, and copy some tests to make sure the prefixed form still works.

* fast/css/getComputedStyle/computed-style-expected.txt:
* fast/css/getComputedStyle/computed-style-without-renderer-expected.txt:
* fast/css/getComputedStyle/resources/property-names.js:
* svg/css/getComputedStyle-basic-expected.txt:
* transforms/2d/computed-style-origin-expected.txt:
* transforms/2d/computed-style-origin.html:
* transforms/2d/resources/prefixed-transform-test-utils.js: Copied from LayoutTests/transforms/2d/resources/transform-test-utils.js.
(floatingPointEqual):
(compareMatrices):
(testTransforms):
* transforms/2d/resources/transform-test-utils.js:
(testTransforms):
* transforms/2d/transform-2d-prefixed-expected.txt: Added.
* transforms/2d/transform-2d-prefixed.html: Added.
* transforms/3d/general/prefixed-3dtransform-values-expected.txt: Added.
* transforms/3d/general/prefixed-3dtransform-values.html: Added.
* transitions/transition-end-event-multiple-04-expected.txt:
* transitions/transition-end-event-multiple-04.html:
* transitions/transition-end-event-transform-expected.txt:
* transitions/transition-end-event-transform.html:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@181832 268f45cc-cd09-0410-ab3c-d52691b4dbfc

42 files changed:
LayoutTests/ChangeLog
LayoutTests/fast/css/getComputedStyle/computed-style-expected.txt
LayoutTests/fast/css/getComputedStyle/computed-style-without-renderer-expected.txt
LayoutTests/fast/css/getComputedStyle/resources/property-names.js
LayoutTests/svg/css/getComputedStyle-basic-expected.txt
LayoutTests/transforms/2d/computed-style-origin-expected.txt
LayoutTests/transforms/2d/computed-style-origin.html
LayoutTests/transforms/2d/resources/prefixed-transform-test-utils.js [new file with mode: 0644]
LayoutTests/transforms/2d/resources/transform-test-utils.js
LayoutTests/transforms/2d/transform-2d-prefixed-expected.txt [new file with mode: 0644]
LayoutTests/transforms/2d/transform-2d-prefixed.html [new file with mode: 0644]
LayoutTests/transforms/3d/general/prefixed-3dtransform-values-expected.txt [new file with mode: 0644]
LayoutTests/transforms/3d/general/prefixed-3dtransform-values.html [new file with mode: 0644]
LayoutTests/transitions/transition-end-event-multiple-04-expected.txt
LayoutTests/transitions/transition-end-event-multiple-04.html
LayoutTests/transitions/transition-end-event-transform-expected.txt
LayoutTests/transitions/transition-end-event-transform.html
Source/WebCore/ChangeLog
Source/WebCore/bindings/js/JSCSSStyleDeclarationCustom.cpp
Source/WebCore/css/CSSComputedStyleDeclaration.cpp
Source/WebCore/css/CSSParser.cpp
Source/WebCore/css/CSSPropertyNames.in
Source/WebCore/css/StyleProperties.cpp
Source/WebCore/css/WebKitCSSMatrix.cpp
Source/WebCore/html/track/VTTCue.cpp
Source/WebCore/page/animation/AnimationController.cpp
Source/WebCore/page/animation/CSSPropertyAnimation.cpp
Source/WebCore/page/animation/CompositeAnimation.cpp
Source/WebCore/page/animation/ImplicitAnimation.cpp
Source/WebCore/page/animation/KeyframeAnimation.cpp
Source/WebCore/platform/graphics/GraphicsLayer.cpp
Source/WebCore/platform/graphics/GraphicsLayerClient.h
Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp
Source/WebCore/platform/graphics/texmap/GraphicsLayerTextureMapper.cpp
Source/WebCore/platform/graphics/texmap/TextureMapperAnimation.cpp
Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp
Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp
Source/WebCore/rendering/RenderLayerBacking.cpp
Source/WebCore/rendering/RenderLayerCompositor.cpp
Source/WebCore/svg/SVGElement.cpp
Source/WebKit2/ChangeLog
Source/WebKit2/Shared/CoordinatedGraphics/CoordinatedGraphicsArgumentCoders.cpp

index 6026683..b25e34c 100644 (file)
@@ -1,3 +1,35 @@
+2015-03-21  Dean Jackson  <dino@apple.com>
+
+        Remove the prefix for CSS Transforms
+        https://bugs.webkit.org/show_bug.cgi?id=142927
+        <rdar://problem/11568151>
+
+        Reviewed by Simon Fraser.
+
+        Convert the helper functions for transforms to use the unprefixed
+        form, and copy some tests to make sure the prefixed form still works.
+
+        * fast/css/getComputedStyle/computed-style-expected.txt:
+        * fast/css/getComputedStyle/computed-style-without-renderer-expected.txt:
+        * fast/css/getComputedStyle/resources/property-names.js:
+        * svg/css/getComputedStyle-basic-expected.txt:
+        * transforms/2d/computed-style-origin-expected.txt:
+        * transforms/2d/computed-style-origin.html:
+        * transforms/2d/resources/prefixed-transform-test-utils.js: Copied from LayoutTests/transforms/2d/resources/transform-test-utils.js.
+        (floatingPointEqual):
+        (compareMatrices):
+        (testTransforms):
+        * transforms/2d/resources/transform-test-utils.js:
+        (testTransforms):
+        * transforms/2d/transform-2d-prefixed-expected.txt: Added.
+        * transforms/2d/transform-2d-prefixed.html: Added.
+        * transforms/3d/general/prefixed-3dtransform-values-expected.txt: Added.
+        * transforms/3d/general/prefixed-3dtransform-values.html: Added.
+        * transitions/transition-end-event-multiple-04-expected.txt:
+        * transitions/transition-end-event-multiple-04.html:
+        * transitions/transition-end-event-transform-expected.txt:
+        * transitions/transition-end-event-transform.html:
+
 2015-03-21  Joseph Pecoraro  <pecoraro@apple.com>
 
         Fix a typo in Parser error message
index 089f3a9..e668d97 100644 (file)
@@ -91,6 +91,9 @@ text-shadow: none;
 text-overflow: clip;
 text-transform: none;
 top: auto;
+transform: none;
+transform-origin: 392px 288px;
+transform-style: flat;
 unicode-bidi: normal;
 vertical-align: baseline;
 visibility: visible;
@@ -194,8 +197,8 @@ justify-content: flex-start;
 -webkit-mask-size: auto;
 -webkit-nbsp-mode: normal;
 order: 0;
--webkit-perspective: none;
--webkit-perspective-origin: 392px 288px;
+perspective: none;
+perspective-origin: 392px 288px;
 -webkit-print-color-adjust: economy;
 -webkit-rtl-ordering: logical;
 -webkit-text-combine: none;
@@ -208,8 +211,6 @@ order: 0;
 -webkit-text-security: none;
 -webkit-text-stroke-color: rgb(0, 0, 0);
 -webkit-text-stroke-width: 0px;
--webkit-transform: none;
--webkit-transform-origin: 392px 288px;
 -webkit-transform-style: flat;
 -webkit-transition-delay: 0s;
 -webkit-transition-duration: 0s;
index a9efff5..c54b12f 100644 (file)
@@ -90,6 +90,9 @@ text-shadow: none
 text-overflow: clip
 text-transform: none
 top: auto
+transform: none
+transform-origin: 50% 50%
+transform-style: flat
 unicode-bidi: normal
 vertical-align: baseline
 visibility: visible
@@ -193,8 +196,8 @@ justify-content: flex-start
 -webkit-mask-size: auto
 -webkit-nbsp-mode: normal
 order: 0
--webkit-perspective: none
--webkit-perspective-origin: 50% 50%
+perspective: none
+perspective-origin: 50% 50%
 -webkit-print-color-adjust: economy
 -webkit-rtl-ordering: logical
 -webkit-text-combine: none
@@ -207,8 +210,6 @@ order: 0
 -webkit-text-security: none
 -webkit-text-stroke-color: rgb(0, 0, 0)
 -webkit-text-stroke-width: 0px
--webkit-transform: none
--webkit-transform-origin: 50% 50%
 -webkit-transform-style: flat
 -webkit-transition-delay: 0s
 -webkit-transition-duration: 0s
index 4ac0a80..3e11032 100644 (file)
@@ -94,8 +94,8 @@ var propertiesToTest = {
     "-webkit-mask-size": true,
     "-webkit-nbsp-mode": true,
     "order": true,
-    "-webkit-perspective": true,
-    "-webkit-perspective-origin": true,
+    "perspective": true,
+    "perspective-origin": true,
     "-webkit-print-color-adjust": true,
     "-webkit-rtl-ordering": true,
     "-webkit-svg-shadow": true,
@@ -109,8 +109,9 @@ var propertiesToTest = {
     "-webkit-text-security": true,
     "-webkit-text-stroke-color": true,
     "-webkit-text-stroke-width": true,
-    "-webkit-transform": true,
-    "-webkit-transform-origin": true,
+    "transform": true,
+    "transform-origin": true,
+    "transform-style": true,
     "-webkit-transform-style": true,
     "-webkit-transition-delay": true,
     "-webkit-transition-duration": true,
index 6587dce..fa6b017 100644 (file)
@@ -180,6 +180,12 @@ rect: style.getPropertyValue(text-transform) : none
 rect: style.getPropertyCSSValue(text-transform) : [object CSSPrimitiveValue]
 rect: style.getPropertyValue(top) : auto
 rect: style.getPropertyCSSValue(top) : [object CSSPrimitiveValue]
+rect: style.getPropertyValue(transform) : none
+rect: style.getPropertyCSSValue(transform) : [object CSSPrimitiveValue]
+rect: style.getPropertyValue(transform-origin) : 0px 0px
+rect: style.getPropertyCSSValue(transform-origin) : [object CSSValueList]
+rect: style.getPropertyValue(transform-style) : flat
+rect: style.getPropertyCSSValue(transform-style) : [object CSSPrimitiveValue]
 rect: style.getPropertyValue(unicode-bidi) : normal
 rect: style.getPropertyCSSValue(unicode-bidi) : [object CSSPrimitiveValue]
 rect: style.getPropertyValue(vertical-align) : baseline
@@ -386,10 +392,10 @@ rect: style.getPropertyValue(-webkit-nbsp-mode) : normal
 rect: style.getPropertyCSSValue(-webkit-nbsp-mode) : [object CSSPrimitiveValue]
 rect: style.getPropertyValue(order) : 0
 rect: style.getPropertyCSSValue(order) : [object CSSPrimitiveValue]
-rect: style.getPropertyValue(-webkit-perspective) : none
-rect: style.getPropertyCSSValue(-webkit-perspective) : [object CSSPrimitiveValue]
-rect: style.getPropertyValue(-webkit-perspective-origin) : 0px 0px
-rect: style.getPropertyCSSValue(-webkit-perspective-origin) : [object CSSValueList]
+rect: style.getPropertyValue(perspective) : none
+rect: style.getPropertyCSSValue(perspective) : [object CSSPrimitiveValue]
+rect: style.getPropertyValue(perspective-origin) : 0px 0px
+rect: style.getPropertyCSSValue(perspective-origin) : [object CSSValueList]
 rect: style.getPropertyValue(-webkit-print-color-adjust) : economy
 rect: style.getPropertyCSSValue(-webkit-print-color-adjust) : [object CSSPrimitiveValue]
 rect: style.getPropertyValue(-webkit-rtl-ordering) : logical
@@ -414,10 +420,6 @@ rect: style.getPropertyValue(-webkit-text-stroke-color) : rgb(0, 0, 0)
 rect: style.getPropertyCSSValue(-webkit-text-stroke-color) : [object CSSPrimitiveValue]
 rect: style.getPropertyValue(-webkit-text-stroke-width) : 0px
 rect: style.getPropertyCSSValue(-webkit-text-stroke-width) : [object CSSPrimitiveValue]
-rect: style.getPropertyValue(-webkit-transform) : none
-rect: style.getPropertyCSSValue(-webkit-transform) : [object CSSPrimitiveValue]
-rect: style.getPropertyValue(-webkit-transform-origin) : 0px 0px
-rect: style.getPropertyCSSValue(-webkit-transform-origin) : [object CSSValueList]
 rect: style.getPropertyValue(-webkit-transform-style) : flat
 rect: style.getPropertyCSSValue(-webkit-transform-style) : [object CSSPrimitiveValue]
 rect: style.getPropertyValue(-webkit-transition-delay) : 0s
@@ -692,6 +694,12 @@ g: style.getPropertyValue(text-transform) : none
 g: style.getPropertyCSSValue(text-transform) : [object CSSPrimitiveValue]
 g: style.getPropertyValue(top) : auto
 g: style.getPropertyCSSValue(top) : [object CSSPrimitiveValue]
+g: style.getPropertyValue(transform) : none
+g: style.getPropertyCSSValue(transform) : [object CSSPrimitiveValue]
+g: style.getPropertyValue(transform-origin) : 0px 0px
+g: style.getPropertyCSSValue(transform-origin) : [object CSSValueList]
+g: style.getPropertyValue(transform-style) : flat
+g: style.getPropertyCSSValue(transform-style) : [object CSSPrimitiveValue]
 g: style.getPropertyValue(unicode-bidi) : normal
 g: style.getPropertyCSSValue(unicode-bidi) : [object CSSPrimitiveValue]
 g: style.getPropertyValue(vertical-align) : baseline
@@ -898,10 +906,10 @@ g: style.getPropertyValue(-webkit-nbsp-mode) : normal
 g: style.getPropertyCSSValue(-webkit-nbsp-mode) : [object CSSPrimitiveValue]
 g: style.getPropertyValue(order) : 0
 g: style.getPropertyCSSValue(order) : [object CSSPrimitiveValue]
-g: style.getPropertyValue(-webkit-perspective) : none
-g: style.getPropertyCSSValue(-webkit-perspective) : [object CSSPrimitiveValue]
-g: style.getPropertyValue(-webkit-perspective-origin) : 0px 0px
-g: style.getPropertyCSSValue(-webkit-perspective-origin) : [object CSSValueList]
+g: style.getPropertyValue(perspective) : none
+g: style.getPropertyCSSValue(perspective) : [object CSSPrimitiveValue]
+g: style.getPropertyValue(perspective-origin) : 0px 0px
+g: style.getPropertyCSSValue(perspective-origin) : [object CSSValueList]
 g: style.getPropertyValue(-webkit-print-color-adjust) : economy
 g: style.getPropertyCSSValue(-webkit-print-color-adjust) : [object CSSPrimitiveValue]
 g: style.getPropertyValue(-webkit-rtl-ordering) : logical
@@ -926,10 +934,6 @@ g: style.getPropertyValue(-webkit-text-stroke-color) : rgb(0, 0, 0)
 g: style.getPropertyCSSValue(-webkit-text-stroke-color) : [object CSSPrimitiveValue]
 g: style.getPropertyValue(-webkit-text-stroke-width) : 0px
 g: style.getPropertyCSSValue(-webkit-text-stroke-width) : [object CSSPrimitiveValue]
-g: style.getPropertyValue(-webkit-transform) : none
-g: style.getPropertyCSSValue(-webkit-transform) : [object CSSPrimitiveValue]
-g: style.getPropertyValue(-webkit-transform-origin) : 0px 0px
-g: style.getPropertyCSSValue(-webkit-transform-origin) : [object CSSValueList]
 g: style.getPropertyValue(-webkit-transform-style) : flat
 g: style.getPropertyCSSValue(-webkit-transform-style) : [object CSSPrimitiveValue]
 g: style.getPropertyValue(-webkit-transition-delay) : 0s
index 68f42b0..452c3a5 100644 (file)
@@ -3,17 +3,17 @@ This tests computed style values for transform-origin and perspective-origin.
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
 
-PASS test1Style.webkitTransformOrigin is '10px 10px'
-PASS test2Style.webkitTransformOrigin is '10px 10px'
-PASS test3Style.webkitTransformOrigin is '0px 20px'
-PASS test4Style.webkitTransformOrigin is '5px 7px'
-PASS test5Style.webkitTransformOrigin is '15px 15px'
-PASS test1Style.webkitPerspectiveOrigin is '10px 10px'
-PASS test2Style.webkitPerspectiveOrigin is '10px 10px'
-PASS test3Style.webkitPerspectiveOrigin is '0px 20px'
-PASS test4Style.webkitPerspectiveOrigin is '5px 7px'
-PASS test5Style.webkitPerspectiveOrigin is '15px 15px'
-PASS test6Style.webkitPerspectiveOrigin is '50px 50px'
+PASS test1Style.transformOrigin is '10px 10px'
+PASS test2Style.transformOrigin is '10px 10px'
+PASS test3Style.transformOrigin is '0px 20px'
+PASS test4Style.transformOrigin is '5px 7px'
+PASS test5Style.transformOrigin is '15px 15px'
+PASS test1Style.perspectiveOrigin is '10px 10px'
+PASS test2Style.perspectiveOrigin is '10px 10px'
+PASS test3Style.perspectiveOrigin is '0px 20px'
+PASS test4Style.perspectiveOrigin is '5px 7px'
+PASS test5Style.perspectiveOrigin is '15px 15px'
+PASS test6Style.perspectiveOrigin is '50px 50px'
 
 PASS successfullyParsed is true
 
index 9d809b5..cb89169 100644 (file)
@@ -6,7 +6,7 @@
         height: 20px;
         background-color: blue;
         position: relative;
-        -webkit-transform: translate(0);
+        transform: translate(0);
         // default transform and perspective origin
     }
     #test2 {
         height: 20px;
         background-color: blue;
         position: relative;
-        -webkit-transform: translate(0);
-        -webkit-transform-origin: 50% 50%;
-        -webkit-perspective-origin: 50% 50%;
+        transform: translate(0);
+        transform-origin: 50% 50%;
+        perspective-origin: 50% 50%;
     }
     #test3 {
         width: 20px;
         height: 20px;
         background-color: blue;
         position: relative;
-        -webkit-transform: translate(0);
-        -webkit-transform-origin: 0% 100%;
-        -webkit-perspective-origin: 0% 100%;
+        transform: translate(0);
+        transform-origin: 0% 100%;
+        perspective-origin: 0% 100%;
     }
     #test4 {
         width: 20px;
         height: 20px;
         background-color: blue;
         position: relative;
-        -webkit-transform: translate(0);
-        -webkit-transform-origin: 5px 7px;
-        -webkit-perspective-origin: 5px 7px;
+        transform: translate(0);
+        transform-origin: 5px 7px;
+        perspective-origin: 5px 7px;
     }
     #test5 {
         width: 10px;
         border: 5px solid green;
         background-color: blue;
         position: relative;
-        -webkit-transform: translate(0);
-        -webkit-transform-origin: 50% 50%;
-        -webkit-perspective-origin: 50% 50%;
+        transform: translate(0);
+        transform-origin: 50% 50%;
+        perspective-origin: 50% 50%;
     }
     #test6 {
         width: 100px;
         height: 100px;
         background-color: blue;
         position: relative;
-        -webkit-transform: translate(0);
-        -webkit-perspective-origin: 10% 20% 30%;
+        transform: translate(0);
+        perspective-origin: 10% 20% 30%;
     }
 
 </style>
@@ -87,18 +87,18 @@ var test4Style = window.getComputedStyle(test4);
 var test5Style = window.getComputedStyle(test5);
 var test6Style = window.getComputedStyle(test6);
 
-shouldBe("test1Style.webkitTransformOrigin", "'10px 10px'");
-shouldBe("test2Style.webkitTransformOrigin", "'10px 10px'");
-shouldBe("test3Style.webkitTransformOrigin", "'0px 20px'");
-shouldBe("test4Style.webkitTransformOrigin", "'5px 7px'");
-shouldBe("test5Style.webkitTransformOrigin", "'15px 15px'");
+shouldBe("test1Style.transformOrigin", "'10px 10px'");
+shouldBe("test2Style.transformOrigin", "'10px 10px'");
+shouldBe("test3Style.transformOrigin", "'0px 20px'");
+shouldBe("test4Style.transformOrigin", "'5px 7px'");
+shouldBe("test5Style.transformOrigin", "'15px 15px'");
 
-shouldBe("test1Style.webkitPerspectiveOrigin", "'10px 10px'");
-shouldBe("test2Style.webkitPerspectiveOrigin", "'10px 10px'");
-shouldBe("test3Style.webkitPerspectiveOrigin", "'0px 20px'");
-shouldBe("test4Style.webkitPerspectiveOrigin", "'5px 7px'");
-shouldBe("test5Style.webkitPerspectiveOrigin", "'15px 15px'");
-shouldBe("test6Style.webkitPerspectiveOrigin", "'50px 50px'");
+shouldBe("test1Style.perspectiveOrigin", "'10px 10px'");
+shouldBe("test2Style.perspectiveOrigin", "'10px 10px'");
+shouldBe("test3Style.perspectiveOrigin", "'0px 20px'");
+shouldBe("test4Style.perspectiveOrigin", "'5px 7px'");
+shouldBe("test5Style.perspectiveOrigin", "'15px 15px'");
+shouldBe("test6Style.perspectiveOrigin", "'50px 50px'");
 
 debug("");
 
diff --git a/LayoutTests/transforms/2d/resources/prefixed-transform-test-utils.js b/LayoutTests/transforms/2d/resources/prefixed-transform-test-utils.js
new file mode 100644 (file)
index 0000000..82abd71
--- /dev/null
@@ -0,0 +1,58 @@
+
+// compare matrix() strings with some slop on really small values
+
+function floatingPointEqual(a, b)
+{
+  const kEpsilon = 1e-4;
+  return (Math.abs(a - b) < kEpsilon);
+}
+
+function compareMatrices(a, b)
+{
+  if (a == "none" && b == "none")
+    return true;
+
+  var matrixRegex = /matrix(?:3d)?\((.+)\)/;
+
+  var resultA = matrixRegex.exec(a);
+  var resultB = matrixRegex.exec(b);
+  if (!resultA || !resultB)
+    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;
+}
+
+function testTransforms()
+{
+  var testBox = document.getElementById('test-box');
+  var resultsBox = document.getElementById('results');
+
+  gTests.forEach(function(curTest) {
+    testBox.style.webkitTransform = 'none'; // reset the transform just in case the next step fails
+    testBox.style.webkitTransform = curTest.transform;
+    var computedTransform = window.getComputedStyle(testBox).webkitTransform;
+
+    var success = compareMatrices(computedTransform, curTest.result);
+    var result;
+    if (success)
+      result = 'transform "<code>' + curTest.transform + '</code>" expected "<code>' + curTest.result + '</code>" : PASS';
+    else
+      result = 'transform "<code>' + curTest.transform + '</code>" expected "<code>' + curTest.result + '</code>", got "<code>' + computedTransform + '</code>" : FAIL';
+    resultsBox.innerHTML += result + '<br>';
+  });
+}
index be24b36..dcf2d5c 100644 (file)
@@ -41,11 +41,11 @@ function testTransforms()
 {
   var testBox = document.getElementById('test-box');
   var resultsBox = document.getElementById('results');
-  
+
   gTests.forEach(function(curTest) {
-    testBox.style.webkitTransform = 'none'; // reset the transform just in case the next step fails
-    testBox.style.webkitTransform = curTest.transform;
-    var computedTransform = window.getComputedStyle(testBox).webkitTransform;
+    testBox.style.transform = 'none'; // reset the transform just in case the next step fails
+    testBox.style.transform = curTest.transform;
+    var computedTransform = window.getComputedStyle(testBox).transform;
 
     var success = compareMatrices(computedTransform, curTest.result);
     var result;
diff --git a/LayoutTests/transforms/2d/transform-2d-prefixed-expected.txt b/LayoutTests/transforms/2d/transform-2d-prefixed-expected.txt
new file mode 100644 (file)
index 0000000..1fbea47
--- /dev/null
@@ -0,0 +1,84 @@
+transform "none" expected "none" : PASS
+transform "" expected "matrix(5.96046e-08, 1, -1, 5.96046e-08, 0, 0)" : PASS
+transform "inherit" expected "none" : PASS
+transform "translate(80px, 90px)" expected "matrix(1, 0, 0, 1, 80, 90)" : PASS
+transform "translate(100%, 3em)" expected "matrix(1, 0, 0, 1, 200, 48)" : PASS
+transform "translate(50px)" expected "matrix(1, 0, 0, 1, 50, 0)" : PASS
+transform "translatex(-20px)" expected "matrix(1, 0, 0, 1, -20, 0)" : PASS
+transform "translateX(-20px)" expected "matrix(1, 0, 0, 1, -20, 0)" : PASS
+transform "translatey(23px)" expected "matrix(1, 0, 0, 1, 0, 23)" : PASS
+transform "translateY(-3em)" expected "matrix(1, 0, 0, 1, 0, -48)" : PASS
+transform "scale(1.2)" expected "matrix(1.2, 0, 0, 1.2, 0, 0)" : PASS
+transform "scalex(1.5)" expected "matrix(1.5, 0, 0, 1, 0, 0)" : PASS
+transform "scaleX(1.5)" expected "matrix(1.5, 0, 0, 1, 0, 0)" : PASS
+transform "scaley(1.5)" expected "matrix(1, 0, 0, 1.5, 0, 0)" : PASS
+transform "scaleY(1.5)" expected "matrix(1, 0, 0, 1.5, 0, 0)" : PASS
+transform "scale(1.2, 0.8)" expected "matrix(1.2, 0, 0, 0.8, 0, 0)" : PASS
+transform "scale(-1.2, -0.8)" expected "matrix(-1.2, -0, -0, -0.8, 0, 0)" : PASS
+transform "skew(-0.7rad, 20deg)" expected "matrix(1, 0.36397, -0.842288, 1, 0, 0)" : PASS
+transform "skew(12grad)" expected "matrix(1, 0, 0.19076, 1, 0, 0)" : PASS
+transform "skewx(12grad)" expected "matrix(1, 0, 0.19076, 1, 0, 0)" : PASS
+transform "skewX(12grad)" expected "matrix(1, 0, 0.19076, 1, 0, 0)" : PASS
+transform "skewy(-12grad)" expected "matrix(1, -0.19076, 0, 1, 0, 0)" : PASS
+transform "skewY(-12grad)" expected "matrix(1, -0.19076, 0, 1, 0, 0)" : PASS
+transform "skewx(0.1turn)" expected "matrix(1, 0, 0.726543, 1, 0, 0)" : PASS
+transform "rotate(45deg)" expected "matrix(0.707107, 0.707107, -0.707107, 0.707107, 0, 0)" : PASS
+transform "rotate(90deg)" expected "matrix(-4.37114e-08, 1, -1, -4.37114e-08, 0, 0)" : PASS
+transform "rotate(-90deg)" expected "matrix(-4.37114e-08, -1, 1, -4.37114e-08, 0, 0)" : PASS
+transform "rotate(180deg)" expected "matrix(-1, -8.74228e-08, 8.74228e-08, -1, 0, 0)" : PASS
+transform "rotate(1.2rad)" expected "matrix(0.362358, 0.932039, -0.932039, 0.362358, 0, 0)" : PASS
+transform "rotate(0.25turn)" expected "matrix(-4.37114e-08, 1, -1, -4.37114e-08, 0, 0)" : PASS
+transform "rotate(0.5turn)" expected "matrix(-1, -8.74228e-08, 8.74228e-08, -1, 0, 0)" : PASS
+transform "rotate(1.5turn)" expected "matrix(-1, -8.74228e-08, 8.74228e-08, -1, 0, 0)" : PASS
+transform "matrix(1, 0, 0, 1, 0, 0)" expected "matrix(1, 0, 0, 1, 0, 0)" : PASS
+transform "matrix(1, -0.19076, 0, 1, 0, 0)" expected "matrix(1, -0.19076, 0, 1, 0, 0)" : PASS
+transform "matrix(0.2, 0.3, 0.4, 1.1, 1.2, 1.3)" expected "matrix(0.2, 0.3, 0.4, 1.1, 1.2, 1.3)" : PASS
+transform ",rotate(12deg)" expected "none" : PASS
+transform "rotate(12deg)," expected "none" : PASS
+transform "rotate(12deg) +" expected "none" : PASS
+transform "(translate(50, 20))" expected "none" : PASS
+transform "eggs(10)" expected "none" : PASS
+transform "translate(50, 20)" expected "none" : PASS
+transform "translate()" expected "none" : PASS
+transform "translate(10px, 20px, 30px)" expected "none" : PASS
+transform "translate(10px, 20px, 30px, 40px)" expected "none" : PASS
+transform "translate(10smidgens)" expected "none" : PASS
+transform "translate(10px, 10smidgens)" expected "none" : PASS
+transform "translateX(10px, 20px)" expected "none" : PASS
+transform "translateX(10px, 20px, 30px)" expected "none" : PASS
+transform "translateX(10smidgens)" expected "none" : PASS
+transform "translateX(10px, 10smidgens)" expected "none" : PASS
+transform "translateY(10px, 20px)" expected "none" : PASS
+transform "translateY(10px, 20px, 30px)" expected "none" : PASS
+transform "translateY(10smidgens)" expected "none" : PASS
+transform "translateY(10px, 10smidgens)" expected "none" : PASS
+transform "scale(2px, 2px)" expected "none" : PASS
+transform "scale(2, 2px)" expected "none" : PASS
+transform "scale()" expected "none" : PASS
+transform "scale(1, 2, 3)" expected "none" : PASS
+transform "scale(2smidgens)" expected "none" : PASS
+transform "scale(2, 2smidgens)" expected "none" : PASS
+transform "rotate(10)" expected "none" : PASS
+transform "rotate()" expected "none" : PASS
+transform "rotate(10deg, 20deg)" expected "none" : PASS
+transform "rotate(2turns)" expected "none" : PASS
+transform "rotate(2spins)" expected "none" : PASS
+transform "rotate(2, 2spins)" expected "none" : PASS
+transform "skew(10)" expected "none" : PASS
+transform "skew()" expected "none" : PASS
+transform "skew(10deg, 20deg, 30deg)" expected "none" : PASS
+transform "skew(2bits)" expected "none" : PASS
+transform "skew(2, 2bits)" expected "none" : PASS
+transform "skewX(10)" expected "none" : PASS
+transform "skewX()" expected "none" : PASS
+transform "skewX(10deg, 20deg)" expected "none" : PASS
+transform "skewX(2bits)" expected "none" : PASS
+transform "skewY(10)" expected "none" : PASS
+transform "skewY()" expected "none" : PASS
+transform "skewY(10deg, 20deg)" expected "none" : PASS
+transform "skewY(2bits)" expected "none" : PASS
+transform "matrix()" expected "none" : PASS
+transform "matrix(2, 0, 0, 2)" expected "none" : PASS
+transform "matrix(0.978148, 0.207912, -0.207912, 0.978148, 50, 20, 666)" expected "none" : PASS
+transform "matrix(1, 0, 0, 1, 20px, 50px)" expected "none" : PASS
+
diff --git a/LayoutTests/transforms/2d/transform-2d-prefixed.html b/LayoutTests/transforms/2d/transform-2d-prefixed.html
new file mode 100644 (file)
index 0000000..a30e069
--- /dev/null
@@ -0,0 +1,157 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <title>2D Transform Tests</title>
+  <style type="text/css" media="screen">
+    .container {
+      height: 100px;
+      width: 200px;
+      margin: 30px;
+      outline: 1px solid black;
+    }
+    .box {
+      height: 100%;
+      width: 100%;
+      background-color: green;
+      -webkit-transform: rotate(90deg);
+    }
+    #results {
+      margin-top: 100px;
+    }
+  </style>
+  <script src="resources/prefixed-transform-test-utils.js" type="text/javascript" charset="utf-8"></script>
+  <script type="text/javascript" charset="utf-8">
+    if (window.testRunner) {
+      testRunner.dumpAsText();
+      testRunner.waitUntilDone();
+    }
+
+    var gTests = [
+      // nothing
+      { 'transform' : 'none', 'result' : 'none' },
+      { 'transform' : '', 'result' : 'matrix(5.96046e-08, 1, -1, 5.96046e-08, 0, 0)' }, // this cancels the style - revert back to box
+      { 'transform' : 'inherit', 'result' : 'none' }, // parent element doesn't have transform
+
+      // translate
+      { 'transform' : 'translate(80px, 90px)',  'result' : 'matrix(1, 0, 0, 1, 80, 90)' },
+      { 'transform' : 'translate(100%, 3em)',   'result' : 'matrix(1, 0, 0, 1, 200, 48)' },  // depends on font size
+      { 'transform' : 'translate(50px)',        'result' : 'matrix(1, 0, 0, 1, 50, 0)' },
+      { 'transform' : 'translatex(-20px)',      'result' : 'matrix(1, 0, 0, 1, -20, 0)' },
+      { 'transform' : 'translateX(-20px)',      'result' : 'matrix(1, 0, 0, 1, -20, 0)' },
+      { 'transform' : 'translatey(23px)',       'result' : 'matrix(1, 0, 0, 1, 0, 23)' },
+      { 'transform' : 'translateY(-3em)',       'result' : 'matrix(1, 0, 0, 1, 0, -48)' },  // depends on font size
+
+      // scale
+      { 'transform' : 'scale(1.2)',             'result' : 'matrix(1.2, 0, 0, 1.2, 0, 0)' },
+      { 'transform' : 'scalex(1.5)',            'result' : 'matrix(1.5, 0, 0, 1, 0, 0)' },
+      { 'transform' : 'scaleX(1.5)',            'result' : 'matrix(1.5, 0, 0, 1, 0, 0)' },
+      { 'transform' : 'scaley(1.5)',            'result' : 'matrix(1, 0, 0, 1.5, 0, 0)' },
+      { 'transform' : 'scaleY(1.5)',            'result' : 'matrix(1, 0, 0, 1.5, 0, 0)' },
+      { 'transform' : 'scale(1.2, 0.8)',        'result' : 'matrix(1.2, 0, 0, 0.8, 0, 0)' },
+      { 'transform' : 'scale(-1.2, -0.8)',      'result' : 'matrix(-1.2, -0, -0, -0.8, 0, 0)' },
+
+      // skew
+      { 'transform' : 'skew(-0.7rad, 20deg)',   'result' : 'matrix(1, 0.36397, -0.842288, 1, 0, 0)' },
+      { 'transform' : 'skew(12grad)',           'result' : 'matrix(1, 0, 0.19076, 1, 0, 0)' },
+      { 'transform' : 'skewx(12grad)',          'result' : 'matrix(1, 0, 0.19076, 1, 0, 0)' },
+      { 'transform' : 'skewX(12grad)',          'result' : 'matrix(1, 0, 0.19076, 1, 0, 0)' },
+      { 'transform' : 'skewy(-12grad)',         'result' : 'matrix(1, -0.19076, 0, 1, 0, 0)' },
+      { 'transform' : 'skewY(-12grad)',         'result' : 'matrix(1, -0.19076, 0, 1, 0, 0)' },
+      { 'transform' : 'skewx(0.1turn)',         'result' : 'matrix(1, 0, 0.726543, 1, 0, 0)' },
+
+      // rotate
+      { 'transform' : 'rotate(45deg)',          'result' : 'matrix(0.707107, 0.707107, -0.707107, 0.707107, 0, 0)' },
+      { 'transform' : 'rotate(90deg)',          'result' : 'matrix(-4.37114e-08, 1, -1, -4.37114e-08, 0, 0)' },
+      { 'transform' : 'rotate(-90deg)',         'result' : 'matrix(-4.37114e-08, -1, 1, -4.37114e-08, 0, 0)' },
+      { 'transform' : 'rotate(180deg)',         'result' : 'matrix(-1, -8.74228e-08, 8.74228e-08, -1, 0, 0)' },
+      { 'transform' : 'rotate(1.2rad)',         'result' : 'matrix(0.362358, 0.932039, -0.932039, 0.362358, 0, 0)' },
+      { 'transform' : 'rotate(0.25turn)',       'result' : 'matrix(-4.37114e-08, 1, -1, -4.37114e-08, 0, 0)' },
+      { 'transform' : 'rotate(0.5turn)',        'result' : 'matrix(-1, -8.74228e-08, 8.74228e-08, -1, 0, 0)' },
+      { 'transform' : 'rotate(1.5turn)',        'result' : 'matrix(-1, -8.74228e-08, 8.74228e-08, -1, 0, 0)' },
+
+      // matrix
+      { 'transform' : 'matrix(1, 0, 0, 1, 0, 0)', 'result' : 'matrix(1, 0, 0, 1, 0, 0)' },
+      { 'transform' : 'matrix(1, -0.19076, 0, 1, 0, 0)', 'result' : 'matrix(1, -0.19076, 0, 1, 0, 0)' },
+      { 'transform' : 'matrix(0.2, 0.3, 0.4, 1.1, 1.2, 1.3)', 'result' : 'matrix(0.2, 0.3, 0.4, 1.1, 1.2, 1.3)' },
+
+      // invalid syntax
+      { 'transform' : ',rotate(12deg)', 'result' : 'none' }, // has comma
+      { 'transform' : 'rotate(12deg),', 'result' : 'none' }, // has comma
+      { 'transform' : 'rotate(12deg) +', 'result' : 'none' }, // has plus
+      { 'transform' : '(translate(50, 20))', 'result' : 'none' }, // bad syntax
+      { 'transform' : 'eggs(10)', 'result' : 'none' }, // invalid function
+
+      // invalid translate
+      { 'transform' : 'translate(50, 20)', 'result' : 'none' }, // missing units
+      { 'transform' : 'translate()', 'result' : 'none' }, // no arguments
+      { 'transform' : 'translate(10px, 20px, 30px)', 'result' : 'none' }, // too many arguments
+      { 'transform' : 'translate(10px, 20px, 30px, 40px)', 'result' : 'none' }, // too many arguments
+      { 'transform' : 'translate(10smidgens)', 'result' : 'none' }, // invalid units
+      { 'transform' : 'translate(10px, 10smidgens)', 'result' : 'none' }, // invalid units
+      { 'transform' : 'translateX(10px, 20px)', 'result' : 'none' }, // too many arguments
+      { 'transform' : 'translateX(10px, 20px, 30px)', 'result' : 'none' }, // too many arguments
+      { 'transform' : 'translateX(10smidgens)', 'result' : 'none' }, // invalid units
+      { 'transform' : 'translateX(10px, 10smidgens)', 'result' : 'none' }, // invalid units
+      { 'transform' : 'translateY(10px, 20px)', 'result' : 'none' }, // too many arguments
+      { 'transform' : 'translateY(10px, 20px, 30px)', 'result' : 'none' }, // too many arguments
+      { 'transform' : 'translateY(10smidgens)', 'result' : 'none' }, // invalid units
+      { 'transform' : 'translateY(10px, 10smidgens)', 'result' : 'none' }, // invalid units
+
+      // invalid scale
+      { 'transform' : 'scale(2px, 2px)', 'result' : 'none' }, // has units
+      { 'transform' : 'scale(2, 2px)', 'result' : 'none' }, // has units
+      { 'transform' : 'scale()', 'result' : 'none' }, // no arguments
+      { 'transform' : 'scale(1, 2, 3)', 'result' : 'none' }, // too many arguments
+      { 'transform' : 'scale(2smidgens)', 'result' : 'none' }, // invalid units
+      { 'transform' : 'scale(2, 2smidgens)', 'result' : 'none' }, // invalid units
+
+      // invalid rotate
+      { 'transform' : 'rotate(10)', 'result' : 'none' }, // no units
+      { 'transform' : 'rotate()', 'result' : 'none' }, // no arguments
+      { 'transform' : 'rotate(10deg, 20deg)', 'result' : 'none' }, // too many arguments
+      { 'transform' : 'rotate(2turns)', 'result' : 'none' }, // invalid units -- 'turn' not 'turns'
+      { 'transform' : 'rotate(2spins)', 'result' : 'none' }, // invalid units
+      { 'transform' : 'rotate(2, 2spins)', 'result' : 'none' }, // invalid units
+
+      // invalid skew
+      { 'transform' : 'skew(10)', 'result' : 'none' }, // no units
+      { 'transform' : 'skew()', 'result' : 'none' }, // no arguments
+      { 'transform' : 'skew(10deg, 20deg, 30deg)', 'result' : 'none' }, // too many arguments
+      { 'transform' : 'skew(2bits)', 'result' : 'none' }, // invalid units
+      { 'transform' : 'skew(2, 2bits)', 'result' : 'none' }, // invalid units
+      { 'transform' : 'skewX(10)', 'result' : 'none' }, // no units
+      { 'transform' : 'skewX()', 'result' : 'none' }, // no arguments
+      { 'transform' : 'skewX(10deg, 20deg)', 'result' : 'none' }, // too many arguments
+      { 'transform' : 'skewX(2bits)', 'result' : 'none' }, // invalid units
+      { 'transform' : 'skewY(10)', 'result' : 'none' }, // no units
+      { 'transform' : 'skewY()', 'result' : 'none' }, // no arguments
+      { 'transform' : 'skewY(10deg, 20deg)', 'result' : 'none' }, // too many arguments
+      { 'transform' : 'skewY(2bits)', 'result' : 'none' }, // invalid units
+
+      // invalid matrix
+      { 'transform' : 'matrix()', 'result' : 'none' }, // no arguments
+      { 'transform' : 'matrix(2, 0, 0, 2)', 'result' : 'none' }, // not enough arguments
+      { 'transform' : 'matrix(0.978148, 0.207912, -0.207912, 0.978148, 50, 20, 666)', 'result' : 'none' }, // too many arguments
+      { 'transform' : 'matrix(1, 0, 0, 1, 20px, 50px)', 'result' : 'none' } // has units
+      
+    ];
+    
+    function runTests()
+    {
+      testTransforms();
+
+      if (window.testRunner)
+        testRunner.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/LayoutTests/transforms/3d/general/prefixed-3dtransform-values-expected.txt b/LayoutTests/transforms/3d/general/prefixed-3dtransform-values-expected.txt
new file mode 100644 (file)
index 0000000..321d233
--- /dev/null
@@ -0,0 +1,21 @@
+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 "rotate3d(0, 0, 0, 180deg)" expected "matrix3d(1, 0, 0, 1, 0, 0)" : 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
+transform "perspective(400)" expected "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.0025, 0, 0, 0, 1)" : PASS
+transform "perspective(400px)" expected "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.0025, 0, 0, 0, 1)" : PASS
+transform "perspective(400em)" expected "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.00015625, 0, 0, 0, 1)" : PASS
+transform "perspective(50%)" expected "none" : PASS
+transform "perspective(-400)" expected "none" : PASS
+transform "perspective(0)" expected "matrix(1, 0, 0, 1, 0, 0)" : PASS
+transform "perspective(400deg)" expected "none" : PASS
+transform "perspective(banana)" expected "none" : PASS
+
diff --git a/LayoutTests/transforms/3d/general/prefixed-3dtransform-values.html b/LayoutTests/transforms/3d/general/prefixed-3dtransform-values.html
new file mode 100644 (file)
index 0000000..0605e72
--- /dev/null
@@ -0,0 +1,69 @@
+<!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/prefixed-transform-test-utils.js" type="text/javascript" charset="utf-8"></script>
+  <script type="text/javascript">
+    if (window.testRunner) {
+      testRunner.dumpAsText();
+      testRunner.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' : 'rotate3d(0, 0, 0, 180deg)', 'result' : 'matrix3d(1, 0, 0, 1, 0, 0)' },
+      { '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
+      { 'transform' : 'perspective(400)', 'result' : 'matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.0025, 0, 0, 0, 1)' }, // legacy
+      { 'transform' : 'perspective(400px)', 'result' : 'matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.0025, 0, 0, 0, 1)' },
+      { 'transform' : 'perspective(400em)', 'result' : 'matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.00015625, 0, 0, 0, 1)' },
+      { 'transform' : 'perspective(50%)', 'result' : 'none' },
+      { 'transform' : 'perspective(-400)', 'result' : 'none' },
+      { 'transform' : 'perspective(0)', 'result' : 'matrix(1, 0, 0, 1, 0, 0)' },
+      { 'transform' : 'perspective(400deg)', 'result' : 'none' }, // unit must be length
+      { 'transform' : 'perspective(banana)', 'result' : 'none' }, // unit must be length
+    ];
+
+    function runTests()
+    {
+      testTransforms();
+
+      if (window.testRunner)
+        testRunner.notifyDone();
+    }
+  </script>
+</head>
+<body onload="runTests()">
+
+  <div class="container">
+    <div id="test-box" class="box"></div>
+  </div>
+
+  <div id="results">
+  </div>
+</body>
+</html>
index 93603c6..6ed6d56 100644 (file)
@@ -1,6 +1,6 @@
 Initiating transitions on transform properties of all boxes, starting at different times and with different durations and values.
 
-PASS --- [Expected] Property: -webkit-transform Target: box1 Elapsed Time: 0.5
-PASS --- [Expected] Property: -webkit-transform Target: box2 Elapsed Time: 0.55
-PASS --- [Expected] Property: -webkit-transform Target: box4 Elapsed Time: 0.4
+PASS --- [Expected] Property: transform Target: box1 Elapsed Time: 0.5
+PASS --- [Expected] Property: transform Target: box2 Elapsed Time: 0.55
+PASS --- [Expected] Property: transform Target: box4 Elapsed Time: 0.4
 
index 623b1a1..05a03f3 100644 (file)
@@ -8,28 +8,28 @@
       width: 100px;
       margin: 10px;
       background-color: blue;
-      -webkit-transform: translate(0);
-      -webkit-transition-property: -webkit-transform;
-      -webkit-transition-duration: 0.5s;
+      transform: translate(0);
+      transition-property: transform;
+      transition-duration: 0.5s;
     }
     
     .box1 {
-      -webkit-transform: translate(50px);
+      transform: translate(50px);
     }
     
     .box2 {
-      -webkit-transform: translate(50px) scale(1.05);
-      -webkit-transition-duration: 0.55s;
+      transform: translate(50px) scale(1.05);
+      transition-duration: 0.55s;
     }
     
     .box3 {
-      -webkit-transform: translate(0); /* same as default */
-      -webkit-transition-duration: 0.3s;
+      transform: translate(0); /* same as default */
+      transition-duration: 0.3s;
     }
 
     .box4 {
-      -webkit-transform: translate(100px);
-      -webkit-transition-duration: 0.4s;
+      transform: translate(100px);
+      transition-duration: 0.4s;
     }
 
     .box5 {
@@ -42,9 +42,9 @@
     
     var expectedEndEvents = [
       // [property-name, element-id, elapsed-time, listen]
-      ["-webkit-transform", "box1", 0.5, false],
-      ["-webkit-transform", "box2", 0.55, false],
-      ["-webkit-transform", "box4", 0.4, false]
+      ["transform", "box1", 0.5, false],
+      ["transform", "box2", 0.55, false],
+      ["transform", "box4", 0.4, false]
     ];
   
     function transitionElement(index)
index 887b0d5..ab25ec1 100644 (file)
@@ -1,4 +1,4 @@
 Initiating a 500ms transition on the transform property of box1.
 
-PASS --- [Expected] Property: -webkit-transform Target: box1 Elapsed Time: 0.5
+PASS --- [Expected] Property: transform Target: box1 Elapsed Time: 0.5
 
index c3803bc..f07bc9e 100644 (file)
@@ -8,9 +8,9 @@
       width: 100px;
       margin: 10px;
       background-color: blue;
-      -webkit-transition-property: -webkit-transform;
-      -webkit-transition-duration: 0.5s;
-      -webkit-transform: translate(100px);
+      transition-property: ransform;
+      transition-duration: 0.5s;
+      transform: translate(100px);
     }
   </style>
   <script src="transition-end-event-helpers.js"></script>
     
     var expectedEndEvents = [
       // [property-name, element-id, elapsed-time, listen]
-      ["-webkit-transform", "box1", 0.5, true]
+      ["transform", "box1", 0.5, true]
     ];
     
     function setupTest()
     {
       var box = document.getElementById('box1');
-      box.style.webkitTransform = 'translate(200px)';
+      box.style.transform = 'translate(200px)';
     }
     
     runTransitionTest(expectedEndEvents, setupTest);
index c63b13b..834ff6a 100644 (file)
@@ -1,3 +1,92 @@
+2015-03-21  Dean Jackson  <dino@apple.com>
+
+        Remove the prefix for CSS Transforms
+        https://bugs.webkit.org/show_bug.cgi?id=142927
+        <rdar://problem/11568151>
+
+        Reviewed by Simon Fraser.
+
+        Support the bare form of:
+        - transform
+        - transform-style
+        - transform-origin
+        - perspective
+        - perspective-origin
+
+        For transform-style, we also still differentiate the prefixed property
+        because we may want to use that as an indicator of legacy content.
+
+        This is mostly a find and replace, but with some related naming
+        changes. The DOM interface for WebKitCSSTransformValue remains
+        unchanged.
+
+        Tests: transforms/2d/transform-2d-prefixed.html
+               transforms/3d/general/prefixed-3dtransform-values.html
+
+        * bindings/js/JSCSSStyleDeclarationCustom.cpp:
+        (WebCore::propertyChangeMayRepaintNonDescendants):
+        * css/CSSComputedStyleDeclaration.cpp:
+        (WebCore::isLayoutDependent):
+        (WebCore::ComputedStyleExtractor::propertyValue):
+        * css/CSSParser.cpp:
+        (WebCore::isValidKeywordPropertyAndValue):
+        (WebCore::isKeywordPropertyID):
+        (WebCore::parseTranslateTransformValue):
+        (WebCore::CSSParser::parseValue):
+        (WebCore::CSSParser::parseTransformOrigin):
+        (WebCore::CSSParser::parsePerspectiveOrigin):
+        * css/CSSPropertyNames.in:
+        * css/StyleProperties.cpp:
+        (WebCore::StyleProperties::getPropertyValue):
+        (WebCore::StyleProperties::asText):
+        * css/WebKitCSSMatrix.cpp:
+        (WebCore::WebKitCSSMatrix::setMatrixValue):
+        * html/track/VTTCue.cpp:
+        (WebCore::VTTCueBox::applyCSSProperties):
+        * page/animation/AnimationController.cpp:
+        (WebCore::AnimationControllerPrivate::computeExtentOfAnimation):
+        * page/animation/CSSPropertyAnimation.cpp:
+        (WebCore::PropertyWrapperAcceleratedTransform::PropertyWrapperAcceleratedTransform):
+        (WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):
+        * page/animation/CompositeAnimation.cpp:
+        (WebCore::CompositeAnimation::computeExtentOfTransformAnimation):
+        * page/animation/ImplicitAnimation.cpp:
+        (WebCore::ImplicitAnimation::computeExtentOfTransformAnimation):
+        * page/animation/KeyframeAnimation.cpp:
+        (WebCore::KeyframeAnimation::computeExtentOfTransformAnimation):
+        (WebCore::KeyframeAnimation::validateTransformFunctionList):
+        * platform/graphics/GraphicsLayer.cpp:
+        (WebCore::GraphicsLayer::validateTransformOperations):
+        * platform/graphics/GraphicsLayerClient.h:
+        * platform/graphics/ca/GraphicsLayerCA.cpp:
+        (WebCore::propertyIdToString):
+        (WebCore::GraphicsLayerCA::moveOrCopyAnimations):
+        (WebCore::GraphicsLayerCA::addAnimation):
+        (WebCore::GraphicsLayerCA::isRunningTransformAnimation):
+        (WebCore::GraphicsLayerCA::createAnimationFromKeyframes):
+        (WebCore::GraphicsLayerCA::createTransformAnimationsFromKeyframes):
+        * platform/graphics/texmap/GraphicsLayerTextureMapper.cpp:
+        (WebCore::GraphicsLayerTextureMapper::addAnimation):
+        * platform/graphics/texmap/TextureMapperAnimation.cpp:
+        (WebCore::TextureMapperAnimation::applyInternal):
+        * platform/graphics/texmap/TextureMapperLayer.cpp:
+        (WebCore::TextureMapperLayer::syncAnimations):
+        * platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:
+        (WebCore::CoordinatedGraphicsLayer::selfOrAncestorHasActiveTransformAnimation):
+        (WebCore::CoordinatedGraphicsLayer::selfOrAncestorHaveNonAffineTransforms):
+        (WebCore::CoordinatedGraphicsLayer::addAnimation):
+        * rendering/RenderLayerBacking.cpp:
+        (WebCore::RenderLayerBacking::updateGeometry):
+        (WebCore::RenderLayerBacking::startAnimation):
+        (WebCore::RenderLayerBacking::startTransition):
+        (WebCore::RenderLayerBacking::graphicsLayerToCSSProperty):
+        (WebCore::RenderLayerBacking::cssToGraphicsLayerProperty):
+        * rendering/RenderLayerCompositor.cpp:
+        (WebCore::RenderLayerCompositor::requiresCompositingForAnimation):
+        (WebCore::RenderLayerCompositor::isRunningTransformAnimation):
+        * svg/SVGElement.cpp:
+        (WebCore::populateAttributeNameToCSSPropertyIDMap):
+
 2015-03-21  Commit Queue  <commit-queue@webkit.org>
 
         Unreviewed, rolling out r181824.
index 896b99c..0c5064d 100644 (file)
@@ -330,7 +330,7 @@ static inline bool propertyChangeMayRepaintNonDescendants(CSSPropertyID property
     case CSSPropertyOpacity:
     case CSSPropertyRight:
     case CSSPropertyTop:
-    case CSSPropertyWebkitTransform:
+    case CSSPropertyTransform:
         return false;
     default:
         return true;
index 408b60a..8b32838 100644 (file)
@@ -215,6 +215,9 @@ static const CSSPropertyID computedProperties[] = {
     CSSPropertyTextOverflow,
     CSSPropertyTextTransform,
     CSSPropertyTop,
+    CSSPropertyTransform,
+    CSSPropertyTransformOrigin,
+    CSSPropertyTransformStyle,
     CSSPropertyTransitionDelay,
     CSSPropertyTransitionDuration,
     CSSPropertyTransitionProperty,
@@ -362,8 +365,8 @@ static const CSSPropertyID computedProperties[] = {
 #if ENABLE(ACCELERATED_OVERFLOW_SCROLLING)
     CSSPropertyWebkitOverflowScrolling,
 #endif
-    CSSPropertyWebkitPerspective,
-    CSSPropertyWebkitPerspectiveOrigin,
+    CSSPropertyPerspective,
+    CSSPropertyPerspectiveOrigin,
     CSSPropertyWebkitPrintColorAdjust,
     CSSPropertyWebkitRtlOrdering,
 #if PLATFORM(IOS)
@@ -388,8 +391,6 @@ static const CSSPropertyID computedProperties[] = {
 #endif
     CSSPropertyWebkitTextStrokeColor,
     CSSPropertyWebkitTextStrokeWidth,
-    CSSPropertyWebkitTransform,
-    CSSPropertyWebkitTransformOrigin,
     CSSPropertyWebkitTransformStyle,
     CSSPropertyWebkitTransitionDelay,
     CSSPropertyWebkitTransitionDuration,
@@ -1637,9 +1638,9 @@ static bool isLayoutDependent(CSSPropertyID propertyID, RenderStyle* style, Rend
     case CSSPropertyWebkitGridTemplateColumns:
     case CSSPropertyWebkitGridTemplateRows:
 #endif
-    case CSSPropertyWebkitPerspectiveOrigin:
-    case CSSPropertyWebkitTransformOrigin:
-    case CSSPropertyWebkitTransform:
+    case CSSPropertyPerspectiveOrigin:
+    case CSSPropertyTransformOrigin:
+    case CSSPropertyTransform:
     case CSSPropertyWebkitFilter:
 #if ENABLE(FILTERS_LEVEL_2)
     case CSSPropertyWebkitBackdropFilter:
@@ -2818,11 +2819,11 @@ PassRefPtr<CSSValue> ComputedStyleExtractor::propertyValue(CSSPropertyID propert
                 return cssValuePool().createIdentifierValue(CSSValueAuto);
             return cssValuePool().createIdentifierValue(CSSValueTouch);
 #endif
-        case CSSPropertyWebkitPerspective:
+        case CSSPropertyPerspective:
             if (!style->hasPerspective())
                 return cssValuePool().createIdentifierValue(CSSValueNone);
             return zoomAdjustedPixelValue(style->perspective(), style.get());
-        case CSSPropertyWebkitPerspectiveOrigin: {
+        case CSSPropertyPerspectiveOrigin: {
             RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated();
             if (renderer) {
                 LayoutRect box;
@@ -2873,9 +2874,9 @@ PassRefPtr<CSSValue> ComputedStyleExtractor::propertyValue(CSSPropertyID propert
         }
         case CSSPropertySpeak:
             return cssValuePool().createValue(style->speak());
-        case CSSPropertyWebkitTransform:
+        case CSSPropertyTransform:
             return computedTransform(renderer, style.get());
-        case CSSPropertyWebkitTransformOrigin: {
+        case CSSPropertyTransformOrigin: {
             RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated();
             if (renderer) {
                 LayoutRect box;
@@ -2894,6 +2895,7 @@ PassRefPtr<CSSValue> ComputedStyleExtractor::propertyValue(CSSPropertyID propert
             }
             return list.release();
         }
+        case CSSPropertyTransformStyle:
         case CSSPropertyWebkitTransformStyle:
             return cssValuePool().createIdentifierValue((style->transformStyle3D() == TransformStyle3DPreserve3D) ? CSSValuePreserve3d : CSSValueFlat);
         case CSSPropertyTransitionDelay:
@@ -3185,12 +3187,12 @@ PassRefPtr<CSSValue> ComputedStyleExtractor::propertyValue(CSSPropertyID propert
         case CSSPropertyWebkitMask:
         case CSSPropertyWebkitMaskRepeatX:
         case CSSPropertyWebkitMaskRepeatY:
-        case CSSPropertyWebkitPerspectiveOriginX:
-        case CSSPropertyWebkitPerspectiveOriginY:
+        case CSSPropertyPerspectiveOriginX:
+        case CSSPropertyPerspectiveOriginY:
         case CSSPropertyWebkitTextStroke:
-        case CSSPropertyWebkitTransformOriginX:
-        case CSSPropertyWebkitTransformOriginY:
-        case CSSPropertyWebkitTransformOriginZ:
+        case CSSPropertyTransformOriginX:
+        case CSSPropertyTransformOriginY:
+        case CSSPropertyTransformOriginZ:
             break;
 
 #if ENABLE(CSS_DEVICE_ADAPTATION)
index 835405a..0d67423 100644 (file)
@@ -1014,6 +1014,7 @@ static inline bool isValidKeywordPropertyAndValue(CSSPropertyID propertyId, int
             return true;
         break;
 #endif
+    case CSSPropertyTransformStyle:
     case CSSPropertyWebkitTransformStyle:
         if (valueID == CSSValueFlat || valueID == CSSValuePreserve3d)
             return true;
@@ -1172,6 +1173,7 @@ static inline bool isKeywordPropertyID(CSSPropertyID propertyId)
     case CSSPropertyWebkitTextJustify:
 #endif // CSS3_TEXT
     case CSSPropertyWebkitTextSecurity:
+    case CSSPropertyTransformStyle:
     case CSSPropertyWebkitTransformStyle:
     case CSSPropertyWebkitUserDrag:
     case CSSPropertyWebkitUserModify:
@@ -1251,7 +1253,7 @@ static bool parseTransformTranslateArguments(WebKitCSSTransformValue& transformV
 
 static bool parseTranslateTransformValue(MutableStyleProperties* properties, CSSPropertyID propertyID, const String& string, bool important)
 {
-    if (propertyID != CSSPropertyWebkitTransform)
+    if (propertyID != CSSPropertyTransform)
         return false;
     static const unsigned shortestValidTransformStringLength = 12;
     static const unsigned likelyMultipartTransformStringLengthCutoff = 32;
@@ -1292,7 +1294,7 @@ static bool parseTranslateTransformValue(MutableStyleProperties* properties, CSS
         return false;
     RefPtr<CSSValueList> result = CSSValueList::createSpaceSeparated();
     result->append(transformValue.releaseNonNull());
-    properties->addParsedProperty(CSSProperty(CSSPropertyWebkitTransform, result.release(), important));
+    properties->addParsedProperty(CSSProperty(CSSPropertyTransform, result.release(), important));
     return true;
 }
 
@@ -2615,7 +2617,7 @@ bool CSSParser::parseValue(CSSPropertyID propId, bool important)
             return false;
         return parseRegionThread(propId, important);
 #endif
-    case CSSPropertyWebkitTransform:
+    case CSSPropertyTransform:
         if (id == CSSValueNone)
             validPrimitive = true;
         else {
@@ -2627,10 +2629,10 @@ bool CSSParser::parseValue(CSSPropertyID propId, bool important)
             return false;
         }
         break;
-    case CSSPropertyWebkitTransformOrigin:
-    case CSSPropertyWebkitTransformOriginX:
-    case CSSPropertyWebkitTransformOriginY:
-    case CSSPropertyWebkitTransformOriginZ: {
+    case CSSPropertyTransformOrigin:
+    case CSSPropertyTransformOriginX:
+    case CSSPropertyTransformOriginY:
+    case CSSPropertyTransformOriginZ: {
         RefPtr<CSSValue> val1;
         RefPtr<CSSValue> val2;
         RefPtr<CSSValue> val3;
@@ -2645,7 +2647,7 @@ bool CSSParser::parseValue(CSSPropertyID propId, bool important)
         }
         return false;
     }
-    case CSSPropertyWebkitPerspective:
+    case CSSPropertyPerspective:
         if (id == CSSValueNone)
             validPrimitive = true;
         else {
@@ -2660,9 +2662,9 @@ bool CSSParser::parseValue(CSSPropertyID propId, bool important)
             }
         }
         break;
-    case CSSPropertyWebkitPerspectiveOrigin:
-    case CSSPropertyWebkitPerspectiveOriginX:
-    case CSSPropertyWebkitPerspectiveOriginY: {
+    case CSSPropertyPerspectiveOrigin:
+    case CSSPropertyPerspectiveOriginX:
+    case CSSPropertyPerspectiveOriginY: {
         RefPtr<CSSValue> val1;
         RefPtr<CSSValue> val2;
         CSSPropertyID propId1, propId2;
@@ -3149,6 +3151,7 @@ bool CSSParser::parseValue(CSSPropertyID propId, bool important)
     case CSSPropertyWebkitTextJustify:
 #endif // CSS3_TEXT
     case CSSPropertyWebkitTextSecurity:
+    case CSSPropertyTransformStyle:
     case CSSPropertyWebkitTransformStyle:
     case CSSPropertyWebkitUserDrag:
     case CSSPropertyWebkitUserModify:
@@ -9775,41 +9778,41 @@ bool CSSParser::parseTransformOrigin(CSSPropertyID propId, CSSPropertyID& propId
     propId1 = propId;
     propId2 = propId;
     propId3 = propId;
-    if (propId == CSSPropertyWebkitTransformOrigin) {
-        propId1 = CSSPropertyWebkitTransformOriginX;
-        propId2 = CSSPropertyWebkitTransformOriginY;
-        propId3 = CSSPropertyWebkitTransformOriginZ;
+    if (propId == CSSPropertyTransformOrigin) {
+        propId1 = CSSPropertyTransformOriginX;
+        propId2 = CSSPropertyTransformOriginY;
+        propId3 = CSSPropertyTransformOriginZ;
     }
 
     switch (propId) {
-        case CSSPropertyWebkitTransformOrigin:
-            if (!parseTransformOriginShorthand(value, value2, value3))
-                return false;
-            // parseTransformOriginShorthand advances the m_valueList pointer
-            break;
-        case CSSPropertyWebkitTransformOriginX: {
-            value = parsePositionX(*m_valueList);
-            if (value)
-                m_valueList->next();
-            break;
-        }
-        case CSSPropertyWebkitTransformOriginY: {
-            value = parsePositionY(*m_valueList);
-            if (value)
-                m_valueList->next();
-            break;
-        }
-        case CSSPropertyWebkitTransformOriginZ: {
-            ValueWithCalculation valueWithCalculation(*m_valueList->current());
-            if (validateUnit(valueWithCalculation, FLength))
-                value = createPrimitiveNumericValue(valueWithCalculation);
-            if (value)
-                m_valueList->next();
-            break;
-        }
-        default:
-            ASSERT_NOT_REACHED();
+    case CSSPropertyTransformOrigin:
+        if (!parseTransformOriginShorthand(value, value2, value3))
             return false;
+        // parseTransformOriginShorthand advances the m_valueList pointer
+        break;
+    case CSSPropertyTransformOriginX: {
+        value = parsePositionX(*m_valueList);
+        if (value)
+            m_valueList->next();
+        break;
+    }
+    case CSSPropertyTransformOriginY: {
+        value = parsePositionY(*m_valueList);
+        if (value)
+            m_valueList->next();
+        break;
+    }
+    case CSSPropertyTransformOriginZ: {
+        ValueWithCalculation valueWithCalculation(*m_valueList->current());
+        if (validateUnit(valueWithCalculation, FLength))
+            value = createPrimitiveNumericValue(valueWithCalculation);
+        if (value)
+            m_valueList->next();
+        break;
+    }
+    default:
+        ASSERT_NOT_REACHED();
+        return false;
     }
 
     return value;
@@ -9819,32 +9822,32 @@ bool CSSParser::parsePerspectiveOrigin(CSSPropertyID propId, CSSPropertyID& prop
 {
     propId1 = propId;
     propId2 = propId;
-    if (propId == CSSPropertyWebkitPerspectiveOrigin) {
-        propId1 = CSSPropertyWebkitPerspectiveOriginX;
-        propId2 = CSSPropertyWebkitPerspectiveOriginY;
+    if (propId == CSSPropertyPerspectiveOrigin) {
+        propId1 = CSSPropertyPerspectiveOriginX;
+        propId2 = CSSPropertyPerspectiveOriginY;
     }
 
     switch (propId) {
-        case CSSPropertyWebkitPerspectiveOrigin:
-            if (m_valueList->size() > 2)
-                return false;
-            parse2ValuesFillPosition(*m_valueList, value, value2);
-            break;
-        case CSSPropertyWebkitPerspectiveOriginX: {
-            value = parsePositionX(*m_valueList);
-            if (value)
-                m_valueList->next();
-            break;
-        }
-        case CSSPropertyWebkitPerspectiveOriginY: {
-            value = parsePositionY(*m_valueList);
-            if (value)
-                m_valueList->next();
-            break;
-        }
-        default:
-            ASSERT_NOT_REACHED();
+    case CSSPropertyPerspectiveOrigin:
+        if (m_valueList->size() > 2)
             return false;
+        parse2ValuesFillPosition(*m_valueList, value, value2);
+        break;
+    case CSSPropertyPerspectiveOriginX: {
+        value = parsePositionX(*m_valueList);
+        if (value)
+            m_valueList->next();
+        break;
+    }
+    case CSSPropertyPerspectiveOriginY: {
+        value = parsePositionY(*m_valueList);
+        if (value)
+            m_valueList->next();
+        break;
+    }
+    default:
+        ASSERT_NOT_REACHED();
+        return false;
     }
 
     return value;
index 03c8ee0..97b5e39 100644 (file)
@@ -556,10 +556,14 @@ order
 -webkit-padding-before [SkipBuilder]
 -webkit-padding-end [SkipBuilder]
 -webkit-padding-start [SkipBuilder]
--webkit-perspective [ConditionalConverter=Perspective]
--webkit-perspective-origin [Longhands=-webkit-perspective-origin-x|-webkit-perspective-origin-y]
--webkit-perspective-origin-x [Converter=Length]
--webkit-perspective-origin-y [Converter=Length]
+perspective [ConditionalConverter=Perspective]
+-webkit-perspective = perspective
+perspective-origin [Longhands=perspective-origin-x|perspective-origin-y]
+-webkit-perspective-origin = perspective-origin
+perspective-origin-x [Converter=Length]
+-webkit-perspective-origin-x = perspective-origin-x
+perspective-origin-y [Converter=Length]
+-webkit-perspective-origin-y = perspective-origin-y
 -webkit-print-color-adjust [Inherited]
 -webkit-rtl-ordering [Inherited, Setter=setRTLOrdering, Initial=initialRTLOrdering]
 #if defined(ENABLE_CSS_SCROLL_SNAP)
@@ -599,11 +603,18 @@ text-emphasis-style = -webkit-text-emphasis-style
 -webkit-text-stroke [Inherited, Longhands=-webkit-text-stroke-width|-webkit-text-stroke-color]
 -webkit-text-stroke-color [Inherited, VisitedLinkColorSupport, Initial=invalidColor]
 -webkit-text-stroke-width [Inherited, Converter=TextStrokeWidth]
--webkit-transform [Converter=Transform]
--webkit-transform-origin [Longhands=-webkit-transform-origin-x|-webkit-transform-origin-y|-webkit-transform-origin-z]
--webkit-transform-origin-x [Converter=Length]
--webkit-transform-origin-y [Converter=Length]
--webkit-transform-origin-z [Converter=ComputedLength<float>]
+transform [Converter=Transform]
+-webkit-transform = transform
+transform-origin [Longhands=transform-origin-x|transform-origin-y|transform-origin-z]
+-webkit-transform-origin = transform-origin
+transform-origin-x [Converter=Length]
+-webkit-transform-origin-x = transform-origin-x
+transform-origin-y [Converter=Length]
+-webkit-transform-origin-y = transform-origin-y
+transform-origin-z [Converter=ComputedLength<float>]
+-webkit-transform-origin-z = transform-origin-z
+transform-style [NameForMethods=TransformStyle3D]
+// Keeping -webkit-transform-style around is how we'll detect legacy content. At that point we'll have to add a custom builder and a new ETransformStyle3D type.
 -webkit-transform-style [NameForMethods=TransformStyle3D]
 -webkit-transition [Longhands=-webkit-transition-property|-webkit-transition-duration|-webkit-transition-timing-function|-webkit-transition-delay]
 -webkit-transition-delay [AnimationProperty, NameForMethods=Delay]
index 661d3f5..ce70707 100644 (file)
@@ -199,10 +199,10 @@ String StyleProperties::getPropertyValue(CSSPropertyID propertyID) const
         return getShorthandValue(webkitTextEmphasisShorthand());
     case CSSPropertyWebkitTextStroke:
         return getShorthandValue(webkitTextStrokeShorthand());
-    case CSSPropertyWebkitPerspectiveOrigin:
-        return getShorthandValue(webkitPerspectiveOriginShorthand());
-    case CSSPropertyWebkitTransformOrigin:
-        return getShorthandValue(webkitTransformOriginShorthand());
+    case CSSPropertyPerspectiveOrigin:
+        return getShorthandValue(perspectiveOriginShorthand());
+    case CSSPropertyTransformOrigin:
+        return getShorthandValue(transformOriginShorthand());
     case CSSPropertyWebkitTransition:
         return getLayeredShorthandValue(webkitTransitionShorthand());
     case CSSPropertyWebkitAnimation:
@@ -928,14 +928,14 @@ String StyleProperties::asText() const
         case CSSPropertyWebkitMaskOrigin:
             shorthandPropertyID = CSSPropertyWebkitMask;
             break;
-        case CSSPropertyWebkitPerspectiveOriginX:
-        case CSSPropertyWebkitPerspectiveOriginY:
-            shorthandPropertyID = CSSPropertyWebkitPerspectiveOrigin;
+        case CSSPropertyPerspectiveOriginX:
+        case CSSPropertyPerspectiveOriginY:
+            shorthandPropertyID = CSSPropertyPerspectiveOrigin;
             break;
-        case CSSPropertyWebkitTransformOriginX:
-        case CSSPropertyWebkitTransformOriginY:
-        case CSSPropertyWebkitTransformOriginZ:
-            shorthandPropertyID = CSSPropertyWebkitTransformOrigin;
+        case CSSPropertyTransformOriginX:
+        case CSSPropertyTransformOriginY:
+        case CSSPropertyTransformOriginZ:
+            shorthandPropertyID = CSSPropertyTransformOrigin;
             break;
         case CSSPropertyWebkitTransitionProperty:
         case CSSPropertyWebkitTransitionDuration:
index 2f7e271..0e6b2c6 100644 (file)
@@ -57,10 +57,10 @@ void WebKitCSSMatrix::setMatrixValue(const String& string, ExceptionCode& ec)
         return;
 
     RefPtr<MutableStyleProperties> styleDeclaration = MutableStyleProperties::create();
-    if (CSSParser::parseValue(styleDeclaration.get(), CSSPropertyWebkitTransform, string, true, CSSStrictMode, 0)) {
+    if (CSSParser::parseValue(styleDeclaration.get(), CSSPropertyTransform, string, true, CSSStrictMode, 0)) {
         // Convert to TransformOperations. This can fail if a property
         // requires style (i.e., param uses 'ems' or 'exs')
-        RefPtr<CSSValue> value = styleDeclaration->getPropertyCSSValue(CSSPropertyWebkitTransform);
+        RefPtr<CSSValue> value = styleDeclaration->getPropertyCSSValue(CSSPropertyTransform);
 
         // Check for a "none" or empty transform. In these cases we can use the default identity matrix.
         if (!value || (is<CSSPrimitiveValue>(*value) && downcast<CSSPrimitiveValue>(*value).getValueID() == CSSValueNone))
index cc5349a..5f2ea85 100644 (file)
@@ -221,7 +221,7 @@ void VTTCueBox::applyCSSProperties(const IntSize& videoSize)
         // of the way across the height of the video's rendering area, while
         // maintaining the relative positions of the boxes in boxes to each
         // other.
-        setInlineStyleProperty(CSSPropertyWebkitTransform,
+        setInlineStyleProperty(CSSPropertyTransform,
             String::format("translate(-%.2f%%, -%.2f%%)", position.first, position.second));
 
         setInlineStyleProperty(CSSPropertyWhiteSpace, CSSValuePre);
index c573686..74bd4ad 100644 (file)
@@ -425,7 +425,7 @@ bool AnimationControllerPrivate::computeExtentOfAnimation(RenderElement& rendere
     ASSERT(m_compositeAnimations.contains(&renderer));
 
     const CompositeAnimation& rendererAnimations = *m_compositeAnimations.get(&renderer);
-    if (!rendererAnimations.isAnimatingProperty(CSSPropertyWebkitTransform, false, AnimationBase::Running | AnimationBase::Paused))
+    if (!rendererAnimations.isAnimatingProperty(CSSPropertyTransform, false, AnimationBase::Running | AnimationBase::Paused))
         return true;
 
     return rendererAnimations.computeExtentOfTransformAnimation(bounds);
index 5fb8a57..bfd8105 100644 (file)
@@ -577,7 +577,7 @@ public:
 class PropertyWrapperAcceleratedTransform : public PropertyWrapper<const TransformOperations&> {
 public:
     PropertyWrapperAcceleratedTransform()
-        : PropertyWrapper<const TransformOperations&>(CSSPropertyWebkitTransform, &RenderStyle::transform, &RenderStyle::setTransform)
+        : PropertyWrapper<const TransformOperations&>(CSSPropertyTransform, &RenderStyle::transform, &RenderStyle::setTransform)
     {
     }
 
@@ -1237,12 +1237,12 @@ CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap()
         new LengthPropertyWrapper<Length>(CSSPropertyWordSpacing, &RenderStyle::wordSpacing, &RenderStyle::setWordSpacing),
         new LengthPropertyWrapper<Length>(CSSPropertyTextIndent, &RenderStyle::textIndent, &RenderStyle::setTextIndent),
 
-        new PropertyWrapper<float>(CSSPropertyWebkitPerspective, &RenderStyle::perspective, &RenderStyle::setPerspective),
-        new LengthPropertyWrapper<Length>(CSSPropertyWebkitPerspectiveOriginX, &RenderStyle::perspectiveOriginX, &RenderStyle::setPerspectiveOriginX),
-        new LengthPropertyWrapper<Length>(CSSPropertyWebkitPerspectiveOriginY, &RenderStyle::perspectiveOriginY, &RenderStyle::setPerspectiveOriginY),
-        new LengthPropertyWrapper<Length>(CSSPropertyWebkitTransformOriginX, &RenderStyle::transformOriginX, &RenderStyle::setTransformOriginX),
-        new LengthPropertyWrapper<Length>(CSSPropertyWebkitTransformOriginY, &RenderStyle::transformOriginY, &RenderStyle::setTransformOriginY),
-        new PropertyWrapper<float>(CSSPropertyWebkitTransformOriginZ, &RenderStyle::transformOriginZ, &RenderStyle::setTransformOriginZ),
+        new PropertyWrapper<float>(CSSPropertyPerspective, &RenderStyle::perspective, &RenderStyle::setPerspective),
+        new LengthPropertyWrapper<Length>(CSSPropertyPerspectiveOriginX, &RenderStyle::perspectiveOriginX, &RenderStyle::setPerspectiveOriginX),
+        new LengthPropertyWrapper<Length>(CSSPropertyPerspectiveOriginY, &RenderStyle::perspectiveOriginY, &RenderStyle::setPerspectiveOriginY),
+        new LengthPropertyWrapper<Length>(CSSPropertyTransformOriginX, &RenderStyle::transformOriginX, &RenderStyle::setTransformOriginX),
+        new LengthPropertyWrapper<Length>(CSSPropertyTransformOriginY, &RenderStyle::transformOriginY, &RenderStyle::setTransformOriginY),
+        new PropertyWrapper<float>(CSSPropertyTransformOriginZ, &RenderStyle::transformOriginZ, &RenderStyle::setTransformOriginZ),
         new LengthPropertyWrapper<LengthSize>(CSSPropertyBorderTopLeftRadius, &RenderStyle::borderTopLeftRadius, &RenderStyle::setBorderTopLeftRadius),
         new LengthPropertyWrapper<LengthSize>(CSSPropertyBorderTopRightRadius, &RenderStyle::borderTopRightRadius, &RenderStyle::setBorderTopRightRadius),
         new LengthPropertyWrapper<LengthSize>(CSSPropertyBorderBottomLeftRadius, &RenderStyle::borderBottomLeftRadius, &RenderStyle::setBorderBottomLeftRadius),
@@ -1327,7 +1327,7 @@ CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap()
         CSSPropertyWebkitTextStroke,
         CSSPropertyColumnRule,
         CSSPropertyWebkitBorderRadius,
-        CSSPropertyWebkitTransformOrigin
+        CSSPropertyTransformOrigin
     };
     const unsigned animatableShorthandPropertiesCount = WTF_ARRAY_LENGTH(animatableShorthandProperties);
 
index adcc451..c80c0ff 100644 (file)
@@ -424,7 +424,7 @@ bool CompositeAnimation::computeExtentOfTransformAnimation(LayoutRect& bounds) c
     
     for (auto& it : m_keyframeAnimations) {
         if (KeyframeAnimation* anim = it.value.get()) {
-            if (!anim->hasAnimationForProperty(CSSPropertyWebkitTransform))
+            if (!anim->hasAnimationForProperty(CSSPropertyTransform))
                 continue;
 
             if (seenTransformAnimation)
@@ -439,7 +439,7 @@ bool CompositeAnimation::computeExtentOfTransformAnimation(LayoutRect& bounds) c
 
     for (auto& it : m_transitions) {
         if (ImplicitAnimation* anim = it.value.get()) {
-            if (anim->animatingProperty() != CSSPropertyWebkitTransform || !anim->hasStyle())
+            if (anim->animatingProperty() != CSSPropertyTransform || !anim->hasStyle())
                 continue;
 
             if (seenTransformAnimation)
index f640940..84a24de 100644 (file)
@@ -107,7 +107,7 @@ bool ImplicitAnimation::computeExtentOfTransformAnimation(LayoutRect& bounds) co
     if (!is<RenderBox>(m_object))
         return true; // Non-boxes don't get transformed;
 
-    ASSERT(m_animatingProperty == CSSPropertyWebkitTransform);
+    ASSERT(m_animatingProperty == CSSPropertyTransform);
 
     RenderBox& box = downcast<RenderBox>(*m_object);
     FloatRect rendererBox = snapRectToDevicePixels(box.borderBoxRect(), box.document().deviceScaleFactor());
index 352e8a1..db6b378 100644 (file)
@@ -201,7 +201,7 @@ void KeyframeAnimation::getAnimatedStyle(RefPtr<RenderStyle>& animatedStyle)
 
 bool KeyframeAnimation::computeExtentOfTransformAnimation(LayoutRect& bounds) const
 {
-    ASSERT(m_keyframes.containsProperty(CSSPropertyWebkitTransform));
+    ASSERT(m_keyframes.containsProperty(CSSPropertyTransform));
 
     if (!is<RenderBox>(m_object))
         return true; // Non-boxes don't get transformed;
@@ -215,7 +215,7 @@ bool KeyframeAnimation::computeExtentOfTransformAnimation(LayoutRect& bounds) co
     for (size_t i = 0; i < numKeyframes; ++i) {
         const KeyframeValue& currKeyFrame = m_keyframes[i];
 
-        if (!currKeyFrame.containsProperty(CSSPropertyWebkitTransform))
+        if (!currKeyFrame.containsProperty(CSSPropertyTransform))
             continue;
 
         LayoutRect keyframeBounds = bounds;
@@ -359,7 +359,7 @@ void KeyframeAnimation::validateTransformFunctionList()
 {
     m_transformFunctionListValid = false;
     
-    if (m_keyframes.size() < 2 || !m_keyframes.containsProperty(CSSPropertyWebkitTransform))
+    if (m_keyframes.size() < 2 || !m_keyframes.containsProperty(CSSPropertyTransform))
         return;
 
     // Empty transforms match anything, so find the first non-empty entry as the reference
index 48c6f40..66c41f3 100644 (file)
@@ -551,7 +551,7 @@ static inline const TransformOperations& operationsAt(const KeyframeValueList& v
 
 int GraphicsLayer::validateTransformOperations(const KeyframeValueList& valueList, bool& hasBigRotation)
 {
-    ASSERT(valueList.property() == AnimatedPropertyWebkitTransform);
+    ASSERT(valueList.property() == AnimatedPropertyTransform);
 
     hasBigRotation = false;
     
index 71c8920..74f71ce 100644 (file)
@@ -52,7 +52,7 @@ typedef unsigned GraphicsLayerPaintingPhase;
 
 enum AnimatedPropertyID {
     AnimatedPropertyInvalid,
-    AnimatedPropertyWebkitTransform,
+    AnimatedPropertyTransform,
     AnimatedPropertyOpacity,
     AnimatedPropertyBackgroundColor,
     AnimatedPropertyWebkitFilter
index 528ecfe..b2c86ef 100644 (file)
@@ -232,7 +232,7 @@ static PlatformCAAnimation::ValueFunctionType getValueFunctionNameForTransformOp
 static String propertyIdToString(AnimatedPropertyID property)
 {
     switch (property) {
-    case AnimatedPropertyWebkitTransform:
+    case AnimatedPropertyTransform:
         return "transform";
     case AnimatedPropertyOpacity:
         return "opacity";
@@ -609,10 +609,10 @@ void GraphicsLayerCA::moveOrCopyAnimations(MoveOrCopy operation, PlatformCALayer
         for (size_t i = 0; i < numAnimations; ++i) {
             const LayerPropertyAnimation& currAnimation = propertyAnimations[i];
 
-            if (currAnimation.m_property == AnimatedPropertyWebkitTransform || currAnimation.m_property == AnimatedPropertyOpacity
-                    || currAnimation.m_property == AnimatedPropertyBackgroundColor
-                    || currAnimation.m_property == AnimatedPropertyWebkitFilter
-                )
+            if (currAnimation.m_property == AnimatedPropertyTransform
+                || currAnimation.m_property == AnimatedPropertyOpacity
+                || currAnimation.m_property == AnimatedPropertyBackgroundColor
+                || currAnimation.m_property == AnimatedPropertyWebkitFilter)
                 moveOrCopyLayerAnimation(operation, animationIdentifier(currAnimation.m_name, currAnimation.m_property, currAnimation.m_index, currAnimation.m_subIndex), fromLayer, toLayer);
         }
     }
@@ -884,7 +884,7 @@ bool GraphicsLayerCA::addAnimation(const KeyframeValueList& valueList, const Flo
         return false;
 
     bool createdAnimations = false;
-    if (valueList.property() == AnimatedPropertyWebkitTransform)
+    if (valueList.property() == AnimatedPropertyTransform)
         createdAnimations = createTransformAnimationsFromKeyframes(valueList, anim, animationName, timeOffset, boxSize);
     else if (valueList.property() == AnimatedPropertyWebkitFilter) {
         if (supportsAcceleratedFilterAnimations())
@@ -2407,7 +2407,7 @@ bool GraphicsLayerCA::isRunningTransformAnimation() const
         size_t numAnimations = propertyAnimations.size();
         for (size_t i = 0; i < numAnimations; ++i) {
             const LayerPropertyAnimation& currAnimation = propertyAnimations[i];
-            if (currAnimation.m_property == AnimatedPropertyWebkitTransform)
+            if (currAnimation.m_property == AnimatedPropertyTransform)
                 return true;
         }
     }
@@ -2531,7 +2531,7 @@ void GraphicsLayerCA::updateContentsNeedsDisplay()
 
 bool GraphicsLayerCA::createAnimationFromKeyframes(const KeyframeValueList& valueList, const Animation* animation, const String& animationName, double timeOffset)
 {
-    ASSERT(valueList.property() != AnimatedPropertyWebkitTransform && (!supportsAcceleratedFilterAnimations() || valueList.property() != AnimatedPropertyWebkitFilter));
+    ASSERT(valueList.property() != AnimatedPropertyTransform && (!supportsAcceleratedFilterAnimations() || valueList.property() != AnimatedPropertyWebkitFilter));
 
     bool isKeyframe = valueList.size() > 2;
     bool valuesOK;
@@ -2582,7 +2582,7 @@ bool GraphicsLayerCA::appendToUncommittedAnimations(const KeyframeValueList& val
 
 bool GraphicsLayerCA::createTransformAnimationsFromKeyframes(const KeyframeValueList& valueList, const Animation* animation, const String& animationName, double timeOffset, const FloatSize& boxSize)
 {
-    ASSERT(valueList.property() == AnimatedPropertyWebkitTransform);
+    ASSERT(valueList.property() == AnimatedPropertyTransform);
 
     bool hasBigRotation;
     int listIndex = validateTransformOperations(valueList, hasBigRotation);
index c24e780..2e7fc5d 100644 (file)
@@ -561,13 +561,13 @@ bool GraphicsLayerTextureMapper::addAnimation(const KeyframeValueList& valueList
 {
     ASSERT(!keyframesName.isEmpty());
 
-    if (!anim || anim->isEmptyOrZeroDuration() || valueList.size() < 2 || (valueList.property() != AnimatedPropertyWebkitTransform && valueList.property() != AnimatedPropertyOpacity))
+    if (!anim || anim->isEmptyOrZeroDuration() || valueList.size() < 2 || (valueList.property() != AnimatedPropertyTransform && valueList.property() != AnimatedPropertyOpacity))
         return false;
 
     bool listsMatch = false;
     bool hasBigRotation;
 
-    if (valueList.property() == AnimatedPropertyWebkitTransform)
+    if (valueList.property() == AnimatedPropertyTransform)
         listsMatch = validateTransformOperations(valueList, hasBigRotation) >= 0;
 
     const double currentTime = monotonicallyIncreasingTime();
index fb4a639..b09d8e4 100644 (file)
@@ -229,7 +229,7 @@ void TextureMapperAnimation::applyInternal(Client* client, const AnimationValue&
     case AnimatedPropertyOpacity:
         client->setAnimatedOpacity(applyOpacityAnimation((static_cast<const FloatAnimationValue&>(from).value()), (static_cast<const FloatAnimationValue&>(to).value()), progress));
         return;
-    case AnimatedPropertyWebkitTransform:
+    case AnimatedPropertyTransform:
         client->setAnimatedTransform(applyTransformAnimation(static_cast<const TransformAnimationValue&>(from).value(), static_cast<const TransformAnimationValue&>(to).value(), progress, m_boxSize, m_listsMatch));
         return;
     case AnimatedPropertyWebkitFilter:
index 604f7af..c864202 100644 (file)
@@ -656,7 +656,7 @@ void TextureMapperLayer::applyAnimationsRecursively()
 void TextureMapperLayer::syncAnimations()
 {
     m_animations.apply(this);
-    if (!m_animations.hasActiveAnimationsOfType(AnimatedPropertyWebkitTransform))
+    if (!m_animations.hasActiveAnimationsOfType(AnimatedPropertyTransform))
         m_currentTransform.setLocalTransform(m_state.transform);
     if (!m_animations.hasActiveAnimationsOfType(AnimatedPropertyOpacity))
         m_currentOpacity = m_state.opacity;
index e15d2da..bac207c 100644 (file)
@@ -1153,7 +1153,7 @@ bool CoordinatedGraphicsLayer::shouldHaveBackingStore() const
 
 bool CoordinatedGraphicsLayer::selfOrAncestorHasActiveTransformAnimation() const
 {
-    if (m_animations.hasActiveAnimationsOfType(AnimatedPropertyWebkitTransform))
+    if (m_animations.hasActiveAnimationsOfType(AnimatedPropertyTransform))
         return true;
 
     if (!parent())
@@ -1164,7 +1164,7 @@ bool CoordinatedGraphicsLayer::selfOrAncestorHasActiveTransformAnimation() const
 
 bool CoordinatedGraphicsLayer::selfOrAncestorHaveNonAffineTransforms()
 {
-    if (m_animations.hasActiveAnimationsOfType(AnimatedPropertyWebkitTransform))
+    if (m_animations.hasActiveAnimationsOfType(AnimatedPropertyTransform))
         return true;
 
     if (!m_layerTransform.combined().isAffine())
@@ -1180,13 +1180,13 @@ bool CoordinatedGraphicsLayer::addAnimation(const KeyframeValueList& valueList,
 {
     ASSERT(!keyframesName.isEmpty());
 
-    if (!anim || anim->isEmptyOrZeroDuration() || valueList.size() < 2 || (valueList.property() != AnimatedPropertyWebkitTransform && valueList.property() != AnimatedPropertyOpacity && valueList.property() != AnimatedPropertyWebkitFilter))
+    if (!anim || anim->isEmptyOrZeroDuration() || valueList.size() < 2 || (valueList.property() != AnimatedPropertyTransform && valueList.property() != AnimatedPropertyOpacity && valueList.property() != AnimatedPropertyWebkitFilter))
         return false;
 
     bool listsMatch = false;
     bool ignoredHasBigRotation;
 
-    if (valueList.property() == AnimatedPropertyWebkitTransform)
+    if (valueList.property() == AnimatedPropertyTransform)
         listsMatch = validateTransformOperations(valueList, ignoredHasBigRotation) >= 0;
 
     m_lastAnimationStartTime = monotonicallyIncreasingTime() - delayAsNegativeTimeOffset;
index db32a3f..a90a49e 100644 (file)
@@ -674,7 +674,7 @@ void RenderLayerBacking::updateGeometry()
 
     // Set transform property, if it is not animating. We have to do this here because the transform
     // is affected by the layer dimensions.
-    if (!renderer().animation().isRunningAcceleratedAnimationOnRenderer(renderer(), CSSPropertyWebkitTransform, AnimationBase::Running | AnimationBase::Paused | AnimationBase::FillingFowards))
+    if (!renderer().animation().isRunningAcceleratedAnimationOnRenderer(renderer(), CSSPropertyTransform, AnimationBase::Running | AnimationBase::Paused | AnimationBase::FillingFowards))
         updateTransform(style);
 
     // Set opacity, if it is not animating.
@@ -2443,13 +2443,13 @@ void RenderLayerBacking::verifyNotPainting()
 bool RenderLayerBacking::startAnimation(double timeOffset, const Animation* anim, const KeyframeList& keyframes)
 {
     bool hasOpacity = keyframes.containsProperty(CSSPropertyOpacity);
-    bool hasTransform = renderer().isBox() && keyframes.containsProperty(CSSPropertyWebkitTransform);
+    bool hasTransform = renderer().isBox() && keyframes.containsProperty(CSSPropertyTransform);
     bool hasFilter = keyframes.containsProperty(CSSPropertyWebkitFilter);
 
     if (!hasOpacity && !hasTransform && !hasFilter)
         return false;
     
-    KeyframeValueList transformVector(AnimatedPropertyWebkitTransform);
+    KeyframeValueList transformVector(AnimatedPropertyTransform);
     KeyframeValueList opacityVector(AnimatedPropertyOpacity);
     KeyframeValueList filterVector(AnimatedPropertyWebkitFilter);
 
@@ -2465,7 +2465,7 @@ bool RenderLayerBacking::startAnimation(double timeOffset, const Animation* anim
         TimingFunction* tf = currentKeyframe.timingFunction(keyframes.animationName());
         
         bool isFirstOrLastKeyframe = key == 0 || key == 1;
-        if ((hasTransform && isFirstOrLastKeyframe) || currentKeyframe.containsProperty(CSSPropertyWebkitTransform))
+        if ((hasTransform && isFirstOrLastKeyframe) || currentKeyframe.containsProperty(CSSPropertyTransform))
             transformVector.insert(std::make_unique<TransformAnimationValue>(key, keyframeStyle->transform(), tf));
 
         if ((hasOpacity && isFirstOrLastKeyframe) || currentKeyframe.containsProperty(CSSPropertyOpacity))
@@ -2523,13 +2523,13 @@ bool RenderLayerBacking::startTransition(double timeOffset, CSSPropertyID proper
         }
     }
 
-    if (property == CSSPropertyWebkitTransform && m_owningLayer.hasTransform()) {
-        const Animation* transformAnim = toStyle->transitionForProperty(CSSPropertyWebkitTransform);
+    if (property == CSSPropertyTransform && m_owningLayer.hasTransform()) {
+        const Animation* transformAnim = toStyle->transitionForProperty(CSSPropertyTransform);
         if (transformAnim && !transformAnim->isEmptyOrZeroDuration()) {
-            KeyframeValueList transformVector(AnimatedPropertyWebkitTransform);
+            KeyframeValueList transformVector(AnimatedPropertyTransform);
             transformVector.insert(std::make_unique<TransformAnimationValue>(0, fromStyle->transform()));
             transformVector.insert(std::make_unique<TransformAnimationValue>(1, toStyle->transform()));
-            if (m_graphicsLayer->addAnimation(transformVector, downcast<RenderBox>(renderer()).pixelSnappedBorderBoxRect().size(), transformAnim, GraphicsLayer::animationNameForTransition(AnimatedPropertyWebkitTransform), timeOffset)) {
+            if (m_graphicsLayer->addAnimation(transformVector, downcast<RenderBox>(renderer()).pixelSnappedBorderBoxRect().size(), transformAnim, GraphicsLayer::animationNameForTransition(AnimatedPropertyTransform), timeOffset)) {
                 // To ensure that the correct transform is visible when the animation ends, also set the final transform.
                 updateTransform(*toStyle);
                 didAnimate = true;
@@ -2626,20 +2626,20 @@ CSSPropertyID RenderLayerBacking::graphicsLayerToCSSProperty(AnimatedPropertyID
 {
     CSSPropertyID cssProperty = CSSPropertyInvalid;
     switch (property) {
-        case AnimatedPropertyWebkitTransform:
-            cssProperty = CSSPropertyWebkitTransform;
-            break;
-        case AnimatedPropertyOpacity:
-            cssProperty = CSSPropertyOpacity;
-            break;
-        case AnimatedPropertyBackgroundColor:
-            cssProperty = CSSPropertyBackgroundColor;
-            break;
-        case AnimatedPropertyWebkitFilter:
-            cssProperty = CSSPropertyWebkitFilter;
-            break;
-        case AnimatedPropertyInvalid:
-            ASSERT_NOT_REACHED();
+    case AnimatedPropertyTransform:
+        cssProperty = CSSPropertyTransform;
+        break;
+    case AnimatedPropertyOpacity:
+        cssProperty = CSSPropertyOpacity;
+        break;
+    case AnimatedPropertyBackgroundColor:
+        cssProperty = CSSPropertyBackgroundColor;
+        break;
+    case AnimatedPropertyWebkitFilter:
+        cssProperty = CSSPropertyWebkitFilter;
+        break;
+    case AnimatedPropertyInvalid:
+        ASSERT_NOT_REACHED();
     }
     return cssProperty;
 }
@@ -2647,17 +2647,17 @@ CSSPropertyID RenderLayerBacking::graphicsLayerToCSSProperty(AnimatedPropertyID
 AnimatedPropertyID RenderLayerBacking::cssToGraphicsLayerProperty(CSSPropertyID cssProperty)
 {
     switch (cssProperty) {
-        case CSSPropertyWebkitTransform:
-            return AnimatedPropertyWebkitTransform;
-        case CSSPropertyOpacity:
-            return AnimatedPropertyOpacity;
-        case CSSPropertyBackgroundColor:
-            return AnimatedPropertyBackgroundColor;
-        case CSSPropertyWebkitFilter:
-            return AnimatedPropertyWebkitFilter;
-        default:
-            // It's fine if we see other css properties here; they are just not accelerated.
-            break;
+    case CSSPropertyTransform:
+        return AnimatedPropertyTransform;
+    case CSSPropertyOpacity:
+        return AnimatedPropertyOpacity;
+    case CSSPropertyBackgroundColor:
+        return AnimatedPropertyBackgroundColor;
+    case CSSPropertyWebkitFilter:
+        return AnimatedPropertyWebkitFilter;
+    default:
+        // It's fine if we see other css properties here; they are just not accelerated.
+        break;
     }
     return AnimatedPropertyInvalid;
 }
index c4eec2c..e8d85dd 100644 (file)
@@ -2612,7 +2612,7 @@ bool RenderLayerCompositor::requiresCompositingForAnimation(RenderLayerModelObje
     return (animController.isRunningAnimationOnRenderer(renderer, CSSPropertyOpacity, activeAnimationState)
             && (inCompositingMode() || (m_compositingTriggers & ChromeClient::AnimatedOpacityTrigger)))
             || animController.isRunningAnimationOnRenderer(renderer, CSSPropertyWebkitFilter, activeAnimationState)
-            || animController.isRunningAnimationOnRenderer(renderer, CSSPropertyWebkitTransform, activeAnimationState);
+            || animController.isRunningAnimationOnRenderer(renderer, CSSPropertyTransform, activeAnimationState);
 }
 
 bool RenderLayerCompositor::requiresCompositingForIndirectReason(RenderLayerModelObject& renderer, bool hasCompositedDescendants, bool has3DTransformedDescendants, RenderLayer::IndirectCompositingReason& reason) const
@@ -2810,7 +2810,7 @@ bool RenderLayerCompositor::isRunningTransformAnimation(RenderLayerModelObject&
     if (!(m_compositingTriggers & ChromeClient::AnimationTrigger))
         return false;
 
-    return renderer.animation().isRunningAnimationOnRenderer(renderer, CSSPropertyWebkitTransform, AnimationBase::Running | AnimationBase::Paused);
+    return renderer.animation().isRunningAnimationOnRenderer(renderer, CSSPropertyTransform, AnimationBase::Running | AnimationBase::Paused);
 }
 
 // If an element has negative z-index children, those children render in front of the 
index 68b0324..ddb928d 100644 (file)
@@ -158,7 +158,7 @@ static NEVER_INLINE void populateAttributeNameToCSSPropertyIDMap(HashMap<AtomicS
 
     // FIXME: When CSS supports "transform-origin" this special case can be removed,
     // and we can add transform_originAttr to the table above instead.
-    map.add(transform_originAttr.localName().impl(), CSSPropertyWebkitTransformOrigin);
+    map.add(transform_originAttr.localName().impl(), CSSPropertyTransformOrigin);
 }
 
 static NEVER_INLINE void populateAttributeNameToAnimatedPropertyTypeMap(HashMap<QualifiedName::QualifiedNameImpl*, AnimatedPropertyType>& map)
index 79686fb..4587a49 100644 (file)
@@ -1,3 +1,16 @@
+2015-03-21  Dean Jackson  <dino@apple.com>
+
+        Remove the prefix for CSS Transforms
+        https://bugs.webkit.org/show_bug.cgi?id=142927
+        <rdar://problem/11568151>
+
+        Reviewed by Simon Fraser.
+
+        Rename AnimatedPropertyWebkitTransform to AnimatedPropertyTransform.
+
+        * Shared/CoordinatedGraphics/CoordinatedGraphicsArgumentCoders.cpp:
+        (IPC::ArgumentCoder<TextureMapperAnimation>::encode):
+
 2015-03-21  Csaba Osztrogon√°c  <ossy@webkit.org>
 
         [EFL][GTK] Make WebKit2's generate-forwarding-headers.pl less verbose
index 2d294f3..990bd51 100644 (file)
@@ -445,7 +445,7 @@ void ArgumentCoder<TextureMapperAnimation>::encode(ArgumentEncoder& encoder, con
         case AnimatedPropertyOpacity:
             encoder << static_cast<const FloatAnimationValue&>(value).value();
             break;
-        case AnimatedPropertyWebkitTransform:
+        case AnimatedPropertyTransform:
             encoder << static_cast<const TransformAnimationValue&>(value).value();
             break;
         case AnimatedPropertyWebkitFilter:
@@ -527,7 +527,7 @@ bool ArgumentCoder<TextureMapperAnimation>::decode(ArgumentDecoder& decoder, Tex
             keyframes.insert(std::make_unique<FloatAnimationValue>(keyTime, value, timingFunction.get()));
             break;
         }
-        case AnimatedPropertyWebkitTransform: {
+        case AnimatedPropertyTransform: {
             TransformOperations transform;
             if (!decoder.decode(transform))
                 return false;