Index: cc/layers/layer.cc |
diff --git a/cc/layers/layer.cc b/cc/layers/layer.cc |
index 7ccd4a77d0124fba56dc9e76f3f915fe721450b4..0b277cda208954986977431786ee46fbdc1ce62f 100644 |
--- a/cc/layers/layer.cc |
+++ b/cc/layers/layer.cc |
@@ -55,7 +55,6 @@ Layer::Layer() |
raster_scale_(1.f), |
automatically_compute_raster_scale_(false), |
bounds_contain_page_scale_(false), |
- layer_animation_delegate_(NULL), |
layer_scroll_client_(NULL) { |
if (layer_id_ < 0) { |
s_next_layer_id = 1; |
@@ -63,8 +62,7 @@ Layer::Layer() |
} |
layer_animation_controller_ = LayerAnimationController::Create(layer_id_); |
- layer_animation_controller_->AddObserver(this); |
- AddLayerAnimationEventObserver(layer_animation_controller_.get()); |
+ layer_animation_controller_->AddValueObserver(this); |
} |
Layer::~Layer() { |
@@ -72,7 +70,7 @@ Layer::~Layer() { |
// way for us to be destroyed while we still have a parent. |
DCHECK(!parent()); |
- layer_animation_controller_->RemoveObserver(this); |
+ layer_animation_controller_->RemoveValueObserver(this); |
// Remove the parent reference from all children and dependents. |
RemoveAllChildren(); |
@@ -100,8 +98,10 @@ void Layer::SetLayerTreeHost(LayerTreeHost* host) { |
if (replica_layer_) |
replica_layer_->SetLayerTreeHost(host); |
- layer_animation_controller_->SetAnimationRegistrar( |
- host ? host->animation_registrar() : NULL); |
+ if (host) { |
+ layer_animation_controller_->SetAnimationRegistrar( |
+ host->animation_registrar()); |
+ } |
if (host && layer_animation_controller_->has_any_animation()) |
host->SetNeedsCommit(); |
@@ -744,6 +744,11 @@ void Layer::RemoveAnimation(int animation_id) { |
SetNeedsCommit(); |
} |
+void Layer::TransferAnimationsTo(Layer* layer) { |
+ layer_animation_controller_->TransferAnimationsTo( |
+ layer->layer_animation_controller()); |
+} |
+ |
void Layer::SuspendAnimations(double monotonic_time) { |
layer_animation_controller_->SuspendAnimations(monotonic_time); |
SetNeedsCommit(); |
@@ -754,62 +759,27 @@ void Layer::ResumeAnimations(double monotonic_time) { |
SetNeedsCommit(); |
} |
-void Layer::SetLayerAnimationController( |
+void Layer::SetLayerAnimationControllerForTest( |
scoped_refptr<LayerAnimationController> controller) { |
- RemoveLayerAnimationEventObserver(layer_animation_controller_.get()); |
- layer_animation_controller_->RemoveObserver(this); |
+ layer_animation_controller_->RemoveValueObserver(this); |
layer_animation_controller_ = controller; |
layer_animation_controller_->set_force_sync(); |
- layer_animation_controller_->AddObserver(this); |
- AddLayerAnimationEventObserver(layer_animation_controller_.get()); |
+ layer_animation_controller_->AddValueObserver(this); |
SetNeedsCommit(); |
} |
-scoped_refptr<LayerAnimationController> |
-Layer::ReleaseLayerAnimationController() { |
- layer_animation_controller_->RemoveObserver(this); |
- scoped_refptr<LayerAnimationController> to_return = |
- layer_animation_controller_; |
- layer_animation_controller_ = LayerAnimationController::Create(id()); |
- layer_animation_controller_->AddObserver(this); |
- layer_animation_controller_->SetAnimationRegistrar( |
- to_return->animation_registrar()); |
- return to_return; |
-} |
- |
bool Layer::HasActiveAnimation() const { |
return layer_animation_controller_->HasActiveAnimation(); |
} |
-void Layer::NotifyAnimationStarted(const AnimationEvent& event, |
- double wall_clock_time) { |
- FOR_EACH_OBSERVER(LayerAnimationEventObserver, layer_animation_observers_, |
- OnAnimationStarted(event)); |
- if (layer_animation_delegate_) |
- layer_animation_delegate_->notifyAnimationStarted(wall_clock_time); |
-} |
- |
-void Layer::NotifyAnimationFinished(double wall_clock_time) { |
- if (layer_animation_delegate_) |
- layer_animation_delegate_->notifyAnimationFinished(wall_clock_time); |
-} |
- |
-void Layer::NotifyAnimationPropertyUpdate(const AnimationEvent& event) { |
- if (event.target_property == Animation::Opacity) |
- SetOpacity(event.opacity); |
- else |
- SetTransform(event.transform); |
-} |
- |
void Layer::AddLayerAnimationEventObserver( |
LayerAnimationEventObserver* animation_observer) { |
- if (!layer_animation_observers_.HasObserver(animation_observer)) |
- layer_animation_observers_.AddObserver(animation_observer); |
+ layer_animation_controller_->AddEventObserver(animation_observer); |
} |
void Layer::RemoveLayerAnimationEventObserver( |
LayerAnimationEventObserver* animation_observer) { |
- layer_animation_observers_.RemoveObserver(animation_observer); |
+ layer_animation_controller_->RemoveEventObserver(animation_observer); |
} |
Region Layer::VisibleContentOpaqueRegion() const { |