Bug 1311620 - Part 9: Implement transform list addtion. r?boris.
MozReview-Commit-ID: 76b5eJ9FtWo
--- a/layout/style/StyleAnimationValue.cpp
+++ b/layout/style/StyleAnimationValue.cpp
@@ -774,16 +774,42 @@ StyleAnimationValue::Add(nsCSSPropertyID
switch (commonUnit) {
case eUnit_Color: {
RGBAColorData color1 = ExtractColor(result);
RGBAColorData color2 = ExtractColor(aA);
result.mValue.mCSSValue->SetRGBAColorValue(
AddWeightedColors(1.0, color1, 1, color2));
break;
}
+ case eUnit_Transform: {
+ // If |aA| is 'transform:none', don't concatinate anything, just return
+ // |aB| as the result.
+ if (aA.GetCSSValueSharedListValue()->mHead->mValue.GetUnit() ==
+ eCSSUnit_None) {
+ break;
+ }
+
+ UniquePtr<nsCSSValueList>
+ resultList(aA.GetCSSValueSharedListValue()->mHead->Clone());
+
+ // If |aB| is not 'transform:none', concatinate it to |aA|, then return
+ // the concatinated list.
+ if (result.GetCSSValueSharedListValue()->mHead->mValue.GetUnit() !=
+ eCSSUnit_None) {
+ nsCSSValueList* listA = resultList.get();
+ while (listA->mNext) {
+ listA = listA->mNext;
+ }
+
+ listA->mNext = result.GetCSSValueSharedListValue()->mHead->Clone();
+ }
+
+ result.SetTransformValue(new nsCSSValueSharedList(resultList.release()));
+ break;
+ }
default:
Unused << AddWeighted(aProperty,
1.0, result,
1, aA,
result);
break;
}
deleted file mode 100644
--- a/testing/web-platform/meta/web-animations/animation-model/animation-types/addition-per-property.html.ini
+++ /dev/null
@@ -1,20 +0,0 @@
-[addition-per-property.html]
- type: testharness
- [transform: scale]
- expected: FAIL
-
- [transform: skew]
- expected: FAIL
-
- [transform: rotate on translate]
- expected: FAIL
-
- [transform: translate on rotate]
- expected: FAIL
-
- [transform: matrix]
- expected: FAIL
-
- [transform: matrix3d]
- expected: FAIL
-