| Index: ui/compositor/layer_animator.cc
|
| diff --git a/ui/compositor/layer_animator.cc b/ui/compositor/layer_animator.cc
|
| index b3474964bcfeb46668c57344a8926907631d27b6..dd2ea4afaf7e5f52005b91bfe00aa0ca03ec3e1b 100644
|
| --- a/ui/compositor/layer_animator.cc
|
| +++ b/ui/compositor/layer_animator.cc
|
| @@ -139,9 +139,12 @@ void LayerAnimator::SwitchToLayer(scoped_refptr<cc::Layer> new_layer) {
|
| element_animations_state_ = nullptr;
|
|
|
| if (delegate_)
|
| - DetachLayerFromAnimationPlayer();
|
| - if (new_layer)
|
| - AttachLayerToAnimationPlayer(new_layer->id());
|
| + DetachElementFromAnimationPlayer();
|
| + if (new_layer) {
|
| + if (!new_layer->element_id())
|
| + new_layer->SetElementId(Layer::NextElementId());
|
| + AttachElementToAnimationPlayer(new_layer->element_id());
|
| + }
|
| }
|
|
|
| void LayerAnimator::SetCompositor(Compositor* compositor) {
|
| @@ -157,14 +160,14 @@ void LayerAnimator::SetCompositor(Compositor* compositor) {
|
| // AnimationHost::GetElementAnimationsForLayerId.
|
| if (element_animations_state_) {
|
| DCHECK_EQ(element_animations_state_->element_id(),
|
| - delegate_->GetCcLayer()->id());
|
| + delegate_->GetCcLayer()->element_id());
|
| timeline->animation_host()->RegisterElementAnimations(
|
| element_animations_state_.get());
|
| }
|
|
|
| timeline->AttachPlayer(animation_player_);
|
|
|
| - AttachLayerToAnimationPlayer(delegate_->GetCcLayer()->id());
|
| + AttachElementToAnimationPlayer(delegate_->GetCcLayer()->element_id());
|
|
|
| // Release ElementAnimations state.
|
| element_animations_state_ = nullptr;
|
| @@ -176,30 +179,33 @@ void LayerAnimator::ResetCompositor(Compositor* compositor) {
|
| cc::AnimationTimeline* timeline = compositor->GetAnimationTimeline();
|
| DCHECK(timeline);
|
|
|
| - const int layer_id = animation_player_->element_id();
|
| + const cc::ElementId element_id = animation_player_->element_id();
|
|
|
| // Store a reference to ElementAnimations (if any)
|
| // so it may be picked up in LayerAnimator::SetCompositor.
|
| - if (layer_id) {
|
| + if (element_id) {
|
| element_animations_state_ =
|
| - timeline->animation_host()->GetElementAnimationsForElementId(layer_id);
|
| + timeline->animation_host()->GetElementAnimationsForElementId(
|
| + element_id);
|
| }
|
|
|
| - DetachLayerFromAnimationPlayer();
|
| + DetachElementFromAnimationPlayer();
|
|
|
| timeline->DetachPlayer(animation_player_);
|
| }
|
|
|
| -void LayerAnimator::AttachLayerToAnimationPlayer(int layer_id) {
|
| +void LayerAnimator::AttachElementToAnimationPlayer(cc::ElementId element_id) {
|
| + DCHECK(element_id);
|
| +
|
| if (!animation_player_->element_id())
|
| - animation_player_->AttachElement(layer_id);
|
| + animation_player_->AttachElement(element_id);
|
| else
|
| - DCHECK_EQ(animation_player_->element_id(), layer_id);
|
| + DCHECK_EQ(animation_player_->element_id(), element_id);
|
|
|
| animation_player_->set_animation_delegate(this);
|
| }
|
|
|
| -void LayerAnimator::DetachLayerFromAnimationPlayer() {
|
| +void LayerAnimator::DetachElementFromAnimationPlayer() {
|
| animation_player_->set_animation_delegate(nullptr);
|
|
|
| if (animation_player_->element_id())
|
|
|