OLD | NEW |
1 // Copyright 2011 The Chromium Authors. All rights reserved. | 1 // Copyright 2011 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/layers/layer.h" | 5 #include "cc/layers/layer.h" |
6 | 6 |
7 #include "base/thread_task_runner_handle.h" | 7 #include "base/thread_task_runner_handle.h" |
8 #include "cc/animation/keyframed_animation_curve.h" | 8 #include "cc/animation/keyframed_animation_curve.h" |
9 #include "cc/base/math_util.h" | 9 #include "cc/base/math_util.h" |
10 #include "cc/layers/layer_impl.h" | 10 #include "cc/layers/layer_impl.h" |
(...skipping 1135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1146 layer_tree_host->SetRootLayer(root); | 1146 layer_tree_host->SetRootLayer(root); |
1147 } | 1147 } |
1148 | 1148 |
1149 static bool AddTestAnimation(Layer* layer) { | 1149 static bool AddTestAnimation(Layer* layer) { |
1150 scoped_ptr<KeyframedFloatAnimationCurve> curve = | 1150 scoped_ptr<KeyframedFloatAnimationCurve> curve = |
1151 KeyframedFloatAnimationCurve::Create(); | 1151 KeyframedFloatAnimationCurve::Create(); |
1152 curve->AddKeyframe(FloatKeyframe::Create(base::TimeDelta(), 0.3f, nullptr)); | 1152 curve->AddKeyframe(FloatKeyframe::Create(base::TimeDelta(), 0.3f, nullptr)); |
1153 curve->AddKeyframe( | 1153 curve->AddKeyframe( |
1154 FloatKeyframe::Create(base::TimeDelta::FromSecondsD(1.0), 0.7f, nullptr)); | 1154 FloatKeyframe::Create(base::TimeDelta::FromSecondsD(1.0), 0.7f, nullptr)); |
1155 scoped_ptr<Animation> animation = | 1155 scoped_ptr<Animation> animation = |
1156 Animation::Create(curve.Pass(), 0, 0, Animation::OPACITY); | 1156 Animation::Create(std::move(curve), 0, 0, Animation::OPACITY); |
1157 | 1157 |
1158 return layer->AddAnimation(animation.Pass()); | 1158 return layer->AddAnimation(std::move(animation)); |
1159 } | 1159 } |
1160 | 1160 |
1161 TEST_F(LayerLayerTreeHostTest, ShouldNotAddAnimationWithoutAnimationRegistrar) { | 1161 TEST_F(LayerLayerTreeHostTest, ShouldNotAddAnimationWithoutAnimationRegistrar) { |
1162 scoped_refptr<Layer> layer = Layer::Create(layer_settings_); | 1162 scoped_refptr<Layer> layer = Layer::Create(layer_settings_); |
1163 | 1163 |
1164 // Case 1: without a LayerTreeHost and without an AnimationRegistrar, the | 1164 // Case 1: without a LayerTreeHost and without an AnimationRegistrar, the |
1165 // animation should not be accepted. | 1165 // animation should not be accepted. |
1166 EXPECT_FALSE(AddTestAnimation(layer.get())); | 1166 EXPECT_FALSE(AddTestAnimation(layer.get())); |
1167 | 1167 |
1168 scoped_ptr<AnimationRegistrar> registrar = AnimationRegistrar::Create(); | 1168 scoped_ptr<AnimationRegistrar> registrar = AnimationRegistrar::Create(); |
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1267 } | 1267 } |
1268 | 1268 |
1269 TEST_F(LayerTest, DedupesCopyOutputRequestsBySource) { | 1269 TEST_F(LayerTest, DedupesCopyOutputRequestsBySource) { |
1270 scoped_refptr<Layer> layer = Layer::Create(layer_settings_); | 1270 scoped_refptr<Layer> layer = Layer::Create(layer_settings_); |
1271 int result_count = 0; | 1271 int result_count = 0; |
1272 | 1272 |
1273 // Create identical requests without the source being set, and expect the | 1273 // Create identical requests without the source being set, and expect the |
1274 // layer does not abort either one. | 1274 // layer does not abort either one. |
1275 scoped_ptr<CopyOutputRequest> request = CopyOutputRequest::CreateRequest( | 1275 scoped_ptr<CopyOutputRequest> request = CopyOutputRequest::CreateRequest( |
1276 base::Bind(&ReceiveCopyOutputResult, &result_count)); | 1276 base::Bind(&ReceiveCopyOutputResult, &result_count)); |
1277 layer->RequestCopyOfOutput(request.Pass()); | 1277 layer->RequestCopyOfOutput(std::move(request)); |
1278 EXPECT_EQ(0, result_count); | 1278 EXPECT_EQ(0, result_count); |
1279 request = CopyOutputRequest::CreateRequest( | 1279 request = CopyOutputRequest::CreateRequest( |
1280 base::Bind(&ReceiveCopyOutputResult, &result_count)); | 1280 base::Bind(&ReceiveCopyOutputResult, &result_count)); |
1281 layer->RequestCopyOfOutput(request.Pass()); | 1281 layer->RequestCopyOfOutput(std::move(request)); |
1282 EXPECT_EQ(0, result_count); | 1282 EXPECT_EQ(0, result_count); |
1283 | 1283 |
1284 // When the layer is destroyed, expect both requests to be aborted. | 1284 // When the layer is destroyed, expect both requests to be aborted. |
1285 layer = nullptr; | 1285 layer = nullptr; |
1286 EXPECT_EQ(2, result_count); | 1286 EXPECT_EQ(2, result_count); |
1287 | 1287 |
1288 layer = Layer::Create(layer_settings_); | 1288 layer = Layer::Create(layer_settings_); |
1289 result_count = 0; | 1289 result_count = 0; |
1290 | 1290 |
1291 // Create identical requests, but this time the source is being set. Expect | 1291 // Create identical requests, but this time the source is being set. Expect |
1292 // the first request from |this| source aborts immediately when the second | 1292 // the first request from |this| source aborts immediately when the second |
1293 // request from |this| source is made. | 1293 // request from |this| source is made. |
1294 int did_receive_first_result_from_this_source = 0; | 1294 int did_receive_first_result_from_this_source = 0; |
1295 request = CopyOutputRequest::CreateRequest(base::Bind( | 1295 request = CopyOutputRequest::CreateRequest(base::Bind( |
1296 &ReceiveCopyOutputResult, &did_receive_first_result_from_this_source)); | 1296 &ReceiveCopyOutputResult, &did_receive_first_result_from_this_source)); |
1297 request->set_source(this); | 1297 request->set_source(this); |
1298 layer->RequestCopyOfOutput(request.Pass()); | 1298 layer->RequestCopyOfOutput(std::move(request)); |
1299 EXPECT_EQ(0, did_receive_first_result_from_this_source); | 1299 EXPECT_EQ(0, did_receive_first_result_from_this_source); |
1300 // Make a request from a different source. | 1300 // Make a request from a different source. |
1301 int did_receive_result_from_different_source = 0; | 1301 int did_receive_result_from_different_source = 0; |
1302 request = CopyOutputRequest::CreateRequest(base::Bind( | 1302 request = CopyOutputRequest::CreateRequest(base::Bind( |
1303 &ReceiveCopyOutputResult, &did_receive_result_from_different_source)); | 1303 &ReceiveCopyOutputResult, &did_receive_result_from_different_source)); |
1304 request->set_source(reinterpret_cast<void*>(0xdeadbee0)); | 1304 request->set_source(reinterpret_cast<void*>(0xdeadbee0)); |
1305 layer->RequestCopyOfOutput(request.Pass()); | 1305 layer->RequestCopyOfOutput(std::move(request)); |
1306 EXPECT_EQ(0, did_receive_result_from_different_source); | 1306 EXPECT_EQ(0, did_receive_result_from_different_source); |
1307 // Make a request without specifying the source. | 1307 // Make a request without specifying the source. |
1308 int did_receive_result_from_anonymous_source = 0; | 1308 int did_receive_result_from_anonymous_source = 0; |
1309 request = CopyOutputRequest::CreateRequest(base::Bind( | 1309 request = CopyOutputRequest::CreateRequest(base::Bind( |
1310 &ReceiveCopyOutputResult, &did_receive_result_from_anonymous_source)); | 1310 &ReceiveCopyOutputResult, &did_receive_result_from_anonymous_source)); |
1311 layer->RequestCopyOfOutput(request.Pass()); | 1311 layer->RequestCopyOfOutput(std::move(request)); |
1312 EXPECT_EQ(0, did_receive_result_from_anonymous_source); | 1312 EXPECT_EQ(0, did_receive_result_from_anonymous_source); |
1313 // Make the second request from |this| source. | 1313 // Make the second request from |this| source. |
1314 int did_receive_second_result_from_this_source = 0; | 1314 int did_receive_second_result_from_this_source = 0; |
1315 request = CopyOutputRequest::CreateRequest(base::Bind( | 1315 request = CopyOutputRequest::CreateRequest(base::Bind( |
1316 &ReceiveCopyOutputResult, &did_receive_second_result_from_this_source)); | 1316 &ReceiveCopyOutputResult, &did_receive_second_result_from_this_source)); |
1317 request->set_source(this); | 1317 request->set_source(this); |
1318 layer->RequestCopyOfOutput(request.Pass()); // First request to be aborted. | 1318 layer->RequestCopyOfOutput( |
| 1319 std::move(request)); // First request to be aborted. |
1319 EXPECT_EQ(1, did_receive_first_result_from_this_source); | 1320 EXPECT_EQ(1, did_receive_first_result_from_this_source); |
1320 EXPECT_EQ(0, did_receive_result_from_different_source); | 1321 EXPECT_EQ(0, did_receive_result_from_different_source); |
1321 EXPECT_EQ(0, did_receive_result_from_anonymous_source); | 1322 EXPECT_EQ(0, did_receive_result_from_anonymous_source); |
1322 EXPECT_EQ(0, did_receive_second_result_from_this_source); | 1323 EXPECT_EQ(0, did_receive_second_result_from_this_source); |
1323 | 1324 |
1324 // When the layer is destroyed, the other three requests should be aborted. | 1325 // When the layer is destroyed, the other three requests should be aborted. |
1325 layer = nullptr; | 1326 layer = nullptr; |
1326 EXPECT_EQ(1, did_receive_first_result_from_this_source); | 1327 EXPECT_EQ(1, did_receive_first_result_from_this_source); |
1327 EXPECT_EQ(1, did_receive_result_from_different_source); | 1328 EXPECT_EQ(1, did_receive_result_from_different_source); |
1328 EXPECT_EQ(1, did_receive_result_from_anonymous_source); | 1329 EXPECT_EQ(1, did_receive_result_from_anonymous_source); |
(...skipping 368 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1697 | 1698 |
1698 properties.set_needs_push_properties(true); | 1699 properties.set_needs_push_properties(true); |
1699 properties.mutable_base(); | 1700 properties.mutable_base(); |
1700 layer->FromLayerPropertiesProto(properties); | 1701 layer->FromLayerPropertiesProto(properties); |
1701 EXPECT_TRUE(layer->needs_push_properties()); | 1702 EXPECT_TRUE(layer->needs_push_properties()); |
1702 EXPECT_FALSE(layer->descendant_needs_push_properties()); | 1703 EXPECT_FALSE(layer->descendant_needs_push_properties()); |
1703 } | 1704 } |
1704 | 1705 |
1705 } // namespace | 1706 } // namespace |
1706 } // namespace cc | 1707 } // namespace cc |
OLD | NEW |