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/trees/layer_tree_host.h" | 5 #include "cc/trees/layer_tree_host.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 | 9 |
10 #include <algorithm> | 10 #include <algorithm> |
(...skipping 1162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1173 void AfterTest() override {} | 1173 void AfterTest() override {} |
1174 | 1174 |
1175 private: | 1175 private: |
1176 int index_; | 1176 int index_; |
1177 scoped_refptr<Layer> root_; | 1177 scoped_refptr<Layer> root_; |
1178 scoped_refptr<Layer> child_; | 1178 scoped_refptr<Layer> child_; |
1179 }; | 1179 }; |
1180 | 1180 |
1181 SINGLE_THREAD_TEST_F(LayerTreeHostTestPropertyTreesChangedSync); | 1181 SINGLE_THREAD_TEST_F(LayerTreeHostTestPropertyTreesChangedSync); |
1182 | 1182 |
1183 class LayerTreeHostTestAnimationFilterMutatedNotUsingLayerLists | 1183 // Simple base class for tests that just need to mutate the layer tree |
1184 : public LayerTreeHostTest { | 1184 // host and observe results without any impl thread, multi-layer, or |
| 1185 // multi-frame antics. |
| 1186 class LayerTreeHostTestLayerListsTest : public LayerTreeHostTest { |
1185 public: | 1187 public: |
| 1188 explicit LayerTreeHostTestLayerListsTest(bool use_layer_lists) |
| 1189 : use_layer_lists_(use_layer_lists) {} |
| 1190 |
| 1191 protected: |
1186 void InitializeSettings(LayerTreeSettings* settings) override { | 1192 void InitializeSettings(LayerTreeSettings* settings) override { |
1187 settings->use_layer_lists = false; | 1193 settings->use_layer_lists = use_layer_lists_; |
1188 } | 1194 } |
1189 | 1195 |
1190 protected: | |
1191 void SetupTree() override { | 1196 void SetupTree() override { |
1192 root_ = Layer::Create(); | 1197 root_ = Layer::Create(); |
1193 layer_tree_host()->SetRootLayer(root_); | 1198 layer_tree_host()->SetRootLayer(root_); |
1194 LayerTreeHostTest::SetupTree(); | 1199 LayerTreeHostTest::SetupTree(); |
1195 } | 1200 } |
1196 | 1201 |
| 1202 void AfterTest() override {} |
| 1203 |
| 1204 scoped_refptr<Layer> root_; |
| 1205 |
| 1206 private: |
| 1207 bool use_layer_lists_; |
| 1208 }; |
| 1209 |
| 1210 class LayerTreeHostTestAnimationOpacityMutatedNotUsingLayerLists |
| 1211 : public LayerTreeHostTestLayerListsTest { |
| 1212 public: |
| 1213 LayerTreeHostTestAnimationOpacityMutatedNotUsingLayerLists() |
| 1214 : LayerTreeHostTestLayerListsTest(false) {} |
| 1215 |
| 1216 protected: |
| 1217 void BeginTest() override { |
| 1218 EXPECT_EQ(1.0f, root_->opacity()); |
| 1219 layer_tree_host()->SetElementOpacityMutated(root_->element_id(), |
| 1220 ElementListType::ACTIVE, 0.3f); |
| 1221 // When not using layer lists, opacity is stored on the layer. |
| 1222 EXPECT_EQ(0.3f, root_->opacity()); |
| 1223 EndTest(); |
| 1224 } |
| 1225 }; |
| 1226 |
| 1227 SINGLE_THREAD_TEST_F( |
| 1228 LayerTreeHostTestAnimationOpacityMutatedNotUsingLayerLists); |
| 1229 |
| 1230 class LayerTreeHostTestAnimationOpacityMutatedUsingLayerLists |
| 1231 : public LayerTreeHostTestLayerListsTest { |
| 1232 public: |
| 1233 LayerTreeHostTestAnimationOpacityMutatedUsingLayerLists() |
| 1234 : LayerTreeHostTestLayerListsTest(true) {} |
| 1235 |
| 1236 protected: |
| 1237 void BeginTest() override { |
| 1238 // Insert a dummy effect node to observe its mutation. This would |
| 1239 // normally have been created by PaintArtifactCompositor. |
| 1240 int effect_node_id = |
| 1241 layer_tree_host()->property_trees()->effect_tree.Insert( |
| 1242 EffectNode(), EffectTree::kInvalidNodeId); |
| 1243 layer_tree_host() |
| 1244 ->property_trees() |
| 1245 ->element_id_to_effect_node_index[root_->element_id()] = effect_node_id; |
| 1246 |
| 1247 EXPECT_EQ(1.0f, root_->opacity()); |
| 1248 EXPECT_EQ(1.0f, |
| 1249 layer_tree_host() |
| 1250 ->property_trees() |
| 1251 ->effect_tree.FindNodeFromElementId(root_->element_id()) |
| 1252 ->opacity); |
| 1253 |
| 1254 layer_tree_host()->SetElementOpacityMutated(root_->element_id(), |
| 1255 ElementListType::ACTIVE, 0.3f); |
| 1256 |
| 1257 // When using layer lists, we don't have to store the opacity on the layer. |
| 1258 EXPECT_EQ(1.0f, root_->opacity()); |
| 1259 // The opacity should have been set directly on the effect node instead. |
| 1260 EXPECT_EQ(0.3f, |
| 1261 layer_tree_host() |
| 1262 ->property_trees() |
| 1263 ->effect_tree.FindNodeFromElementId(root_->element_id()) |
| 1264 ->opacity); |
| 1265 EndTest(); |
| 1266 } |
| 1267 }; |
| 1268 |
| 1269 SINGLE_THREAD_TEST_F(LayerTreeHostTestAnimationOpacityMutatedUsingLayerLists); |
| 1270 |
| 1271 class LayerTreeHostTestAnimationTransformMutatedNotUsingLayerLists |
| 1272 : public LayerTreeHostTestLayerListsTest { |
| 1273 public: |
| 1274 LayerTreeHostTestAnimationTransformMutatedNotUsingLayerLists() |
| 1275 : LayerTreeHostTestLayerListsTest(false) {} |
| 1276 |
| 1277 protected: |
| 1278 void BeginTest() override { |
| 1279 EXPECT_EQ(gfx::Transform(), root_->transform()); |
| 1280 gfx::Transform expected_transform; |
| 1281 expected_transform.Translate(42, 42); |
| 1282 layer_tree_host()->SetElementTransformMutated( |
| 1283 root_->element_id(), ElementListType::ACTIVE, expected_transform); |
| 1284 // When not using layer lists, transform is stored on the layer. |
| 1285 EXPECT_EQ(expected_transform, root_->transform()); |
| 1286 EndTest(); |
| 1287 } |
| 1288 }; |
| 1289 |
| 1290 SINGLE_THREAD_TEST_F( |
| 1291 LayerTreeHostTestAnimationTransformMutatedNotUsingLayerLists); |
| 1292 |
| 1293 class LayerTreeHostTestAnimationTransformMutatedUsingLayerLists |
| 1294 : public LayerTreeHostTestLayerListsTest { |
| 1295 public: |
| 1296 LayerTreeHostTestAnimationTransformMutatedUsingLayerLists() |
| 1297 : LayerTreeHostTestLayerListsTest(true) {} |
| 1298 |
| 1299 protected: |
| 1300 void BeginTest() override { |
| 1301 // Insert a dummy transform node to observe its mutation. This would |
| 1302 // normally have been created by PaintArtifactCompositor. |
| 1303 int transform_node_id = |
| 1304 layer_tree_host()->property_trees()->transform_tree.Insert( |
| 1305 TransformNode(), TransformTree::kInvalidNodeId); |
| 1306 layer_tree_host() |
| 1307 ->property_trees() |
| 1308 ->element_id_to_transform_node_index[root_->element_id()] = |
| 1309 transform_node_id; |
| 1310 |
| 1311 EXPECT_EQ(gfx::Transform(), root_->transform()); |
| 1312 EXPECT_EQ(gfx::Transform(), |
| 1313 layer_tree_host() |
| 1314 ->property_trees() |
| 1315 ->transform_tree.FindNodeFromElementId(root_->element_id()) |
| 1316 ->local); |
| 1317 |
| 1318 gfx::Transform expected_transform; |
| 1319 expected_transform.Translate(42, 42); |
| 1320 layer_tree_host()->SetElementTransformMutated( |
| 1321 root_->element_id(), ElementListType::ACTIVE, expected_transform); |
| 1322 |
| 1323 // When using layer lists, we don't have to store the transform on the |
| 1324 // layer. |
| 1325 EXPECT_EQ(gfx::Transform(), root_->transform()); |
| 1326 // The transform should have been set directly on the transform node |
| 1327 // instead. |
| 1328 EXPECT_EQ(expected_transform, |
| 1329 layer_tree_host() |
| 1330 ->property_trees() |
| 1331 ->transform_tree.FindNodeFromElementId(root_->element_id()) |
| 1332 ->local); |
| 1333 EndTest(); |
| 1334 } |
| 1335 }; |
| 1336 |
| 1337 SINGLE_THREAD_TEST_F(LayerTreeHostTestAnimationTransformMutatedUsingLayerLists); |
| 1338 |
| 1339 class LayerTreeHostTestAnimationFilterMutatedNotUsingLayerLists |
| 1340 : public LayerTreeHostTestLayerListsTest { |
| 1341 public: |
| 1342 LayerTreeHostTestAnimationFilterMutatedNotUsingLayerLists() |
| 1343 : LayerTreeHostTestLayerListsTest(false) {} |
| 1344 |
| 1345 protected: |
1197 void BeginTest() override { | 1346 void BeginTest() override { |
1198 FilterOperations filters; | 1347 FilterOperations filters; |
1199 EXPECT_EQ(FilterOperations(), root_->filters()); | 1348 EXPECT_EQ(FilterOperations(), root_->filters()); |
1200 filters.Append(FilterOperation::CreateOpacityFilter(0.5f)); | 1349 filters.Append(FilterOperation::CreateOpacityFilter(0.5f)); |
1201 layer_tree_host()->SetElementFilterMutated( | 1350 layer_tree_host()->SetElementFilterMutated( |
1202 root_->element_id(), ElementListType::ACTIVE, filters); | 1351 root_->element_id(), ElementListType::ACTIVE, filters); |
1203 // When not using layer lists, filters are just stored directly on the | 1352 // When not using layer lists, filters are just stored directly on the |
1204 // layer. | 1353 // layer. |
1205 EXPECT_EQ(filters, root_->filters()); | 1354 EXPECT_EQ(filters, root_->filters()); |
1206 EndTest(); | 1355 EndTest(); |
1207 } | 1356 } |
1208 | |
1209 void AfterTest() override {} | |
1210 | |
1211 private: | |
1212 scoped_refptr<Layer> root_; | |
1213 }; | 1357 }; |
1214 | 1358 |
1215 SINGLE_THREAD_TEST_F(LayerTreeHostTestAnimationFilterMutatedNotUsingLayerLists); | 1359 SINGLE_THREAD_TEST_F(LayerTreeHostTestAnimationFilterMutatedNotUsingLayerLists); |
1216 | 1360 |
1217 class LayerTreeHostTestAnimationFilterMutatedUsingLayerLists | 1361 class LayerTreeHostTestAnimationFilterMutatedUsingLayerLists |
1218 : public LayerTreeHostTest { | 1362 : public LayerTreeHostTestLayerListsTest { |
1219 public: | 1363 public: |
1220 void InitializeSettings(LayerTreeSettings* settings) override { | 1364 LayerTreeHostTestAnimationFilterMutatedUsingLayerLists() |
1221 settings->use_layer_lists = true; | 1365 : LayerTreeHostTestLayerListsTest(true) {} |
1222 } | |
1223 | 1366 |
1224 protected: | 1367 protected: |
1225 void SetupTree() override { | |
1226 root_ = Layer::Create(); | |
1227 layer_tree_host()->SetRootLayer(root_); | |
1228 LayerTreeHostTest::SetupTree(); | |
1229 } | |
1230 | |
1231 void BeginTest() override { | 1368 void BeginTest() override { |
1232 // Insert a dummy effect node to observe its mutation. This would | 1369 // Insert a dummy effect node to observe its mutation. This would |
1233 // normally have been created by PaintArtifactCompositor. | 1370 // normally have been created by PaintArtifactCompositor. |
1234 int effect_node_id = | 1371 int effect_node_id = |
1235 layer_tree_host()->property_trees()->effect_tree.Insert( | 1372 layer_tree_host()->property_trees()->effect_tree.Insert( |
1236 EffectNode(), EffectTree::kInvalidNodeId); | 1373 EffectNode(), EffectTree::kInvalidNodeId); |
1237 layer_tree_host() | 1374 layer_tree_host() |
1238 ->property_trees() | 1375 ->property_trees() |
1239 ->element_id_to_effect_node_index[root_->element_id()] = effect_node_id; | 1376 ->element_id_to_effect_node_index[root_->element_id()] = effect_node_id; |
1240 | 1377 |
(...skipping 12 matching lines...) Expand all Loading... |
1253 // When using layer lists, we don't have to store the filters on the layer. | 1390 // When using layer lists, we don't have to store the filters on the layer. |
1254 EXPECT_EQ(FilterOperations(), root_->filters()); | 1391 EXPECT_EQ(FilterOperations(), root_->filters()); |
1255 // The filter should have been set directly on the effect node instead. | 1392 // The filter should have been set directly on the effect node instead. |
1256 EXPECT_EQ(filters, | 1393 EXPECT_EQ(filters, |
1257 layer_tree_host() | 1394 layer_tree_host() |
1258 ->property_trees() | 1395 ->property_trees() |
1259 ->effect_tree.FindNodeFromElementId(root_->element_id()) | 1396 ->effect_tree.FindNodeFromElementId(root_->element_id()) |
1260 ->filters); | 1397 ->filters); |
1261 EndTest(); | 1398 EndTest(); |
1262 } | 1399 } |
1263 | |
1264 void AfterTest() override {} | |
1265 | |
1266 private: | |
1267 scoped_refptr<Layer> root_; | |
1268 }; | 1400 }; |
1269 | 1401 |
1270 SINGLE_THREAD_TEST_F(LayerTreeHostTestAnimationFilterMutatedUsingLayerLists); | 1402 SINGLE_THREAD_TEST_F(LayerTreeHostTestAnimationFilterMutatedUsingLayerLists); |
1271 | 1403 |
1272 class LayerTreeHostTestEffectTreeSync : public LayerTreeHostTest { | 1404 class LayerTreeHostTestEffectTreeSync : public LayerTreeHostTest { |
1273 protected: | 1405 protected: |
1274 void SetupTree() override { | 1406 void SetupTree() override { |
1275 root_ = Layer::Create(); | 1407 root_ = Layer::Create(); |
1276 layer_tree_host()->SetRootLayer(root_); | 1408 layer_tree_host()->SetRootLayer(root_); |
1277 blur_filter_.Append(FilterOperation::CreateBlurFilter(0.5f)); | 1409 blur_filter_.Append(FilterOperation::CreateBlurFilter(0.5f)); |
(...skipping 6547 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7825 void AfterTest() override {} | 7957 void AfterTest() override {} |
7826 | 7958 |
7827 private: | 7959 private: |
7828 bool received_ack_ = false; | 7960 bool received_ack_ = false; |
7829 }; | 7961 }; |
7830 | 7962 |
7831 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostTestDiscardAckAfterRelease); | 7963 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostTestDiscardAckAfterRelease); |
7832 | 7964 |
7833 } // namespace | 7965 } // namespace |
7834 } // namespace cc | 7966 } // namespace cc |
OLD | NEW |