layer_animator_test_controller.cc revision 2a99a7e74a7f215066514fe81d2bfa6639d9eddd
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" 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace ui { 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)LayerAnimatorTestController::LayerAnimatorTestController( 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_refptr<LayerAnimator> animator) 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) : animator_(animator) { 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)LayerAnimatorTestController::~LayerAnimatorTestController() { 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)LayerAnimationSequence* LayerAnimatorTestController::GetRunningSequence( 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) LayerAnimationElement::AnimatableProperty property) { 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) LayerAnimator::RunningAnimation* running_animation = 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) animator_->GetRunningAnimation(property); 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (running_animation) 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return running_animation->sequence(); 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) else 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return NULL; 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void LayerAnimatorTestController::StartThreadedAnimationsIfNeeded() { 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::vector<cc::Animation::TargetProperty> threaded_properties; 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) threaded_properties.push_back(cc::Animation::Opacity); 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) threaded_properties.push_back(cc::Animation::Transform); 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) for (size_t i = 0; i < threaded_properties.size(); i++) { 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) LayerAnimationElement::AnimatableProperty animatable_property = 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) LayerAnimationElement::ToAnimatableProperty(threaded_properties[i]); 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) LayerAnimationSequence* sequence = GetRunningSequence(animatable_property); 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (!sequence) 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) continue; 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) LayerAnimationElement* element = sequence->CurrentElement(); 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (element->properties().find(animatable_property) == 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) element->properties().end()) 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) continue; 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (!element->Started() || 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) element->effective_start_time() != base::TimeTicks()) 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) continue; 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) animator_->OnThreadedAnimationStarted(cc::AnimationEvent( 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cc::AnimationEvent::Started, 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 0, 532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) element->animation_group_id(), 542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) threaded_properties[i], 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) (base::TimeTicks::Now() - base::TimeTicks()).InSecondsF())); 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace ui 60