Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(238)

Side by Side Diff: cc/trees/layer_tree_host_unittest.cc

Issue 2878743002: Set opacity and transform mutations directly on property tree for SPv2. (Closed)
Patch Set: Sync to head and share test logic. Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « cc/trees/layer_tree_host.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
OLDNEW
« no previous file with comments | « cc/trees/layer_tree_host.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698