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