Bug 1335942 - Part 6: Implement GetScaleValue for RawServoAnimationValue.
MozReview-Commit-ID: GnaS44gWmm2
--- a/layout/style/StyleAnimationValue.cpp
+++ b/layout/style/StyleAnimationValue.cpp
@@ -9,17 +9,16 @@
#include "mozilla/ArrayUtils.h"
#include "mozilla/MathAlgorithms.h"
#include "mozilla/RuleNodeCacheConditions.h"
#include "mozilla/StyleAnimationValue.h"
#include "mozilla/StyleSetHandle.h"
#include "mozilla/StyleSetHandleInlines.h"
#include "mozilla/Tuple.h"
#include "mozilla/UniquePtr.h"
-#include "nsStyleTransformMatrix.h"
#include "nsAutoPtr.h"
#include "nsCOMArray.h"
#include "nsIStyleRule.h"
#include "mozilla/css/StyleRule.h"
#include "nsString.h"
#include "nsStyleContext.h"
#include "nsStyleSet.h"
#include "nsComputedDOMStyle.h"
--- a/layout/style/StyleAnimationValue.h
+++ b/layout/style/StyleAnimationValue.h
@@ -13,16 +13,17 @@
#include "mozilla/UniquePtr.h"
#include "nsStringFwd.h"
#include "nsStringBuffer.h"
#include "nsCoord.h"
#include "nsColor.h"
#include "nsCSSProps.h"
#include "nsCSSValue.h"
#include "nsStyleCoord.h"
+#include "nsStyleTransformMatrix.h"
#include "ServoBindings.h"
class nsIFrame;
class nsStyleContext;
class gfx3DMatrix;
struct RawServoDeclarationBlock;
namespace mozilla {
@@ -598,17 +599,21 @@ struct AnimationValue
float GetOpacity() const {
return mServo ? Servo_AnimationValues_GetOpacity(mServo)
: mGecko.GetFloatValue();
}
// Returns the scale for mGecko or mServo, which are calculated with
// reference to aFrame.
gfxSize GetScaleValue(const nsIFrame* aFrame) const {
- // TODO: GetScaleValue for mServo.
+ if (mServo) {
+ RefPtr<nsCSSValueSharedList> list;
+ Servo_AnimationValues_GetTransform(mServo, &list);
+ return nsStyleTransformMatrix::GetScaleValue(list, aFrame);
+ }
return mGecko.GetScaleValue(aFrame);
}
};
struct PropertyStyleAnimationValuePair
{
nsCSSPropertyID mProperty;
AnimationValue mValue;