diff options
Diffstat (limited to 'chromium/cc/animation/animation_registrar.cc')
-rw-r--r-- | chromium/cc/animation/animation_registrar.cc | 57 |
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 |