Index: cc/animation_registrar.cc |
diff --git a/cc/animation_registrar.cc b/cc/animation_registrar.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..5eb7a8191e5b08be4dae7d3f5d2716714bb1b2c1 |
--- /dev/null |
+++ b/cc/animation_registrar.cc |
@@ -0,0 +1,46 @@ |
+// Copyright 2012 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "cc/animation_registrar.h" |
+ |
+#include "cc/layer_animation_controller.h" |
+ |
+namespace cc { |
+ |
+AnimationRegistrar::AnimationRegistrar() { } |
+AnimationRegistrar::~AnimationRegistrar() { } |
+ |
+scoped_refptr<LayerAnimationController> |
+AnimationRegistrar::GetAnimationControllerForId(int id) |
+{ |
+ scoped_refptr<LayerAnimationController> toReturn; |
+ if (!ContainsKey(all_animation_controllers_, id)) { |
+ toReturn = LayerAnimationController::create(id); |
+ toReturn->setAnimationRegistrar(this); |
+ all_animation_controllers_[id] = toReturn.get(); |
+ } else |
+ toReturn = all_animation_controllers_[id]; |
+ return toReturn; |
+} |
+ |
+void AnimationRegistrar::DidActivateAnimationController(LayerAnimationController* controller) { |
+ active_animation_controllers_[controller->id()] = controller; |
+} |
+ |
+void AnimationRegistrar::DidDeactivateAnimationController(LayerAnimationController* controller) { |
+ if (ContainsKey(active_animation_controllers_, controller->id())) |
+ active_animation_controllers_.erase(controller->id()); |
+} |
+ |
+void AnimationRegistrar::RegisterAnimationController(LayerAnimationController* controller) { |
+ all_animation_controllers_[controller->id()] = controller; |
+} |
+ |
+void AnimationRegistrar::UnregisterAnimationController(LayerAnimationController* controller) { |
+ if (ContainsKey(all_animation_controllers_, controller->id())) |
+ all_animation_controllers_.erase(controller->id()); |
+ DidDeactivateAnimationController(controller); |
+} |
+ |
+} // namespace cc |