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

Side by Side Diff: cc/layers/picture_layer_impl_unittest.cc

Issue 196343005: cc: Replace recorded region with direct map lookup (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Partial invalidation test case Created 6 years, 9 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 | Annotate | Revision Log
« no previous file with comments | « cc/layers/picture_layer_impl.cc ('k') | cc/layers/picture_layer_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/picture_layer_impl.h" 5 #include "cc/layers/picture_layer_impl.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "cc/layers/append_quads_data.h" 9 #include "cc/layers/append_quads_data.h"
10 #include "cc/layers/picture_layer.h" 10 #include "cc/layers/picture_layer.h"
(...skipping 471 matching lines...) Expand 10 before | Expand all | Expand 10 after
482 const PictureLayerTiling* tiling = tilings->tiling_at(i); 482 const PictureLayerTiling* tiling = tilings->tiling_at(i);
483 483
484 for (PictureLayerTiling::CoverageIterator 484 for (PictureLayerTiling::CoverageIterator
485 iter(tiling, 485 iter(tiling,
486 tiling->contents_scale(), 486 tiling->contents_scale(),
487 tiling->ContentRect()); 487 tiling->ContentRect());
488 iter; 488 iter;
489 ++iter) { 489 ++iter) {
490 EXPECT_FALSE(iter.full_tile_geometry_rect().IsEmpty()); 490 EXPECT_FALSE(iter.full_tile_geometry_rect().IsEmpty());
491 // Ensure there is a recording for this tile. 491 // Ensure there is a recording for this tile.
492 gfx::Rect layer_rect = gfx::ScaleToEnclosingRect( 492 bool in_pending = pending_pile->CanRaster(tiling->contents_scale(),
493 iter.full_tile_geometry_rect(), 1.f / tiling->contents_scale()); 493 iter.full_tile_geometry_rect());
494 layer_rect.Intersect(gfx::Rect(layer_bounds)); 494 bool in_active = active_pile->CanRaster(tiling->contents_scale(),
495 495 iter.full_tile_geometry_rect());
496 bool in_pending = pending_pile->recorded_region().Contains(layer_rect);
497 bool in_active = active_pile->recorded_region().Contains(layer_rect);
498 496
499 if (in_pending && !in_active) 497 if (in_pending && !in_active)
500 EXPECT_EQ(pending_pile, iter->picture_pile()); 498 EXPECT_EQ(pending_pile, iter->picture_pile());
501 else if (in_active) 499 else if (in_active)
502 EXPECT_EQ(active_pile, iter->picture_pile()); 500 EXPECT_EQ(active_pile, iter->picture_pile());
503 else 501 else
504 EXPECT_FALSE(*iter); 502 EXPECT_FALSE(*iter);
505 } 503 }
506 } 504 }
507 } 505 }
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
627 } 625 }
628 626
629 TEST_F(PictureLayerImplTest, CreateTilingsEvenIfTwinHasNone) { 627 TEST_F(PictureLayerImplTest, CreateTilingsEvenIfTwinHasNone) {
630 // This test makes sure that if a layer can have tilings, then a commit makes 628 // This test makes sure that if a layer can have tilings, then a commit makes
631 // it not able to have tilings (empty size), and then a future commit that 629 // it not able to have tilings (empty size), and then a future commit that
632 // makes it valid again should be able to create tilings. 630 // makes it valid again should be able to create tilings.
633 gfx::Size tile_size(400, 400); 631 gfx::Size tile_size(400, 400);
634 gfx::Size layer_bounds(1300, 1900); 632 gfx::Size layer_bounds(1300, 1900);
635 633
636 scoped_refptr<FakePicturePileImpl> empty_pile = 634 scoped_refptr<FakePicturePileImpl> empty_pile =
637 FakePicturePileImpl::CreateFilledPile(tile_size, gfx::Size(1000, 0)); 635 FakePicturePileImpl::CreateEmptyPile(tile_size, layer_bounds);
638 scoped_refptr<FakePicturePileImpl> valid_pile = 636 scoped_refptr<FakePicturePileImpl> valid_pile =
639 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); 637 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds);
640 638
641 float low_res_factor = host_impl_.settings().low_res_contents_scale_factor; 639 float low_res_factor = host_impl_.settings().low_res_contents_scale_factor;
642 EXPECT_LT(low_res_factor, 1.f); 640 EXPECT_LT(low_res_factor, 1.f);
643 641
644 float high_res_scale = 1.3f; 642 float high_res_scale = 1.3f;
645 float low_res_scale = high_res_scale * low_res_factor; 643 float low_res_scale = high_res_scale * low_res_factor;
646 float device_scale = 1.7f; 644 float device_scale = 1.7f;
647 float page_scale = 3.2f; 645 float page_scale = 3.2f;
(...skipping 666 matching lines...) Expand 10 before | Expand all | Expand 10 after
1314 pending_layer_->MarkVisibleResourcesAsRequired(); 1312 pending_layer_->MarkVisibleResourcesAsRequired();
1315 AssertNoTilesRequired(pending_layer_->HighResTiling()); 1313 AssertNoTilesRequired(pending_layer_->HighResTiling());
1316 AssertNoTilesRequired(pending_layer_->LowResTiling()); 1314 AssertNoTilesRequired(pending_layer_->LowResTiling());
1317 } 1315 }
1318 1316
1319 TEST_F(PictureLayerImplTest, NothingRequiredIfActiveMissingTiles) { 1317 TEST_F(PictureLayerImplTest, NothingRequiredIfActiveMissingTiles) {
1320 gfx::Size layer_bounds(400, 400); 1318 gfx::Size layer_bounds(400, 400);
1321 gfx::Size tile_size(100, 100); 1319 gfx::Size tile_size(100, 100);
1322 scoped_refptr<FakePicturePileImpl> pending_pile = 1320 scoped_refptr<FakePicturePileImpl> pending_pile =
1323 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); 1321 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds);
1324 // An arbitrary bogus outside the layer recording. Enough for the layer to 1322 // This pile will create tilings, but has no recordings so will not create any
1325 // think it can create tiles, but not in bounds so all tiles are null. 1323 // tiles. This is attempting to simulate scrolling past the end of recorded
1326 Region active_recorded_region; 1324 // content on the active layer, where the recordings are so far away that
1327 active_recorded_region.Union(gfx::Rect(1000, 1000, 1, 1)); 1325 // no tiles are created.
1328 scoped_refptr<FakePicturePileImpl> active_pile = 1326 scoped_refptr<FakePicturePileImpl> active_pile =
1329 FakePicturePileImpl::CreatePileWithRecordedRegion( 1327 FakePicturePileImpl::CreateEmptyPileThatThinksItHasRecordings(
1330 tile_size, layer_bounds, active_recorded_region); 1328 tile_size, layer_bounds);
1331 SetupTrees(pending_pile, active_pile); 1329 SetupTrees(pending_pile, active_pile);
1332 pending_layer_->set_fixed_tile_size(tile_size); 1330 pending_layer_->set_fixed_tile_size(tile_size);
1333 active_layer_->set_fixed_tile_size(tile_size); 1331 active_layer_->set_fixed_tile_size(tile_size);
1334 1332
1335 CreateHighLowResAndSetAllTilesVisible(); 1333 CreateHighLowResAndSetAllTilesVisible();
1336 1334
1337 // Active layer has tilings, but no tiles due to missing recordings. 1335 // Active layer has tilings, but no tiles due to missing recordings.
1338 EXPECT_TRUE(active_layer_->CanHaveTilings()); 1336 EXPECT_TRUE(active_layer_->CanHaveTilings());
1339 EXPECT_EQ(active_layer_->tilings()->num_tilings(), 2u); 1337 EXPECT_EQ(active_layer_->tilings()->num_tilings(), 2u);
1340 EXPECT_EQ(active_layer_->HighResTiling()->AllTilesForTesting().size(), 0u); 1338 EXPECT_EQ(active_layer_->HighResTiling()->AllTilesForTesting().size(), 0u);
1341 1339
1342 // Since the active layer has no tiles at all, the pending layer doesn't 1340 // Since the active layer has no tiles at all, the pending layer doesn't
1343 // need content in order to activate. This is attempting to simulate 1341 // need content in order to activate.
1344 // scrolling past the end of recorded content on the active layer.
1345 pending_layer_->MarkVisibleResourcesAsRequired(); 1342 pending_layer_->MarkVisibleResourcesAsRequired();
1346 AssertNoTilesRequired(pending_layer_->HighResTiling()); 1343 AssertNoTilesRequired(pending_layer_->HighResTiling());
1347 AssertNoTilesRequired(pending_layer_->LowResTiling()); 1344 AssertNoTilesRequired(pending_layer_->LowResTiling());
1348 } 1345 }
1349 1346
1350 TEST_F(PictureLayerImplTest, HighResRequiredIfActiveCantHaveTiles) { 1347 TEST_F(PictureLayerImplTest, HighResRequiredIfActiveCantHaveTiles) {
1351 gfx::Size layer_bounds(400, 400); 1348 gfx::Size layer_bounds(400, 400);
1352 gfx::Size tile_size(100, 100); 1349 gfx::Size tile_size(100, 100);
1353 scoped_refptr<FakePicturePileImpl> pending_pile = 1350 scoped_refptr<FakePicturePileImpl> pending_pile =
1354 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); 1351 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds);
(...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after
1608 // Should still have the high-res tiling. 1605 // Should still have the high-res tiling.
1609 EXPECT_EQ(1u, pending_layer_->tilings()->num_tilings()); 1606 EXPECT_EQ(1u, pending_layer_->tilings()->num_tilings());
1610 pending_layer_->CalculateContentsScale( 1607 pending_layer_->CalculateContentsScale(
1611 1.f, 1.f, 1.f, false, &result_scale_x, &result_scale_y, &result_bounds); 1608 1.f, 1.f, 1.f, false, &result_scale_x, &result_scale_y, &result_bounds);
1612 // Should still only have the high-res tiling. 1609 // Should still only have the high-res tiling.
1613 ASSERT_EQ(1u, pending_layer_->tilings()->num_tilings()); 1610 ASSERT_EQ(1u, pending_layer_->tilings()->num_tilings());
1614 } 1611 }
1615 1612
1616 } // namespace 1613 } // namespace
1617 } // namespace cc 1614 } // namespace cc
OLDNEW
« no previous file with comments | « cc/layers/picture_layer_impl.cc ('k') | cc/layers/picture_layer_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698