| 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/damage_tracker.h" | 5 #include "cc/trees/damage_tracker.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 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 1178 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1189 // Advance one frame without damage so that we know the damage rect is not | 1189 // Advance one frame without damage so that we know the damage rect is not |
| 1190 // leftover from the previous case. | 1190 // leftover from the previous case. |
| 1191 ClearDamageForAllSurfaces(root.get()); | 1191 ClearDamageForAllSurfaces(root.get()); |
| 1192 EmulateDrawingOneFrame(root.get()); | 1192 EmulateDrawingOneFrame(root.get()); |
| 1193 child_damage_rect = | 1193 child_damage_rect = |
| 1194 child->render_surface()->damage_tracker()->current_damage_rect(); | 1194 child->render_surface()->damage_tracker()->current_damage_rect(); |
| 1195 EXPECT_TRUE(child_damage_rect.IsEmpty()); | 1195 EXPECT_TRUE(child_damage_rect.IsEmpty()); |
| 1196 | 1196 |
| 1197 // Then test the property change. | 1197 // Then test the property change. |
| 1198 ClearDamageForAllSurfaces(root.get()); | 1198 ClearDamageForAllSurfaces(root.get()); |
| 1199 mask_layer->SetStackingOrderChanged(true); | 1199 mask_layer->NoteLayerPropertyChanged(); |
| 1200 | 1200 |
| 1201 EmulateDrawingOneFrame(root.get()); | 1201 EmulateDrawingOneFrame(root.get()); |
| 1202 child_damage_rect = | 1202 child_damage_rect = |
| 1203 child->render_surface()->damage_tracker()->current_damage_rect(); | 1203 child->render_surface()->damage_tracker()->current_damage_rect(); |
| 1204 EXPECT_EQ(gfx::Rect(30, 30).ToString(), child_damage_rect.ToString()); | 1204 EXPECT_EQ(gfx::Rect(30, 30).ToString(), child_damage_rect.ToString()); |
| 1205 | 1205 |
| 1206 // CASE 3: removing the mask also damages the entire target surface. | 1206 // CASE 3: removing the mask also damages the entire target surface. |
| 1207 // | 1207 // |
| 1208 | 1208 |
| 1209 // Advance one frame without damage so that we know the damage rect is not | 1209 // Advance one frame without damage so that we know the damage rect is not |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1263 LayerImpl* replica_mask_layer = grand_child1_replica->mask_layer(); | 1263 LayerImpl* replica_mask_layer = grand_child1_replica->mask_layer(); |
| 1264 | 1264 |
| 1265 EmulateDrawingOneFrame(root.get()); | 1265 EmulateDrawingOneFrame(root.get()); |
| 1266 | 1266 |
| 1267 // Sanity check that the appropriate render surfaces were created | 1267 // Sanity check that the appropriate render surfaces were created |
| 1268 ASSERT_TRUE(grand_child1->render_surface()); | 1268 ASSERT_TRUE(grand_child1->render_surface()); |
| 1269 | 1269 |
| 1270 // CASE 1: a property change on the mask should damage only the reflected | 1270 // CASE 1: a property change on the mask should damage only the reflected |
| 1271 // region on the target surface. | 1271 // region on the target surface. |
| 1272 ClearDamageForAllSurfaces(root.get()); | 1272 ClearDamageForAllSurfaces(root.get()); |
| 1273 replica_mask_layer->SetStackingOrderChanged(true); | 1273 replica_mask_layer->NoteLayerPropertyChanged(); |
| 1274 EmulateDrawingOneFrame(root.get()); | 1274 EmulateDrawingOneFrame(root.get()); |
| 1275 | 1275 |
| 1276 gfx::Rect grand_child_damage_rect = | 1276 gfx::Rect grand_child_damage_rect = |
| 1277 grand_child1->render_surface()->damage_tracker()->current_damage_rect(); | 1277 grand_child1->render_surface()->damage_tracker()->current_damage_rect(); |
| 1278 gfx::Rect child_damage_rect = | 1278 gfx::Rect child_damage_rect = |
| 1279 child1->render_surface()->damage_tracker()->current_damage_rect(); | 1279 child1->render_surface()->damage_tracker()->current_damage_rect(); |
| 1280 | 1280 |
| 1281 EXPECT_TRUE(grand_child_damage_rect.IsEmpty()); | 1281 EXPECT_TRUE(grand_child_damage_rect.IsEmpty()); |
| 1282 EXPECT_EQ(gfx::Rect(194, 200, 6, 8).ToString(), child_damage_rect.ToString()); | 1282 EXPECT_EQ(gfx::Rect(194, 200, 6, 8).ToString(), child_damage_rect.ToString()); |
| 1283 | 1283 |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1341 LayerImpl* replica_mask_layer = grand_child1_replica->mask_layer(); | 1341 LayerImpl* replica_mask_layer = grand_child1_replica->mask_layer(); |
| 1342 | 1342 |
| 1343 EmulateDrawingOneFrame(root.get()); | 1343 EmulateDrawingOneFrame(root.get()); |
| 1344 | 1344 |
| 1345 // Sanity check that the appropriate render surfaces were created | 1345 // Sanity check that the appropriate render surfaces were created |
| 1346 ASSERT_TRUE(grand_child1->render_surface()); | 1346 ASSERT_TRUE(grand_child1->render_surface()); |
| 1347 | 1347 |
| 1348 // A property change on the replica_mask should damage the reflected region on | 1348 // A property change on the replica_mask should damage the reflected region on |
| 1349 // the target surface. | 1349 // the target surface. |
| 1350 ClearDamageForAllSurfaces(root.get()); | 1350 ClearDamageForAllSurfaces(root.get()); |
| 1351 replica_mask_layer->SetStackingOrderChanged(true); | 1351 replica_mask_layer->NoteLayerPropertyChanged(); |
| 1352 | 1352 |
| 1353 EmulateDrawingOneFrame(root.get()); | 1353 EmulateDrawingOneFrame(root.get()); |
| 1354 | 1354 |
| 1355 gfx::Rect child_damage_rect = | 1355 gfx::Rect child_damage_rect = |
| 1356 child1->render_surface()->damage_tracker()->current_damage_rect(); | 1356 child1->render_surface()->damage_tracker()->current_damage_rect(); |
| 1357 EXPECT_EQ(gfx::Rect(206, 200, 6, 8).ToString(), child_damage_rect.ToString()); | 1357 EXPECT_EQ(gfx::Rect(206, 200, 6, 8).ToString(), child_damage_rect.ToString()); |
| 1358 } | 1358 } |
| 1359 | 1359 |
| 1360 TEST_F(DamageTrackerTest, DamageWhenAddedExternally) { | 1360 TEST_F(DamageTrackerTest, DamageWhenAddedExternally) { |
| 1361 scoped_ptr<LayerImpl> root = CreateAndSetUpTestTreeWithOneSurface(); | 1361 scoped_ptr<LayerImpl> root = CreateAndSetUpTestTreeWithOneSurface(); |
| (...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1478 gfx::Rect root_damage_rect = | 1478 gfx::Rect root_damage_rect = |
| 1479 root->render_surface()->damage_tracker()->current_damage_rect(); | 1479 root->render_surface()->damage_tracker()->current_damage_rect(); |
| 1480 gfx::Rect damage_we_care_about = gfx::Rect(i, i); | 1480 gfx::Rect damage_we_care_about = gfx::Rect(i, i); |
| 1481 EXPECT_LE(damage_we_care_about.right(), root_damage_rect.right()); | 1481 EXPECT_LE(damage_we_care_about.right(), root_damage_rect.right()); |
| 1482 EXPECT_LE(damage_we_care_about.bottom(), root_damage_rect.bottom()); | 1482 EXPECT_LE(damage_we_care_about.bottom(), root_damage_rect.bottom()); |
| 1483 } | 1483 } |
| 1484 } | 1484 } |
| 1485 | 1485 |
| 1486 } // namespace | 1486 } // namespace |
| 1487 } // namespace cc | 1487 } // namespace cc |
| OLD | NEW |