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 3// found in the LICENSE file. 4 5#include "cc/animation/animation_registrar.h" 6 7#include "cc/animation/layer_animation_controller.h" 8 9namespace cc { 10 11AnimationRegistrar::AnimationRegistrar() : supports_scroll_animations_(false) { 12} 13 14AnimationRegistrar::~AnimationRegistrar() { 15 AnimationControllerMap copy = all_animation_controllers_; 16 for (AnimationControllerMap::iterator iter = copy.begin(); 17 iter != copy.end(); 18 ++iter) 19 (*iter).second->SetAnimationRegistrar(NULL); 20} 21 22scoped_refptr<LayerAnimationController> 23AnimationRegistrar::GetAnimationControllerForId(int id) { 24 scoped_refptr<LayerAnimationController> to_return; 25 if (!ContainsKey(all_animation_controllers_, id)) { 26 to_return = LayerAnimationController::Create(id); 27 to_return->SetAnimationRegistrar(this); 28 all_animation_controllers_[id] = to_return.get(); 29 } else { 30 to_return = all_animation_controllers_[id]; 31 } 32 return to_return; 33} 34 35void AnimationRegistrar::DidActivateAnimationController( 36 LayerAnimationController* controller) { 37 active_animation_controllers_[controller->id()] = controller; 38} 39 40void AnimationRegistrar::DidDeactivateAnimationController( 41 LayerAnimationController* controller) { 42 if (ContainsKey(active_animation_controllers_, controller->id())) 43 active_animation_controllers_.erase(controller->id()); 44} 45 46void AnimationRegistrar::RegisterAnimationController( 47 LayerAnimationController* controller) { 48 all_animation_controllers_[controller->id()] = controller; 49} 50 51void AnimationRegistrar::UnregisterAnimationController( 52 LayerAnimationController* controller) { 53 if (ContainsKey(all_animation_controllers_, controller->id())) 54 all_animation_controllers_.erase(controller->id()); 55 DidDeactivateAnimationController(controller); 56} 57 58} // namespace cc 59