diff options
author | danakj@chromium.org <danakj@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-11-08 11:53:26 +0000 |
---|---|---|
committer | danakj@chromium.org <danakj@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-11-08 11:53:26 +0000 |
commit | 6a9cff9d269299bd3c1897d9d8c73cac25d8a588 (patch) | |
tree | 6d698f959963e5015ab0da7e69d836d7d3eeaa89 /cc/test | |
parent | d9feb04b5ee64242dfdd2e128cfe265805cdb3d1 (diff) | |
download | chromium_src-6a9cff9d269299bd3c1897d9d8c73cac25d8a588.zip chromium_src-6a9cff9d269299bd3c1897d9d8c73cac25d8a588.tar.gz chromium_src-6a9cff9d269299bd3c1897d9d8c73cac25d8a588.tar.bz2 |
cc: Do not save the rasterScale for layers until they are finished animating transforms.
Currently we save the rasterScale for a layer the first time we see it. However,
if the layer is animating, the value we save isn't very accurate. Instead, avoid
saving the value until the animation is complete.
Tests:
cc_unittests:LayerTreeHostCommonTest.verifyContentsScaleForAnimatingLayer
R=enne
BUG=159937
Review URL: https://chromiumcodereview.appspot.com/11362151
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@166660 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'cc/test')
-rw-r--r-- | cc/test/animation_test_common.cc | 41 | ||||
-rw-r--r-- | cc/test/animation_test_common.h | 12 |
2 files changed, 30 insertions, 23 deletions
diff --git a/cc/test/animation_test_common.cc b/cc/test/animation_test_common.cc index 5033377..9b8bff0 100644 --- a/cc/test/animation_test_common.cc +++ b/cc/test/animation_test_common.cc @@ -16,8 +16,10 @@ using namespace cc; namespace { +static int nextAnimationId = 0; + template <class Target> -void addOpacityTransition(Target& target, double duration, float startOpacity, float endOpacity, bool useTimingFunction) +int addOpacityTransition(Target& target, double duration, float startOpacity, float endOpacity, bool useTimingFunction) { scoped_ptr<KeyframedFloatAnimationCurve> curve(KeyframedFloatAnimationCurve::create()); @@ -28,16 +30,18 @@ void addOpacityTransition(Target& target, double duration, float startOpacity, f curve->addKeyframe(FloatKeyframe::create(0, startOpacity, func.Pass())); curve->addKeyframe(FloatKeyframe::create(duration, endOpacity, scoped_ptr<cc::TimingFunction>())); - scoped_ptr<ActiveAnimation> animation(ActiveAnimation::create(curve.PassAs<AnimationCurve>(), 0, 0, ActiveAnimation::Opacity)); + int id = nextAnimationId++; + + scoped_ptr<ActiveAnimation> animation(ActiveAnimation::create(curve.PassAs<AnimationCurve>(), id, 0, ActiveAnimation::Opacity)); animation->setNeedsSynchronizedStartTime(true); target.addAnimation(animation.Pass()); + return id; } template <class Target> -void addAnimatedTransform(Target& target, double duration, int deltaX, int deltaY) +int addAnimatedTransform(Target& target, double duration, int deltaX, int deltaY) { - static int id = 0; scoped_ptr<KeyframedTransformAnimationCurve> curve(KeyframedTransformAnimationCurve::create()); if (duration > 0) { @@ -50,10 +54,13 @@ void addAnimatedTransform(Target& target, double duration, int deltaX, int delta operations.appendTranslate(deltaX, deltaY, 0); curve->addKeyframe(TransformKeyframe::create(duration, operations, scoped_ptr<cc::TimingFunction>())); - scoped_ptr<ActiveAnimation> animation(ActiveAnimation::create(curve.PassAs<AnimationCurve>(), id++, 0, ActiveAnimation::Transform)); + int id = nextAnimationId++; + + scoped_ptr<ActiveAnimation> animation(ActiveAnimation::create(curve.PassAs<AnimationCurve>(), id, 0, ActiveAnimation::Transform)); animation->setNeedsSynchronizedStartTime(true); target.addAnimation(animation.Pass()); + return id; } } // namespace @@ -177,34 +184,34 @@ scoped_ptr<cc::AnimationCurve> FakeFloatTransition::clone() const return make_scoped_ptr(new FakeFloatTransition(*this)).PassAs<cc::AnimationCurve>(); } -void addOpacityTransitionToController(cc::LayerAnimationController& controller, double duration, float startOpacity, float endOpacity, bool useTimingFunction) +int addOpacityTransitionToController(cc::LayerAnimationController& controller, double duration, float startOpacity, float endOpacity, bool useTimingFunction) { - addOpacityTransition(controller, duration, startOpacity, endOpacity, useTimingFunction); + return addOpacityTransition(controller, duration, startOpacity, endOpacity, useTimingFunction); } -void addAnimatedTransformToController(cc::LayerAnimationController& controller, double duration, int deltaX, int deltaY) +int addAnimatedTransformToController(cc::LayerAnimationController& controller, double duration, int deltaX, int deltaY) { - addAnimatedTransform(controller, duration, deltaX, deltaY); + return addAnimatedTransform(controller, duration, deltaX, deltaY); } -void addOpacityTransitionToLayer(cc::Layer& layer, double duration, float startOpacity, float endOpacity, bool useTimingFunction) +int addOpacityTransitionToLayer(cc::Layer& layer, double duration, float startOpacity, float endOpacity, bool useTimingFunction) { - addOpacityTransition(layer, duration, startOpacity, endOpacity, useTimingFunction); + return addOpacityTransition(layer, duration, startOpacity, endOpacity, useTimingFunction); } -void addOpacityTransitionToLayer(cc::LayerImpl& layer, double duration, float startOpacity, float endOpacity, bool useTimingFunction) +int addOpacityTransitionToLayer(cc::LayerImpl& layer, double duration, float startOpacity, float endOpacity, bool useTimingFunction) { - addOpacityTransition(*layer.layerAnimationController(), duration, startOpacity, endOpacity, useTimingFunction); + return addOpacityTransition(*layer.layerAnimationController(), duration, startOpacity, endOpacity, useTimingFunction); } -void addAnimatedTransformToLayer(cc::Layer& layer, double duration, int deltaX, int deltaY) +int addAnimatedTransformToLayer(cc::Layer& layer, double duration, int deltaX, int deltaY) { - addAnimatedTransform(layer, duration, deltaX, deltaY); + return addAnimatedTransform(layer, duration, deltaX, deltaY); } -void addAnimatedTransformToLayer(cc::LayerImpl& layer, double duration, int deltaX, int deltaY) +int addAnimatedTransformToLayer(cc::LayerImpl& layer, double duration, int deltaX, int deltaY) { - addAnimatedTransform(*layer.layerAnimationController(), duration, deltaX, deltaY); + return addAnimatedTransform(*layer.layerAnimationController(), duration, deltaX, deltaY); } } // namespace WebKitTests diff --git a/cc/test/animation_test_common.h b/cc/test/animation_test_common.h index bdce62c..6839800 100644 --- a/cc/test/animation_test_common.h +++ b/cc/test/animation_test_common.h @@ -77,14 +77,14 @@ private: WebKit::WebTransformationMatrix m_transform; }; -void addOpacityTransitionToController(cc::LayerAnimationController&, double duration, float startOpacity, float endOpacity, bool useTimingFunction); -void addAnimatedTransformToController(cc::LayerAnimationController&, double duration, int deltaX, int deltaY); +int addOpacityTransitionToController(cc::LayerAnimationController&, double duration, float startOpacity, float endOpacity, bool useTimingFunction); +int addAnimatedTransformToController(cc::LayerAnimationController&, double duration, int deltaX, int deltaY); -void addOpacityTransitionToLayer(cc::Layer&, double duration, float startOpacity, float endOpacity, bool useTimingFunction); -void addOpacityTransitionToLayer(cc::LayerImpl&, double duration, float startOpacity, float endOpacity, bool useTimingFunction); +int addOpacityTransitionToLayer(cc::Layer&, double duration, float startOpacity, float endOpacity, bool useTimingFunction); +int addOpacityTransitionToLayer(cc::LayerImpl&, double duration, float startOpacity, float endOpacity, bool useTimingFunction); -void addAnimatedTransformToLayer(cc::Layer&, double duration, int deltaX, int deltaY); -void addAnimatedTransformToLayer(cc::LayerImpl&, double duration, int deltaX, int deltaY); +int addAnimatedTransformToLayer(cc::Layer&, double duration, int deltaX, int deltaY); +int addAnimatedTransformToLayer(cc::LayerImpl&, double duration, int deltaX, int deltaY); } // namespace WebKitTests |