| OLD | NEW |
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "cc/trees/layer_tree_host.h" | 5 #include "cc/trees/layer_tree_host.h" |
| 6 | 6 |
| 7 #include <stdint.h> | 7 #include <stdint.h> |
| 8 | 8 |
| 9 #include "cc/animation/animation_curve.h" | 9 #include "cc/animation/animation_curve.h" |
| 10 #include "cc/animation/animation_host.h" | 10 #include "cc/animation/animation_host.h" |
| (...skipping 26 matching lines...) Expand all Loading... |
| 37 player_id_(AnimationIdProvider::NextPlayerId()), | 37 player_id_(AnimationIdProvider::NextPlayerId()), |
| 38 player_child_id_(AnimationIdProvider::NextPlayerId()) { | 38 player_child_id_(AnimationIdProvider::NextPlayerId()) { |
| 39 timeline_ = AnimationTimeline::Create(timeline_id_); | 39 timeline_ = AnimationTimeline::Create(timeline_id_); |
| 40 player_ = AnimationPlayer::Create(player_id_); | 40 player_ = AnimationPlayer::Create(player_id_); |
| 41 player_child_ = AnimationPlayer::Create(player_child_id_); | 41 player_child_ = AnimationPlayer::Create(player_child_id_); |
| 42 | 42 |
| 43 player_->set_animation_delegate(this); | 43 player_->set_animation_delegate(this); |
| 44 } | 44 } |
| 45 | 45 |
| 46 void AttachPlayersToTimeline() { | 46 void AttachPlayersToTimeline() { |
| 47 layer_tree_host()->animation_host()->AddAnimationTimeline(timeline_.get()); | 47 layer_tree()->animation_host()->AddAnimationTimeline(timeline_.get()); |
| 48 layer_tree_host()->SetElementIdsForTesting(); | 48 layer_tree()->SetElementIdsForTesting(); |
| 49 timeline_->AttachPlayer(player_.get()); | 49 timeline_->AttachPlayer(player_.get()); |
| 50 timeline_->AttachPlayer(player_child_.get()); | 50 timeline_->AttachPlayer(player_child_.get()); |
| 51 } | 51 } |
| 52 | 52 |
| 53 protected: | 53 protected: |
| 54 scoped_refptr<AnimationTimeline> timeline_; | 54 scoped_refptr<AnimationTimeline> timeline_; |
| 55 scoped_refptr<AnimationPlayer> player_; | 55 scoped_refptr<AnimationPlayer> player_; |
| 56 scoped_refptr<AnimationPlayer> player_child_; | 56 scoped_refptr<AnimationPlayer> player_child_; |
| 57 | 57 |
| 58 const int timeline_id_; | 58 const int timeline_id_; |
| (...skipping 720 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 779 // Allows NotifyAnimationTakeover to get called. | 779 // Allows NotifyAnimationTakeover to get called. |
| 780 player_child_->set_animation_delegate(this); | 780 player_child_->set_animation_delegate(this); |
| 781 } | 781 } |
| 782 | 782 |
| 783 void BeginTest() override { PostSetNeedsCommitToMainThread(); } | 783 void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
| 784 | 784 |
| 785 void DidCommit() override { | 785 void DidCommit() override { |
| 786 if (layer_tree_host()->source_frame_number() == 1) { | 786 if (layer_tree_host()->source_frame_number() == 1) { |
| 787 // Add an update after the first commit to trigger the animation takeover | 787 // Add an update after the first commit to trigger the animation takeover |
| 788 // path. | 788 // path. |
| 789 layer_tree_host() | 789 layer_tree() |
| 790 ->animation_host() | 790 ->animation_host() |
| 791 ->scroll_offset_animations() | 791 ->scroll_offset_animations() |
| 792 .AddTakeoverUpdate(scroll_layer_->element_id()); | 792 .AddTakeoverUpdate(scroll_layer_->element_id()); |
| 793 EXPECT_TRUE(layer_tree_host() | 793 EXPECT_TRUE(layer_tree() |
| 794 ->animation_host() | 794 ->animation_host() |
| 795 ->scroll_offset_animations() | 795 ->scroll_offset_animations() |
| 796 .HasUpdatesForTesting()); | 796 .HasUpdatesForTesting()); |
| 797 } | 797 } |
| 798 } | 798 } |
| 799 | 799 |
| 800 void WillCommitCompleteOnThread(LayerTreeHostImpl* host_impl) override { | 800 void WillCommitCompleteOnThread(LayerTreeHostImpl* host_impl) override { |
| 801 if (host_impl->sync_tree()->source_frame_number() == 0) { | 801 if (host_impl->sync_tree()->source_frame_number() == 0) { |
| 802 host_impl->animation_host()->ImplOnlyScrollAnimationCreate( | 802 host_impl->animation_host()->ImplOnlyScrollAnimationCreate( |
| 803 scroll_layer_->element_id(), gfx::ScrollOffset(650.f, 750.f), | 803 scroll_layer_->element_id(), gfx::ScrollOffset(650.f, 750.f), |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 840 AttachPlayersToTimeline(); | 840 AttachPlayersToTimeline(); |
| 841 player_child_->AttachElement(scroll_layer_->element_id()); | 841 player_child_->AttachElement(scroll_layer_->element_id()); |
| 842 } | 842 } |
| 843 | 843 |
| 844 void BeginTest() override { PostSetNeedsCommitToMainThread(); } | 844 void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
| 845 | 845 |
| 846 void DidCommit() override { | 846 void DidCommit() override { |
| 847 if (layer_tree_host()->source_frame_number() == 1) { | 847 if (layer_tree_host()->source_frame_number() == 1) { |
| 848 // Add an update after the first commit to trigger the animation update | 848 // Add an update after the first commit to trigger the animation update |
| 849 // path. | 849 // path. |
| 850 layer_tree_host() | 850 layer_tree() |
| 851 ->animation_host() | 851 ->animation_host() |
| 852 ->scroll_offset_animations() | 852 ->scroll_offset_animations() |
| 853 .AddAdjustmentUpdate(scroll_layer_->element_id(), | 853 .AddAdjustmentUpdate(scroll_layer_->element_id(), |
| 854 gfx::Vector2dF(100.f, 100.f)); | 854 gfx::Vector2dF(100.f, 100.f)); |
| 855 EXPECT_TRUE(layer_tree_host() | 855 EXPECT_TRUE(layer_tree() |
| 856 ->animation_host() | 856 ->animation_host() |
| 857 ->scroll_offset_animations() | 857 ->scroll_offset_animations() |
| 858 .HasUpdatesForTesting()); | 858 .HasUpdatesForTesting()); |
| 859 } else if (layer_tree_host()->source_frame_number() == 2) { | 859 } else if (layer_tree_host()->source_frame_number() == 2) { |
| 860 // Verify that the update queue is cleared after the update is applied. | 860 // Verify that the update queue is cleared after the update is applied. |
| 861 EXPECT_FALSE(layer_tree_host() | 861 EXPECT_FALSE(layer_tree() |
| 862 ->animation_host() | 862 ->animation_host() |
| 863 ->scroll_offset_animations() | 863 ->scroll_offset_animations() |
| 864 .HasUpdatesForTesting()); | 864 .HasUpdatesForTesting()); |
| 865 } | 865 } |
| 866 } | 866 } |
| 867 | 867 |
| 868 void BeginCommitOnThread(LayerTreeHostImpl* host_impl) override { | 868 void BeginCommitOnThread(LayerTreeHostImpl* host_impl) override { |
| 869 // Note that the frame number gets incremented after BeginCommitOnThread but | 869 // Note that the frame number gets incremented after BeginCommitOnThread but |
| 870 // before WillCommitCompleteOnThread and CommitCompleteOnThread. | 870 // before WillCommitCompleteOnThread and CommitCompleteOnThread. |
| 871 if (host_impl->sync_tree()->source_frame_number() == 0) { | 871 if (host_impl->sync_tree()->source_frame_number() == 0) { |
| (...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1062 void DidCommit() override { | 1062 void DidCommit() override { |
| 1063 if (layer_tree_host()->source_frame_number() == 1) { | 1063 if (layer_tree_host()->source_frame_number() == 1) { |
| 1064 player_->AttachElement(layer_tree_host()->root_layer()->element_id()); | 1064 player_->AttachElement(layer_tree_host()->root_layer()->element_id()); |
| 1065 AddAnimatedTransformToPlayer(player_.get(), 4, 1, 1); | 1065 AddAnimatedTransformToPlayer(player_.get(), 4, 1, 1); |
| 1066 } else if (layer_tree_host()->source_frame_number() == 2) { | 1066 } else if (layer_tree_host()->source_frame_number() == 2) { |
| 1067 AddOpacityTransitionToPlayer(player_.get(), 1, 0.f, 0.5f, true); | 1067 AddOpacityTransitionToPlayer(player_.get(), 1, 0.f, 0.5f, true); |
| 1068 | 1068 |
| 1069 scoped_refptr<Layer> layer = Layer::Create(); | 1069 scoped_refptr<Layer> layer = Layer::Create(); |
| 1070 layer_tree_host()->root_layer()->AddChild(layer); | 1070 layer_tree_host()->root_layer()->AddChild(layer); |
| 1071 | 1071 |
| 1072 layer_tree_host()->SetElementIdsForTesting(); | 1072 layer_tree()->SetElementIdsForTesting(); |
| 1073 layer->SetBounds(gfx::Size(4, 4)); | 1073 layer->SetBounds(gfx::Size(4, 4)); |
| 1074 | 1074 |
| 1075 player_child_->AttachElement(layer->element_id()); | 1075 player_child_->AttachElement(layer->element_id()); |
| 1076 player_child_->set_animation_delegate(this); | 1076 player_child_->set_animation_delegate(this); |
| 1077 AddOpacityTransitionToPlayer(player_child_.get(), 1, 0.f, 0.5f, true); | 1077 AddOpacityTransitionToPlayer(player_child_.get(), 1, 0.f, 0.5f, true); |
| 1078 } | 1078 } |
| 1079 } | 1079 } |
| 1080 | 1080 |
| 1081 void BeginCommitOnThread(LayerTreeHostImpl* host_impl) override { | 1081 void BeginCommitOnThread(LayerTreeHostImpl* host_impl) override { |
| 1082 host_impl->BlockNotifyReadyToActivateForTesting(true); | 1082 host_impl->BlockNotifyReadyToActivateForTesting(true); |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1153 | 1153 |
| 1154 layer_ = FakePictureLayer::Create(&client_); | 1154 layer_ = FakePictureLayer::Create(&client_); |
| 1155 layer_->SetBounds(gfx::Size(2, 2)); | 1155 layer_->SetBounds(gfx::Size(2, 2)); |
| 1156 client_.set_bounds(layer_->bounds()); | 1156 client_.set_bounds(layer_->bounds()); |
| 1157 // Transform the layer to 4,4 to start. | 1157 // Transform the layer to 4,4 to start. |
| 1158 gfx::Transform start_transform; | 1158 gfx::Transform start_transform; |
| 1159 start_transform.Translate(4.0, 4.0); | 1159 start_transform.Translate(4.0, 4.0); |
| 1160 layer_->SetTransform(start_transform); | 1160 layer_->SetTransform(start_transform); |
| 1161 | 1161 |
| 1162 layer_tree_host()->root_layer()->AddChild(layer_); | 1162 layer_tree_host()->root_layer()->AddChild(layer_); |
| 1163 layer_tree_host()->SetElementIdsForTesting(); | 1163 layer_tree()->SetElementIdsForTesting(); |
| 1164 | 1164 |
| 1165 player_->AttachElement(layer_->element_id()); | 1165 player_->AttachElement(layer_->element_id()); |
| 1166 | 1166 |
| 1167 AttachPlayersToTimeline(); | 1167 AttachPlayersToTimeline(); |
| 1168 } | 1168 } |
| 1169 | 1169 |
| 1170 void BeginTest() override { | 1170 void BeginTest() override { |
| 1171 // Add a translate from 6,7 to 8,9. | 1171 // Add a translate from 6,7 to 8,9. |
| 1172 TransformOperations start; | 1172 TransformOperations start; |
| 1173 start.AppendTranslate(6.f, 7.f, 0.f); | 1173 start.AppendTranslate(6.f, 7.f, 0.f); |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1225 // the animation should resume. | 1225 // the animation should resume. |
| 1226 class LayerTreeHostAnimationTestAnimatedLayerRemovedAndAdded | 1226 class LayerTreeHostAnimationTestAnimatedLayerRemovedAndAdded |
| 1227 : public LayerTreeHostAnimationTest { | 1227 : public LayerTreeHostAnimationTest { |
| 1228 public: | 1228 public: |
| 1229 void SetupTree() override { | 1229 void SetupTree() override { |
| 1230 LayerTreeHostAnimationTest::SetupTree(); | 1230 LayerTreeHostAnimationTest::SetupTree(); |
| 1231 layer_ = Layer::Create(); | 1231 layer_ = Layer::Create(); |
| 1232 layer_->SetBounds(gfx::Size(4, 4)); | 1232 layer_->SetBounds(gfx::Size(4, 4)); |
| 1233 layer_tree_host()->root_layer()->AddChild(layer_); | 1233 layer_tree_host()->root_layer()->AddChild(layer_); |
| 1234 | 1234 |
| 1235 layer_tree_host()->SetElementIdsForTesting(); | 1235 layer_tree()->SetElementIdsForTesting(); |
| 1236 | 1236 |
| 1237 layer_tree_host()->animation_host()->AddAnimationTimeline(timeline_.get()); | 1237 layer_tree()->animation_host()->AddAnimationTimeline(timeline_.get()); |
| 1238 timeline_->AttachPlayer(player_.get()); | 1238 timeline_->AttachPlayer(player_.get()); |
| 1239 player_->AttachElement(layer_->element_id()); | 1239 player_->AttachElement(layer_->element_id()); |
| 1240 DCHECK(player_->element_animations()); | 1240 DCHECK(player_->element_animations()); |
| 1241 | 1241 |
| 1242 AddOpacityTransitionToPlayer(player_.get(), 10000.0, 0.1f, 0.9f, true); | 1242 AddOpacityTransitionToPlayer(player_.get(), 10000.0, 0.1f, 0.9f, true); |
| 1243 } | 1243 } |
| 1244 | 1244 |
| 1245 void BeginTest() override { PostSetNeedsCommitToMainThread(); } | 1245 void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
| 1246 | 1246 |
| 1247 void DidCommit() override { | 1247 void DidCommit() override { |
| 1248 switch (layer_tree_host()->source_frame_number()) { | 1248 switch (layer_tree_host()->source_frame_number()) { |
| 1249 case 0: | 1249 case 0: |
| 1250 EXPECT_TRUE( | 1250 EXPECT_TRUE( |
| 1251 player_->element_animations()->has_element_in_active_list()); | 1251 player_->element_animations()->has_element_in_active_list()); |
| 1252 EXPECT_FALSE( | 1252 EXPECT_FALSE( |
| 1253 player_->element_animations()->has_element_in_pending_list()); | 1253 player_->element_animations()->has_element_in_pending_list()); |
| 1254 EXPECT_TRUE(layer_tree_host()->animation_host()->NeedsAnimateLayers()); | 1254 EXPECT_TRUE(layer_tree()->animation_host()->NeedsAnimateLayers()); |
| 1255 break; | 1255 break; |
| 1256 case 1: | 1256 case 1: |
| 1257 layer_->RemoveFromParent(); | 1257 layer_->RemoveFromParent(); |
| 1258 EXPECT_FALSE( | 1258 EXPECT_FALSE( |
| 1259 player_->element_animations()->has_element_in_active_list()); | 1259 player_->element_animations()->has_element_in_active_list()); |
| 1260 EXPECT_FALSE( | 1260 EXPECT_FALSE( |
| 1261 player_->element_animations()->has_element_in_pending_list()); | 1261 player_->element_animations()->has_element_in_pending_list()); |
| 1262 EXPECT_FALSE(layer_tree_host()->animation_host()->NeedsAnimateLayers()); | 1262 EXPECT_FALSE(layer_tree()->animation_host()->NeedsAnimateLayers()); |
| 1263 break; | 1263 break; |
| 1264 case 2: | 1264 case 2: |
| 1265 layer_tree_host()->root_layer()->AddChild(layer_); | 1265 layer_tree_host()->root_layer()->AddChild(layer_); |
| 1266 EXPECT_TRUE( | 1266 EXPECT_TRUE( |
| 1267 player_->element_animations()->has_element_in_active_list()); | 1267 player_->element_animations()->has_element_in_active_list()); |
| 1268 EXPECT_FALSE( | 1268 EXPECT_FALSE( |
| 1269 player_->element_animations()->has_element_in_pending_list()); | 1269 player_->element_animations()->has_element_in_pending_list()); |
| 1270 EXPECT_TRUE(layer_tree_host()->animation_host()->NeedsAnimateLayers()); | 1270 EXPECT_TRUE(layer_tree()->animation_host()->NeedsAnimateLayers()); |
| 1271 break; | 1271 break; |
| 1272 } | 1272 } |
| 1273 } | 1273 } |
| 1274 | 1274 |
| 1275 void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) override { | 1275 void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) override { |
| 1276 scoped_refptr<AnimationTimeline> timeline_impl = | 1276 scoped_refptr<AnimationTimeline> timeline_impl = |
| 1277 host_impl->animation_host()->GetTimelineById(timeline_id_); | 1277 host_impl->animation_host()->GetTimelineById(timeline_id_); |
| 1278 scoped_refptr<AnimationPlayer> player_impl = | 1278 scoped_refptr<AnimationPlayer> player_impl = |
| 1279 timeline_impl->GetPlayerById(player_id_); | 1279 timeline_impl->GetPlayerById(player_id_); |
| 1280 | 1280 |
| (...skipping 576 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1857 private: | 1857 private: |
| 1858 scoped_refptr<Layer> layer_; | 1858 scoped_refptr<Layer> layer_; |
| 1859 FakeContentLayerClient client_; | 1859 FakeContentLayerClient client_; |
| 1860 }; | 1860 }; |
| 1861 | 1861 |
| 1862 MULTI_THREAD_TEST_F( | 1862 MULTI_THREAD_TEST_F( |
| 1863 LayerTreeHostAnimationTestRebuildPropertyTreesOnAnimationSetNeedsCommit); | 1863 LayerTreeHostAnimationTestRebuildPropertyTreesOnAnimationSetNeedsCommit); |
| 1864 | 1864 |
| 1865 } // namespace | 1865 } // namespace |
| 1866 } // namespace cc | 1866 } // namespace cc |
| OLD | NEW |