| OLD | NEW |
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "cc/layer_tree_host.h" | 5 #include "cc/layer_tree_host.h" |
| 6 | 6 |
| 7 #include "cc/animation_curve.h" | 7 #include "cc/animation_curve.h" |
| 8 #include "cc/layer.h" | 8 #include "cc/layer.h" |
| 9 #include "cc/layer_animation_controller.h" | 9 #include "cc/layer_animation_controller.h" |
| 10 #include "cc/layer_impl.h" | 10 #include "cc/layer_impl.h" |
| (...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 241 virtual void beginTest() OVERRIDE { | 241 virtual void beginTest() OVERRIDE { |
| 242 postAddAnimationToMainThread(m_layerTreeHost->rootLayer()); | 242 postAddAnimationToMainThread(m_layerTreeHost->rootLayer()); |
| 243 } | 243 } |
| 244 | 244 |
| 245 virtual void animateLayers( | 245 virtual void animateLayers( |
| 246 LayerTreeHostImpl* host_impl, | 246 LayerTreeHostImpl* host_impl, |
| 247 base::TimeTicks monotonicTime, | 247 base::TimeTicks monotonicTime, |
| 248 bool hasUnfinishedAnimation) OVERRIDE { | 248 bool hasUnfinishedAnimation) OVERRIDE { |
| 249 LayerAnimationController* controller = | 249 LayerAnimationController* controller = |
| 250 m_layerTreeHost->rootLayer()->layerAnimationController(); | 250 m_layerTreeHost->rootLayer()->layerAnimationController(); |
| 251 ActiveAnimation* animation = | 251 Animation* animation = |
| 252 controller->getActiveAnimation(0, ActiveAnimation::Opacity); | 252 controller->getAnimation(0, Animation::Opacity); |
| 253 if (!animation) | 253 if (!animation) |
| 254 return; | 254 return; |
| 255 | 255 |
| 256 const FloatAnimationCurve* curve = | 256 const FloatAnimationCurve* curve = |
| 257 animation->curve()->toFloatAnimationCurve(); | 257 animation->curve()->toFloatAnimationCurve(); |
| 258 float startOpacity = curve->getValue(0); | 258 float startOpacity = curve->getValue(0); |
| 259 float endOpacity = curve->getValue(curve->duration()); | 259 float endOpacity = curve->getValue(curve->duration()); |
| 260 float linearly_interpolated_opacity = | 260 float linearly_interpolated_opacity = |
| 261 0.25 * endOpacity + 0.75 * startOpacity; | 261 0.25 * endOpacity + 0.75 * startOpacity; |
| 262 double time = curve->duration() * 0.25; | 262 double time = curve->duration() * 0.25; |
| 263 // If the linear timing function associated with this animation was not | 263 // If the linear timing function associated with this animation was not |
| 264 // picked up, then the linearly interpolated opacity would be different | 264 // picked up, then the linearly interpolated opacity would be different |
| 265 // because of the default ease timing function. | 265 // because of the default ease timing function. |
| 266 EXPECT_FLOAT_EQ(linearly_interpolated_opacity, curve->getValue(time)); | 266 EXPECT_FLOAT_EQ(linearly_interpolated_opacity, curve->getValue(time)); |
| 267 | 267 |
| 268 LayerAnimationController* controller_impl = | 268 LayerAnimationController* controller_impl = |
| 269 host_impl->rootLayer()->layerAnimationController(); | 269 host_impl->rootLayer()->layerAnimationController(); |
| 270 ActiveAnimation* animation_impl = | 270 Animation* animation_impl = |
| 271 controller_impl->getActiveAnimation(0, ActiveAnimation::Opacity); | 271 controller_impl->getAnimation(0, Animation::Opacity); |
| 272 | 272 |
| 273 controller->removeAnimation(animation->id()); | 273 controller->removeAnimation(animation->id()); |
| 274 controller_impl->removeAnimation(animation_impl->id()); | 274 controller_impl->removeAnimation(animation_impl->id()); |
| 275 endTest(); | 275 endTest(); |
| 276 } | 276 } |
| 277 | 277 |
| 278 virtual void afterTest() OVERRIDE {} | 278 virtual void afterTest() OVERRIDE {} |
| 279 }; | 279 }; |
| 280 | 280 |
| 281 SINGLE_AND_MULTI_THREAD_TEST_F( | 281 SINGLE_AND_MULTI_THREAD_TEST_F( |
| 282 LayerTreeHostAnimationTestAddAnimationWithTimingFunction) | 282 LayerTreeHostAnimationTestAddAnimationWithTimingFunction) |
| 283 | 283 |
| 284 // Ensures that main thread animations have their start times synchronized with | 284 // Ensures that main thread animations have their start times synchronized with |
| 285 // impl thread animations. | 285 // impl thread animations. |
| 286 class LayerTreeHostAnimationTestSynchronizeAnimationStartTimes : | 286 class LayerTreeHostAnimationTestSynchronizeAnimationStartTimes : |
| 287 public LayerTreeHostAnimationTest { | 287 public LayerTreeHostAnimationTest { |
| 288 public: | 288 public: |
| 289 LayerTreeHostAnimationTestSynchronizeAnimationStartTimes() | 289 LayerTreeHostAnimationTestSynchronizeAnimationStartTimes() |
| 290 : main_start_time_(-1), | 290 : main_start_time_(-1), |
| 291 impl_start_time_(-1) { | 291 impl_start_time_(-1) { |
| 292 } | 292 } |
| 293 | 293 |
| 294 virtual void beginTest() OVERRIDE { | 294 virtual void beginTest() OVERRIDE { |
| 295 postAddAnimationToMainThread(m_layerTreeHost->rootLayer()); | 295 postAddAnimationToMainThread(m_layerTreeHost->rootLayer()); |
| 296 } | 296 } |
| 297 | 297 |
| 298 virtual void notifyAnimationStarted(double time) OVERRIDE { | 298 virtual void notifyAnimationStarted(double time) OVERRIDE { |
| 299 LayerAnimationController* controller = | 299 LayerAnimationController* controller = |
| 300 m_layerTreeHost->rootLayer()->layerAnimationController(); | 300 m_layerTreeHost->rootLayer()->layerAnimationController(); |
| 301 ActiveAnimation* animation = | 301 Animation* animation = |
| 302 controller->getActiveAnimation(0, ActiveAnimation::Opacity); | 302 controller->getAnimation(0, Animation::Opacity); |
| 303 main_start_time_ = animation->startTime(); | 303 main_start_time_ = animation->startTime(); |
| 304 controller->removeAnimation(animation->id()); | 304 controller->removeAnimation(animation->id()); |
| 305 | 305 |
| 306 if (impl_start_time_ > 0) | 306 if (impl_start_time_ > 0) |
| 307 endTest(); | 307 endTest(); |
| 308 } | 308 } |
| 309 | 309 |
| 310 virtual void animateLayers( | 310 virtual void animateLayers( |
| 311 LayerTreeHostImpl* impl_host, | 311 LayerTreeHostImpl* impl_host, |
| 312 base::TimeTicks monotonicTime, | 312 base::TimeTicks monotonicTime, |
| 313 bool hasUnfinishedAnimation) OVERRIDE { | 313 bool hasUnfinishedAnimation) OVERRIDE { |
| 314 LayerAnimationController* controller = | 314 LayerAnimationController* controller = |
| 315 impl_host->rootLayer()->layerAnimationController(); | 315 impl_host->rootLayer()->layerAnimationController(); |
| 316 ActiveAnimation* animation = | 316 Animation* animation = |
| 317 controller->getActiveAnimation(0, ActiveAnimation::Opacity); | 317 controller->getAnimation(0, Animation::Opacity); |
| 318 if (!animation) | 318 if (!animation) |
| 319 return; | 319 return; |
| 320 | 320 |
| 321 impl_start_time_ = animation->startTime(); | 321 impl_start_time_ = animation->startTime(); |
| 322 controller->removeAnimation(animation->id()); | 322 controller->removeAnimation(animation->id()); |
| 323 | 323 |
| 324 if (main_start_time_ > 0) | 324 if (main_start_time_ > 0) |
| 325 endTest(); | 325 endTest(); |
| 326 } | 326 } |
| 327 | 327 |
| (...skipping 14 matching lines...) Expand all Loading... |
| 342 public: | 342 public: |
| 343 LayerTreeHostAnimationTestAnimationFinishedEvents() {} | 343 LayerTreeHostAnimationTestAnimationFinishedEvents() {} |
| 344 | 344 |
| 345 virtual void beginTest() OVERRIDE { | 345 virtual void beginTest() OVERRIDE { |
| 346 postAddInstantAnimationToMainThread(); | 346 postAddInstantAnimationToMainThread(); |
| 347 } | 347 } |
| 348 | 348 |
| 349 virtual void notifyAnimationFinished(double time) OVERRIDE { | 349 virtual void notifyAnimationFinished(double time) OVERRIDE { |
| 350 LayerAnimationController* controller = | 350 LayerAnimationController* controller = |
| 351 m_layerTreeHost->rootLayer()->layerAnimationController(); | 351 m_layerTreeHost->rootLayer()->layerAnimationController(); |
| 352 ActiveAnimation* animation = | 352 Animation* animation = |
| 353 controller->getActiveAnimation(0, ActiveAnimation::Opacity); | 353 controller->getAnimation(0, Animation::Opacity); |
| 354 controller->removeAnimation(animation->id()); | 354 controller->removeAnimation(animation->id()); |
| 355 endTest(); | 355 endTest(); |
| 356 } | 356 } |
| 357 | 357 |
| 358 virtual void afterTest() OVERRIDE {} | 358 virtual void afterTest() OVERRIDE {} |
| 359 }; | 359 }; |
| 360 | 360 |
| 361 SINGLE_AND_MULTI_THREAD_TEST_F( | 361 SINGLE_AND_MULTI_THREAD_TEST_F( |
| 362 LayerTreeHostAnimationTestAnimationFinishedEvents) | 362 LayerTreeHostAnimationTestAnimationFinishedEvents) |
| 363 | 363 |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 412 postSetNeedsCommitToMainThread(); | 412 postSetNeedsCommitToMainThread(); |
| 413 } | 413 } |
| 414 | 414 |
| 415 virtual void didCommit() OVERRIDE { | 415 virtual void didCommit() OVERRIDE { |
| 416 if (m_layerTreeHost->commitNumber() == 1) { | 416 if (m_layerTreeHost->commitNumber() == 1) { |
| 417 scoped_refptr<Layer> layer = Layer::create(); | 417 scoped_refptr<Layer> layer = Layer::create(); |
| 418 layer->setLayerAnimationDelegate(this); | 418 layer->setLayerAnimationDelegate(this); |
| 419 | 419 |
| 420 // Any valid AnimationCurve will do here. | 420 // Any valid AnimationCurve will do here. |
| 421 scoped_ptr<AnimationCurve> curve(EaseTimingFunction::create()); | 421 scoped_ptr<AnimationCurve> curve(EaseTimingFunction::create()); |
| 422 scoped_ptr<ActiveAnimation> animation( | 422 scoped_ptr<Animation> animation( |
| 423 ActiveAnimation::create(curve.Pass(), 1, 1, | 423 Animation::create(curve.Pass(), 1, 1, |
| 424 ActiveAnimation::Opacity)); | 424 Animation::Opacity)); |
| 425 layer->layerAnimationController()->addAnimation(animation.Pass()); | 425 layer->layerAnimationController()->addAnimation(animation.Pass()); |
| 426 | 426 |
| 427 // We add the animation *before* attaching the layer to the tree. | 427 // We add the animation *before* attaching the layer to the tree. |
| 428 m_layerTreeHost->rootLayer()->addChild(layer); | 428 m_layerTreeHost->rootLayer()->addChild(layer); |
| 429 } | 429 } |
| 430 } | 430 } |
| 431 | 431 |
| 432 virtual void animateLayers( | 432 virtual void animateLayers( |
| 433 LayerTreeHostImpl* impl_host, | 433 LayerTreeHostImpl* impl_host, |
| 434 base::TimeTicks monotonic_time, | 434 base::TimeTicks monotonic_time, |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 532 | 532 |
| 533 private: | 533 private: |
| 534 int num_commit_complete_; | 534 int num_commit_complete_; |
| 535 int num_draw_layers_; | 535 int num_draw_layers_; |
| 536 }; | 536 }; |
| 537 | 537 |
| 538 MULTI_THREAD_TEST_F(LayerTreeHostAnimationTestContinuousAnimate) | 538 MULTI_THREAD_TEST_F(LayerTreeHostAnimationTestContinuousAnimate) |
| 539 | 539 |
| 540 } // namespace | 540 } // namespace |
| 541 } // namespace cc | 541 } // namespace cc |
| OLD | NEW |