layer_animator_test_controller.cc revision 5d1f7b1de12d16ceb2c938c56701a3e8bfa558f7
12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "cc/animation/animation.h" 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/compositor/layer_animation_sequence.h" 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/compositor/test/layer_animator_test_controller.h" 81e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "ui/gfx/frame_time.h" 91e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "ui/gfx/rect.h" 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace ui { 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)LayerAnimatorTestController::LayerAnimatorTestController( 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_refptr<LayerAnimator> animator) 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) : animator_(animator) { 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)LayerAnimatorTestController::~LayerAnimatorTestController() { 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)LayerAnimationSequence* LayerAnimatorTestController::GetRunningSequence( 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) LayerAnimationElement::AnimatableProperty property) { 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) LayerAnimator::RunningAnimation* running_animation = 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) animator_->GetRunningAnimation(property); 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (running_animation) 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return running_animation->sequence(); 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) else 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return NULL; 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void LayerAnimatorTestController::StartThreadedAnimationsIfNeeded() { 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::vector<cc::Animation::TargetProperty> threaded_properties; 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) threaded_properties.push_back(cc::Animation::Opacity); 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) threaded_properties.push_back(cc::Animation::Transform); 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) for (size_t i = 0; i < threaded_properties.size(); i++) { 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) LayerAnimationElement::AnimatableProperty animatable_property = 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) LayerAnimationElement::ToAnimatableProperty(threaded_properties[i]); 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) LayerAnimationSequence* sequence = GetRunningSequence(animatable_property); 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (!sequence) 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) continue; 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) LayerAnimationElement* element = sequence->CurrentElement(); 445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (!(element->properties() & animatable_property)) 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) continue; 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (!element->Started() || 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) element->effective_start_time() != base::TimeTicks()) 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) continue; 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) animator_->OnThreadedAnimationStarted(cc::AnimationEvent( 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cc::AnimationEvent::Started, 532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 0, 542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) element->animation_group_id(), 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) threaded_properties[i], 561e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) (gfx::FrameTime::Now() - base::TimeTicks()).InSecondsF())); 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace ui 61