summaryrefslogtreecommitdiff
path: root/chromium/cc/animation/animation_registrar.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/cc/animation/animation_registrar.cc')
-rw-r--r--chromium/cc/animation/animation_registrar.cc57
1 files changed, 57 insertions, 0 deletions
diff --git a/chromium/cc/animation/animation_registrar.cc b/chromium/cc/animation/animation_registrar.cc
new file mode 100644
index 00000000000..05f522cbdce
--- /dev/null
+++ b/chromium/cc/animation/animation_registrar.cc
@@ -0,0 +1,57 @@
+// 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/animation_registrar.h"
+
+#include "cc/animation/layer_animation_controller.h"
+
+namespace cc {
+
+AnimationRegistrar::AnimationRegistrar() {}
+
+AnimationRegistrar::~AnimationRegistrar() {
+ AnimationControllerMap copy = all_animation_controllers_;
+ for (AnimationControllerMap::iterator iter = copy.begin();
+ iter != copy.end();
+ ++iter)
+ (*iter).second->SetAnimationRegistrar(NULL);
+}
+
+scoped_refptr<LayerAnimationController>
+AnimationRegistrar::GetAnimationControllerForId(int id) {
+ scoped_refptr<LayerAnimationController> to_return;
+ if (!ContainsKey(all_animation_controllers_, id)) {
+ to_return = LayerAnimationController::Create(id);
+ to_return->SetAnimationRegistrar(this);
+ all_animation_controllers_[id] = to_return.get();
+ } else {
+ to_return = all_animation_controllers_[id];
+ }
+ return to_return;
+}
+
+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