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

Side by Side Diff: cc/resources/picture_layer_tiling_unittest.cc

Issue 732423002: Update from chromium https://crrev.com/304586 (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 6 years, 1 month 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/resources/picture_layer_tiling_set_unittest.cc ('k') | cc/resources/picture_pile.h » ('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 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 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/resources/picture_layer_tiling.h" 5 #include "cc/resources/picture_layer_tiling.h"
6 6
7 #include <limits> 7 #include <limits>
8 #include <set> 8 #include <set>
9 9
10 #include "cc/base/math_util.h" 10 #include "cc/base/math_util.h"
(...skipping 18 matching lines...) Expand all
29 gfx::Transform inverse; 29 gfx::Transform inverse;
30 if (!transform.GetInverse(&inverse)) 30 if (!transform.GetInverse(&inverse))
31 return gfx::Rect(); 31 return gfx::Rect();
32 32
33 gfx::RectF viewport_in_layer_space = MathUtil::ProjectClippedRect( 33 gfx::RectF viewport_in_layer_space = MathUtil::ProjectClippedRect(
34 inverse, gfx::RectF(gfx::Point(0, 0), device_viewport)); 34 inverse, gfx::RectF(gfx::Point(0, 0), device_viewport));
35 return ToEnclosingRect(viewport_in_layer_space); 35 return ToEnclosingRect(viewport_in_layer_space);
36 } 36 }
37 37
38 static void UpdateAllTilePriorities(PictureLayerTilingSet* set, 38 static void UpdateAllTilePriorities(PictureLayerTilingSet* set,
39 WhichTree tree,
40 const gfx::Rect& visible_layer_rect, 39 const gfx::Rect& visible_layer_rect,
41 float layer_contents_scale, 40 float layer_contents_scale,
42 double current_frame_time_in_seconds) { 41 double current_frame_time_in_seconds) {
43 for (size_t i = 0; i < set->num_tilings(); ++i) { 42 for (size_t i = 0; i < set->num_tilings(); ++i) {
44 set->tiling_at(i)->ComputeTilePriorityRects(tree, 43 set->tiling_at(i)
45 visible_layer_rect, 44 ->ComputeTilePriorityRects(visible_layer_rect, layer_contents_scale,
46 layer_contents_scale, 45 current_frame_time_in_seconds, Occlusion());
47 current_frame_time_in_seconds,
48 Occlusion());
49 } 46 }
50 } 47 }
51 48
52 class TestablePictureLayerTiling : public PictureLayerTiling { 49 class TestablePictureLayerTiling : public PictureLayerTiling {
53 public: 50 public:
54 using PictureLayerTiling::SetLiveTilesRect; 51 using PictureLayerTiling::SetLiveTilesRect;
55 using PictureLayerTiling::TileAt; 52 using PictureLayerTiling::TileAt;
56 53
57 static scoped_ptr<TestablePictureLayerTiling> Create( 54 static scoped_ptr<TestablePictureLayerTiling> Create(
58 float contents_scale, 55 float contents_scale,
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after
204 SetLiveRectAndVerifyTiles(gfx::Rect(original_layer_size)); 201 SetLiveRectAndVerifyTiles(gfx::Rect(original_layer_size));
205 202
206 // Tiling only has one tile, since its total size is less than one. 203 // Tiling only has one tile, since its total size is less than one.
207 EXPECT_TRUE(tiling_->TileAt(0, 0)); 204 EXPECT_TRUE(tiling_->TileAt(0, 0));
208 205
209 // Stop creating tiles so that any invalidations are left as holes. 206 // Stop creating tiles so that any invalidations are left as holes.
210 client_.set_allow_create_tile(false); 207 client_.set_allow_create_tile(false);
211 208
212 Region invalidation = 209 Region invalidation =
213 SubtractRegions(gfx::Rect(tile_size), gfx::Rect(original_layer_size)); 210 SubtractRegions(gfx::Rect(tile_size), gfx::Rect(original_layer_size));
214 tiling_->UpdateTilesToCurrentRasterSource(invalidation, gfx::Size(200, 200)); 211 tiling_->UpdateTilesToCurrentRasterSource(client_.raster_source(),
212 invalidation, gfx::Size(200, 200));
215 EXPECT_FALSE(tiling_->TileAt(0, 0)); 213 EXPECT_FALSE(tiling_->TileAt(0, 0));
216 } 214 }
217 215
218 TEST_F(PictureLayerTilingIteratorTest, CreateMissingTilesStaysInsideLiveRect) { 216 TEST_F(PictureLayerTilingIteratorTest, CreateMissingTilesStaysInsideLiveRect) {
219 // The tiling has three rows and columns. 217 // The tiling has three rows and columns.
220 Initialize(gfx::Size(100, 100), 1, gfx::Size(250, 250)); 218 Initialize(gfx::Size(100, 100), 1, gfx::Size(250, 250));
221 EXPECT_EQ(3, tiling_->TilingDataForTesting().num_tiles_x()); 219 EXPECT_EQ(3, tiling_->TilingDataForTesting().num_tiles_x());
222 EXPECT_EQ(3, tiling_->TilingDataForTesting().num_tiles_y()); 220 EXPECT_EQ(3, tiling_->TilingDataForTesting().num_tiles_y());
223 221
224 // The live tiles rect is at the very edge of the right-most and 222 // The live tiles rect is at the very edge of the right-most and
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
259 EXPECT_TRUE(tiling_->TileAt(2, 3)); 257 EXPECT_TRUE(tiling_->TileAt(2, 3));
260 EXPECT_TRUE(tiling_->TileAt(1, 3)); 258 EXPECT_TRUE(tiling_->TileAt(1, 3));
261 EXPECT_TRUE(tiling_->TileAt(0, 3)); 259 EXPECT_TRUE(tiling_->TileAt(0, 3));
262 260
263 int right = tiling_->TilingDataForTesting().TileBounds(2, 2).x(); 261 int right = tiling_->TilingDataForTesting().TileBounds(2, 2).x();
264 int bottom = tiling_->TilingDataForTesting().TileBounds(2, 3).y(); 262 int bottom = tiling_->TilingDataForTesting().TileBounds(2, 3).y();
265 263
266 // Shrink the tiling so that the last tile row/column is entirely in the 264 // Shrink the tiling so that the last tile row/column is entirely in the
267 // border pixels of the interior tiles. That row/column is removed. 265 // border pixels of the interior tiles. That row/column is removed.
268 Region invalidation; 266 Region invalidation;
269 tiling_->UpdateTilesToCurrentRasterSource(invalidation, 267 tiling_->UpdateTilesToCurrentRasterSource(
270 gfx::Size(right + 1, bottom + 1)); 268 client_.raster_source(), invalidation, gfx::Size(right + 1, bottom + 1));
271 EXPECT_EQ(2, tiling_->TilingDataForTesting().num_tiles_x()); 269 EXPECT_EQ(2, tiling_->TilingDataForTesting().num_tiles_x());
272 EXPECT_EQ(3, tiling_->TilingDataForTesting().num_tiles_y()); 270 EXPECT_EQ(3, tiling_->TilingDataForTesting().num_tiles_y());
273 271
274 // The live tiles rect was clamped to the pile size. 272 // The live tiles rect was clamped to the pile size.
275 EXPECT_EQ(gfx::Rect(right + 1, bottom + 1), tiling_->live_tiles_rect()); 273 EXPECT_EQ(gfx::Rect(right + 1, bottom + 1), tiling_->live_tiles_rect());
276 274
277 // Since the row/column is gone, the tiles should be gone too. 275 // Since the row/column is gone, the tiles should be gone too.
278 EXPECT_FALSE(tiling_->TileAt(2, 0)); 276 EXPECT_FALSE(tiling_->TileAt(2, 0));
279 EXPECT_FALSE(tiling_->TileAt(2, 1)); 277 EXPECT_FALSE(tiling_->TileAt(2, 1));
280 EXPECT_FALSE(tiling_->TileAt(2, 2)); 278 EXPECT_FALSE(tiling_->TileAt(2, 2));
281 EXPECT_FALSE(tiling_->TileAt(2, 3)); 279 EXPECT_FALSE(tiling_->TileAt(2, 3));
282 EXPECT_FALSE(tiling_->TileAt(1, 3)); 280 EXPECT_FALSE(tiling_->TileAt(1, 3));
283 EXPECT_FALSE(tiling_->TileAt(0, 3)); 281 EXPECT_FALSE(tiling_->TileAt(0, 3));
284 282
285 // Growing outside the current right/bottom tiles border pixels should create 283 // Growing outside the current right/bottom tiles border pixels should create
286 // the tiles again, even though the live rect has not changed size. 284 // the tiles again, even though the live rect has not changed size.
287 tiling_->UpdateTilesToCurrentRasterSource(invalidation, 285 tiling_->UpdateTilesToCurrentRasterSource(
288 gfx::Size(right + 2, bottom + 2)); 286 client_.raster_source(), invalidation, gfx::Size(right + 2, bottom + 2));
289 EXPECT_EQ(3, tiling_->TilingDataForTesting().num_tiles_x()); 287 EXPECT_EQ(3, tiling_->TilingDataForTesting().num_tiles_x());
290 EXPECT_EQ(4, tiling_->TilingDataForTesting().num_tiles_y()); 288 EXPECT_EQ(4, tiling_->TilingDataForTesting().num_tiles_y());
291 289
292 // Not changed. 290 // Not changed.
293 EXPECT_EQ(gfx::Rect(right + 1, bottom + 1), tiling_->live_tiles_rect()); 291 EXPECT_EQ(gfx::Rect(right + 1, bottom + 1), tiling_->live_tiles_rect());
294 292
295 // The last row/column tiles are inside the live tiles rect. 293 // The last row/column tiles are inside the live tiles rect.
296 EXPECT_TRUE(gfx::Rect(right + 1, bottom + 1).Intersects( 294 EXPECT_TRUE(gfx::Rect(right + 1, bottom + 1).Intersects(
297 tiling_->TilingDataForTesting().TileBounds(2, 0))); 295 tiling_->TilingDataForTesting().TileBounds(2, 0)));
298 EXPECT_TRUE(gfx::Rect(right + 1, bottom + 1).Intersects( 296 EXPECT_TRUE(gfx::Rect(right + 1, bottom + 1).Intersects(
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
414 SetLiveRectAndVerifyTiles(gfx::Rect(original_layer_size)); 412 SetLiveRectAndVerifyTiles(gfx::Rect(original_layer_size));
415 413
416 // Tiling only has one tile, since its total size is less than one. 414 // Tiling only has one tile, since its total size is less than one.
417 EXPECT_TRUE(tiling_->TileAt(0, 0)); 415 EXPECT_TRUE(tiling_->TileAt(0, 0));
418 416
419 // Stop creating tiles so that any invalidations are left as holes. 417 // Stop creating tiles so that any invalidations are left as holes.
420 client_.set_allow_create_tile(false); 418 client_.set_allow_create_tile(false);
421 419
422 Region invalidation = 420 Region invalidation =
423 SubtractRegions(gfx::Rect(tile_size), gfx::Rect(original_layer_size)); 421 SubtractRegions(gfx::Rect(tile_size), gfx::Rect(original_layer_size));
424 tiling_->UpdateTilesToCurrentRasterSource(invalidation, gfx::Size(200, 200)); 422 tiling_->UpdateTilesToCurrentRasterSource(client_.raster_source(),
423 invalidation, gfx::Size(200, 200));
425 EXPECT_FALSE(tiling_->TileAt(0, 0)); 424 EXPECT_FALSE(tiling_->TileAt(0, 0));
426 425
427 // The original tile was the same size after resize, but it would include new 426 // The original tile was the same size after resize, but it would include new
428 // border pixels. 427 // border pixels.
429 EXPECT_EQ(gfx::Rect(original_layer_size), 428 EXPECT_EQ(gfx::Rect(original_layer_size),
430 tiling_->TilingDataForTesting().TileBounds(0, 0)); 429 tiling_->TilingDataForTesting().TileBounds(0, 0));
431 } 430 }
432 431
433 TEST_F(PictureLayerTilingIteratorTest, LiveTilesExactlyCoverLiveTileRect) { 432 TEST_F(PictureLayerTilingIteratorTest, LiveTilesExactlyCoverLiveTileRect) {
434 Initialize(gfx::Size(100, 100), 1, gfx::Size(1099, 801)); 433 Initialize(gfx::Size(100, 100), 1, gfx::Size(1099, 801));
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
536 client.set_skewport_extrapolation_limit_in_content_pixels(75); 535 client.set_skewport_extrapolation_limit_in_content_pixels(75);
537 client.set_tree(ACTIVE_TREE); 536 client.set_tree(ACTIVE_TREE);
538 scoped_ptr<TestablePictureLayerTiling> tiling; 537 scoped_ptr<TestablePictureLayerTiling> tiling;
539 538
540 gfx::Rect viewport(0, 0, 100, 100); 539 gfx::Rect viewport(0, 0, 100, 100);
541 gfx::Size layer_bounds(200, 200); 540 gfx::Size layer_bounds(200, 200);
542 541
543 client.SetTileSize(gfx::Size(100, 100)); 542 client.SetTileSize(gfx::Size(100, 100));
544 tiling = TestablePictureLayerTiling::Create(1.0f, layer_bounds, &client); 543 tiling = TestablePictureLayerTiling::Create(1.0f, layer_bounds, &client);
545 544
546 tiling->ComputeTilePriorityRects( 545 tiling->ComputeTilePriorityRects(viewport, 1.f, 1.0, Occlusion());
547 ACTIVE_TREE, viewport, 1.f, 1.0, Occlusion());
548 546
549 // Move viewport down 50 pixels in 0.5 seconds. 547 // Move viewport down 50 pixels in 0.5 seconds.
550 gfx::Rect down_skewport = 548 gfx::Rect down_skewport =
551 tiling->ComputeSkewport(1.5, gfx::Rect(0, 50, 100, 100)); 549 tiling->ComputeSkewport(1.5, gfx::Rect(0, 50, 100, 100));
552 550
553 EXPECT_EQ(0, down_skewport.x()); 551 EXPECT_EQ(0, down_skewport.x());
554 EXPECT_EQ(50, down_skewport.y()); 552 EXPECT_EQ(50, down_skewport.y());
555 EXPECT_EQ(100, down_skewport.width()); 553 EXPECT_EQ(100, down_skewport.width());
556 EXPECT_EQ(175, down_skewport.height()); 554 EXPECT_EQ(175, down_skewport.height());
557 EXPECT_TRUE(down_skewport.Contains(gfx::Rect(0, 50, 100, 100))); 555 EXPECT_TRUE(down_skewport.Contains(gfx::Rect(0, 50, 100, 100)));
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
603 FakePictureLayerTilingClient client; 601 FakePictureLayerTilingClient client;
604 scoped_ptr<TestablePictureLayerTiling> tiling; 602 scoped_ptr<TestablePictureLayerTiling> tiling;
605 603
606 gfx::Rect viewport(0, 0, 100, 100); 604 gfx::Rect viewport(0, 0, 100, 100);
607 gfx::Size layer_bounds(200, 200); 605 gfx::Size layer_bounds(200, 200);
608 606
609 client.SetTileSize(gfx::Size(100, 100)); 607 client.SetTileSize(gfx::Size(100, 100));
610 client.set_tree(ACTIVE_TREE); 608 client.set_tree(ACTIVE_TREE);
611 tiling = TestablePictureLayerTiling::Create(1.0f, layer_bounds, &client); 609 tiling = TestablePictureLayerTiling::Create(1.0f, layer_bounds, &client);
612 610
613 tiling->ComputeTilePriorityRects( 611 tiling->ComputeTilePriorityRects(viewport, 1.f, 1.0, Occlusion());
614 ACTIVE_TREE, viewport, 1.f, 1.0, Occlusion());
615 612
616 // Move viewport down 50 pixels in 0.5 seconds. 613 // Move viewport down 50 pixels in 0.5 seconds.
617 gfx::Rect down_skewport = 614 gfx::Rect down_skewport =
618 tiling->ComputeSkewport(1.5, gfx::Rect(0, 50, 100, 100)); 615 tiling->ComputeSkewport(1.5, gfx::Rect(0, 50, 100, 100));
619 616
620 EXPECT_EQ(0, down_skewport.x()); 617 EXPECT_EQ(0, down_skewport.x());
621 EXPECT_EQ(50, down_skewport.y()); 618 EXPECT_EQ(50, down_skewport.y());
622 EXPECT_EQ(100, down_skewport.width()); 619 EXPECT_EQ(100, down_skewport.width());
623 EXPECT_EQ(200, down_skewport.height()); 620 EXPECT_EQ(200, down_skewport.height());
624 621
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
671 668
672 // Tiling at 0.25 scale: this should create 47x47 tiles of size 10x10. 669 // Tiling at 0.25 scale: this should create 47x47 tiles of size 10x10.
673 // The reason is that each tile has a one pixel border, so tile at (1, 2) 670 // The reason is that each tile has a one pixel border, so tile at (1, 2)
674 // for instance begins at (8, 16) pixels. So tile at (46, 46) will begin at 671 // for instance begins at (8, 16) pixels. So tile at (46, 46) will begin at
675 // (368, 368) and extend to the end of 1500 * 0.25 = 375 edge of the 672 // (368, 368) and extend to the end of 1500 * 0.25 = 375 edge of the
676 // tiling. 673 // tiling.
677 tiling = TestablePictureLayerTiling::Create(0.25f, layer_bounds, &client); 674 tiling = TestablePictureLayerTiling::Create(0.25f, layer_bounds, &client);
678 gfx::Rect viewport_in_content_space = 675 gfx::Rect viewport_in_content_space =
679 gfx::ToEnclosedRect(gfx::ScaleRect(viewport, 0.25f)); 676 gfx::ToEnclosedRect(gfx::ScaleRect(viewport, 0.25f));
680 677
681 tiling->ComputeTilePriorityRects( 678 tiling->ComputeTilePriorityRects(viewport, 1.f, 1.0, Occlusion());
682 ACTIVE_TREE, viewport, 1.f, 1.0, Occlusion());
683 tiling->UpdateAllTilePrioritiesForTesting(); 679 tiling->UpdateAllTilePrioritiesForTesting();
684 680
685 gfx::Rect soon_rect = viewport; 681 gfx::Rect soon_rect = viewport;
686 soon_rect.Inset(-312.f, -312.f, -312.f, -312.f); 682 soon_rect.Inset(-312.f, -312.f, -312.f, -312.f);
687 gfx::Rect soon_rect_in_content_space = 683 gfx::Rect soon_rect_in_content_space =
688 gfx::ToEnclosedRect(gfx::ScaleRect(soon_rect, 0.25f)); 684 gfx::ToEnclosedRect(gfx::ScaleRect(soon_rect, 0.25f));
689 685
690 // Sanity checks. 686 // Sanity checks.
691 for (int i = 0; i < 47; ++i) { 687 for (int i = 0; i < 47; ++i) {
692 for (int j = 0; j < 47; ++j) { 688 for (int j = 0; j < 47; ++j) {
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
757 soon_rect = viewport; 753 soon_rect = viewport;
758 soon_rect.Inset(-312.f, -312.f, -312.f, -312.f); 754 soon_rect.Inset(-312.f, -312.f, -312.f, -312.f);
759 soon_rect_in_content_space = 755 soon_rect_in_content_space =
760 gfx::ToEnclosedRect(gfx::ScaleRect(soon_rect, 0.25f)); 756 gfx::ToEnclosedRect(gfx::ScaleRect(soon_rect, 0.25f));
761 757
762 EXPECT_EQ(0, skewport.x()); 758 EXPECT_EQ(0, skewport.x());
763 EXPECT_EQ(10, skewport.y()); 759 EXPECT_EQ(10, skewport.y());
764 EXPECT_EQ(25, skewport.width()); 760 EXPECT_EQ(25, skewport.width());
765 EXPECT_EQ(35, skewport.height()); 761 EXPECT_EQ(35, skewport.height());
766 762
767 tiling->ComputeTilePriorityRects( 763 tiling->ComputeTilePriorityRects(viewport, 1.f, 2.0, Occlusion());
768 ACTIVE_TREE, viewport, 1.f, 2.0, Occlusion());
769 tiling->UpdateAllTilePrioritiesForTesting(); 764 tiling->UpdateAllTilePrioritiesForTesting();
770 765
771 have_now = false; 766 have_now = false;
772 have_eventually = false; 767 have_eventually = false;
773 have_soon = false; 768 have_soon = false;
774 769
775 // Viewport moved, so we expect to find some NOW tiles, some SOON tiles and 770 // Viewport moved, so we expect to find some NOW tiles, some SOON tiles and
776 // some EVENTUALLY tiles. 771 // some EVENTUALLY tiles.
777 for (int i = 0; i < 47; ++i) { 772 for (int i = 0; i < 47; ++i) {
778 for (int j = 0; j < 47; ++j) { 773 for (int j = 0; j < 47; ++j) {
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
810 priority = tiling->TileAt(5, 1)->priority(ACTIVE_TREE); 805 priority = tiling->TileAt(5, 1)->priority(ACTIVE_TREE);
811 EXPECT_FLOAT_EQ(68.f, priority.distance_to_visible); 806 EXPECT_FLOAT_EQ(68.f, priority.distance_to_visible);
812 807
813 priority = tiling->TileAt(2, 5)->priority(ACTIVE_TREE); 808 priority = tiling->TileAt(2, 5)->priority(ACTIVE_TREE);
814 EXPECT_FLOAT_EQ(28.f, priority.distance_to_visible); 809 EXPECT_FLOAT_EQ(28.f, priority.distance_to_visible);
815 810
816 priority = tiling->TileAt(3, 4)->priority(ACTIVE_TREE); 811 priority = tiling->TileAt(3, 4)->priority(ACTIVE_TREE);
817 EXPECT_FLOAT_EQ(4.f, priority.distance_to_visible); 812 EXPECT_FLOAT_EQ(4.f, priority.distance_to_visible);
818 813
819 // Change the underlying layer scale. 814 // Change the underlying layer scale.
820 tiling->ComputeTilePriorityRects( 815 tiling->ComputeTilePriorityRects(viewport, 2.0f, 3.0, Occlusion());
821 ACTIVE_TREE, viewport, 2.0f, 3.0, Occlusion());
822 tiling->UpdateAllTilePrioritiesForTesting(); 816 tiling->UpdateAllTilePrioritiesForTesting();
823 817
824 priority = tiling->TileAt(5, 1)->priority(ACTIVE_TREE); 818 priority = tiling->TileAt(5, 1)->priority(ACTIVE_TREE);
825 EXPECT_FLOAT_EQ(136.f, priority.distance_to_visible); 819 EXPECT_FLOAT_EQ(136.f, priority.distance_to_visible);
826 820
827 priority = tiling->TileAt(2, 5)->priority(ACTIVE_TREE); 821 priority = tiling->TileAt(2, 5)->priority(ACTIVE_TREE);
828 EXPECT_FLOAT_EQ(56.f, priority.distance_to_visible); 822 EXPECT_FLOAT_EQ(56.f, priority.distance_to_visible);
829 823
830 priority = tiling->TileAt(3, 4)->priority(ACTIVE_TREE); 824 priority = tiling->TileAt(3, 4)->priority(ACTIVE_TREE);
831 EXPECT_FLOAT_EQ(8.f, priority.distance_to_visible); 825 EXPECT_FLOAT_EQ(8.f, priority.distance_to_visible);
832 826
833 // Test additional scales. 827 // Test additional scales.
834 tiling = TestablePictureLayerTiling::Create(0.2f, layer_bounds, &client); 828 tiling = TestablePictureLayerTiling::Create(0.2f, layer_bounds, &client);
835 tiling->ComputeTilePriorityRects( 829 tiling->ComputeTilePriorityRects(viewport, 1.0f, 4.0, Occlusion());
836 ACTIVE_TREE, viewport, 1.0f, 4.0, Occlusion());
837 tiling->UpdateAllTilePrioritiesForTesting(); 830 tiling->UpdateAllTilePrioritiesForTesting();
838 831
839 priority = tiling->TileAt(5, 1)->priority(ACTIVE_TREE); 832 priority = tiling->TileAt(5, 1)->priority(ACTIVE_TREE);
840 EXPECT_FLOAT_EQ(110.f, priority.distance_to_visible); 833 EXPECT_FLOAT_EQ(110.f, priority.distance_to_visible);
841 834
842 priority = tiling->TileAt(2, 5)->priority(ACTIVE_TREE); 835 priority = tiling->TileAt(2, 5)->priority(ACTIVE_TREE);
843 EXPECT_FLOAT_EQ(70.f, priority.distance_to_visible); 836 EXPECT_FLOAT_EQ(70.f, priority.distance_to_visible);
844 837
845 priority = tiling->TileAt(3, 4)->priority(ACTIVE_TREE); 838 priority = tiling->TileAt(3, 4)->priority(ACTIVE_TREE);
846 EXPECT_FLOAT_EQ(60.f, priority.distance_to_visible); 839 EXPECT_FLOAT_EQ(60.f, priority.distance_to_visible);
847 840
848 tiling->ComputeTilePriorityRects( 841 tiling->ComputeTilePriorityRects(viewport, 0.5f, 5.0, Occlusion());
849 ACTIVE_TREE, viewport, 0.5f, 5.0, Occlusion());
850 tiling->UpdateAllTilePrioritiesForTesting(); 842 tiling->UpdateAllTilePrioritiesForTesting();
851 843
852 priority = tiling->TileAt(5, 1)->priority(ACTIVE_TREE); 844 priority = tiling->TileAt(5, 1)->priority(ACTIVE_TREE);
853 EXPECT_FLOAT_EQ(55.f, priority.distance_to_visible); 845 EXPECT_FLOAT_EQ(55.f, priority.distance_to_visible);
854 846
855 priority = tiling->TileAt(2, 5)->priority(ACTIVE_TREE); 847 priority = tiling->TileAt(2, 5)->priority(ACTIVE_TREE);
856 EXPECT_FLOAT_EQ(35.f, priority.distance_to_visible); 848 EXPECT_FLOAT_EQ(35.f, priority.distance_to_visible);
857 849
858 priority = tiling->TileAt(3, 4)->priority(ACTIVE_TREE); 850 priority = tiling->TileAt(3, 4)->priority(ACTIVE_TREE);
859 EXPECT_FLOAT_EQ(30.f, priority.distance_to_visible); 851 EXPECT_FLOAT_EQ(30.f, priority.distance_to_visible);
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after
1088 gfx::Rect viewport(50, 50, 100, 100); 1080 gfx::Rect viewport(50, 50, 100, 100);
1089 gfx::Size layer_bounds(800, 800); 1081 gfx::Size layer_bounds(800, 800);
1090 1082
1091 gfx::Rect soon_rect = viewport; 1083 gfx::Rect soon_rect = viewport;
1092 soon_rect.Inset(-312.f, -312.f, -312.f, -312.f); 1084 soon_rect.Inset(-312.f, -312.f, -312.f, -312.f);
1093 1085
1094 client.SetTileSize(gfx::Size(30, 30)); 1086 client.SetTileSize(gfx::Size(30, 30));
1095 client.set_tree(ACTIVE_TREE); 1087 client.set_tree(ACTIVE_TREE);
1096 1088
1097 tiling = TestablePictureLayerTiling::Create(1.0f, layer_bounds, &client); 1089 tiling = TestablePictureLayerTiling::Create(1.0f, layer_bounds, &client);
1098 tiling->ComputeTilePriorityRects( 1090 tiling->ComputeTilePriorityRects(viewport, 1.0f, 1.0, Occlusion());
1099 ACTIVE_TREE, viewport, 1.0f, 1.0, Occlusion());
1100 tiling->UpdateAllTilePrioritiesForTesting(); 1091 tiling->UpdateAllTilePrioritiesForTesting();
1101 1092
1102 PictureLayerTiling::TilingRasterTileIterator empty_iterator; 1093 PictureLayerTiling::TilingRasterTileIterator empty_iterator;
1103 EXPECT_FALSE(empty_iterator); 1094 EXPECT_FALSE(empty_iterator);
1104 1095
1105 std::vector<Tile*> all_tiles = tiling->AllTilesForTesting(); 1096 std::vector<Tile*> all_tiles = tiling->AllTilesForTesting();
1106 1097
1107 // Sanity check. 1098 // Sanity check.
1108 EXPECT_EQ(841u, all_tiles.size()); 1099 EXPECT_EQ(841u, all_tiles.size());
1109 1100
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
1194 scoped_ptr<TestablePictureLayerTiling> tiling; 1185 scoped_ptr<TestablePictureLayerTiling> tiling;
1195 1186
1196 gfx::Rect viewport(50, 0, 100, 100); 1187 gfx::Rect viewport(50, 0, 100, 100);
1197 gfx::Rect moved_viewport(50, 0, 100, 500); 1188 gfx::Rect moved_viewport(50, 0, 100, 500);
1198 gfx::Size layer_bounds(1000, 1000); 1189 gfx::Size layer_bounds(1000, 1000);
1199 1190
1200 client.SetTileSize(gfx::Size(30, 30)); 1191 client.SetTileSize(gfx::Size(30, 30));
1201 client.set_tree(ACTIVE_TREE); 1192 client.set_tree(ACTIVE_TREE);
1202 1193
1203 tiling = TestablePictureLayerTiling::Create(1.f, layer_bounds, &client); 1194 tiling = TestablePictureLayerTiling::Create(1.f, layer_bounds, &client);
1204 tiling->ComputeTilePriorityRects( 1195 tiling->ComputeTilePriorityRects(viewport, 1.0f, 1.0, Occlusion());
1205 ACTIVE_TREE, viewport, 1.0f, 1.0, Occlusion()); 1196 tiling->ComputeTilePriorityRects(moved_viewport, 1.0f, 2.0, Occlusion());
1206 tiling->ComputeTilePriorityRects(
1207 ACTIVE_TREE, moved_viewport, 1.0f, 2.0, Occlusion());
1208 tiling->UpdateAllTilePrioritiesForTesting(); 1197 tiling->UpdateAllTilePrioritiesForTesting();
1209 1198
1210 gfx::Rect soon_rect = moved_viewport; 1199 gfx::Rect soon_rect = moved_viewport;
1211 soon_rect.Inset(-312.f, -312.f, -312.f, -312.f); 1200 soon_rect.Inset(-312.f, -312.f, -312.f, -312.f);
1212 1201
1213 // There are 3 bins in TilePriority. 1202 // There are 3 bins in TilePriority.
1214 bool have_tiles[3] = {}; 1203 bool have_tiles[3] = {};
1215 Tile* last_tile = NULL; 1204 Tile* last_tile = NULL;
1216 int eventually_bin_order_correct_count = 0; 1205 int eventually_bin_order_correct_count = 0;
1217 int eventually_bin_order_incorrect_count = 0; 1206 int eventually_bin_order_incorrect_count = 0;
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
1269 FakePictureLayerTilingClient client(resource_provider.get()); 1258 FakePictureLayerTilingClient client(resource_provider.get());
1270 scoped_ptr<TestablePictureLayerTiling> tiling; 1259 scoped_ptr<TestablePictureLayerTiling> tiling;
1271 1260
1272 gfx::Rect viewport(50, 50, 100, 100); 1261 gfx::Rect viewport(50, 50, 100, 100);
1273 gfx::Size layer_bounds(2000, 2000); 1262 gfx::Size layer_bounds(2000, 2000);
1274 1263
1275 client.SetTileSize(gfx::Size(30, 30)); 1264 client.SetTileSize(gfx::Size(30, 30));
1276 client.set_tree(ACTIVE_TREE); 1265 client.set_tree(ACTIVE_TREE);
1277 1266
1278 tiling = TestablePictureLayerTiling::Create(1.0f, layer_bounds, &client); 1267 tiling = TestablePictureLayerTiling::Create(1.0f, layer_bounds, &client);
1279 tiling->ComputeTilePriorityRects( 1268 tiling->ComputeTilePriorityRects(viewport, 1.0f, 1.0, Occlusion());
1280 ACTIVE_TREE, viewport, 1.0f, 1.0, Occlusion());
1281 tiling->UpdateAllTilePrioritiesForTesting(); 1269 tiling->UpdateAllTilePrioritiesForTesting();
1282 1270
1283 PictureLayerTiling::TilingRasterTileIterator empty_iterator; 1271 PictureLayerTiling::TilingRasterTileIterator empty_iterator;
1284 EXPECT_FALSE(empty_iterator); 1272 EXPECT_FALSE(empty_iterator);
1285 1273
1286 std::vector<Tile*> all_tiles = tiling->AllTilesForTesting(); 1274 std::vector<Tile*> all_tiles = tiling->AllTilesForTesting();
1287 1275
1288 PictureLayerTiling::TilingEvictionTileIterator it( 1276 PictureLayerTiling::TilingEvictionTileIterator it(
1289 tiling.get(), SMOOTHNESS_TAKES_PRIORITY, PictureLayerTiling::NOW); 1277 tiling.get(), SMOOTHNESS_TAKES_PRIORITY, PictureLayerTiling::NOW);
1290 1278
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
1356 } 1344 }
1357 1345
1358 TEST_F(PictureLayerTilingIteratorTest, TilesExist) { 1346 TEST_F(PictureLayerTilingIteratorTest, TilesExist) {
1359 gfx::Size layer_bounds(1099, 801); 1347 gfx::Size layer_bounds(1099, 801);
1360 Initialize(gfx::Size(100, 100), 1.f, layer_bounds); 1348 Initialize(gfx::Size(100, 100), 1.f, layer_bounds);
1361 VerifyTilesExactlyCoverRect(1.f, gfx::Rect(layer_bounds)); 1349 VerifyTilesExactlyCoverRect(1.f, gfx::Rect(layer_bounds));
1362 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false)); 1350 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false));
1363 1351
1364 client_.set_tree(ACTIVE_TREE); 1352 client_.set_tree(ACTIVE_TREE);
1365 tiling_->ComputeTilePriorityRects( 1353 tiling_->ComputeTilePriorityRects(
1366 ACTIVE_TREE,
1367 gfx::Rect(layer_bounds), // visible content rect 1354 gfx::Rect(layer_bounds), // visible content rect
1368 1.f, // current contents scale 1355 1.f, // current contents scale
1369 1.0, // current frame time 1356 1.0, // current frame time
1370 Occlusion()); 1357 Occlusion());
1371 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, true)); 1358 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, true));
1372 1359
1373 // Make the viewport rect empty. All tiles are killed and become zombies. 1360 // Make the viewport rect empty. All tiles are killed and become zombies.
1374 tiling_->ComputeTilePriorityRects(ACTIVE_TREE, 1361 tiling_->ComputeTilePriorityRects(gfx::Rect(), // visible content rect
1375 gfx::Rect(), // visible content rect
1376 1.f, // current contents scale 1362 1.f, // current contents scale
1377 2.0, // current frame time 1363 2.0, // current frame time
1378 Occlusion()); 1364 Occlusion());
1379 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false)); 1365 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false));
1380 } 1366 }
1381 1367
1382 TEST_F(PictureLayerTilingIteratorTest, TilesExistGiantViewport) { 1368 TEST_F(PictureLayerTilingIteratorTest, TilesExistGiantViewport) {
1383 gfx::Size layer_bounds(1099, 801); 1369 gfx::Size layer_bounds(1099, 801);
1384 Initialize(gfx::Size(100, 100), 1.f, layer_bounds); 1370 Initialize(gfx::Size(100, 100), 1.f, layer_bounds);
1385 VerifyTilesExactlyCoverRect(1.f, gfx::Rect(layer_bounds)); 1371 VerifyTilesExactlyCoverRect(1.f, gfx::Rect(layer_bounds));
1386 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false)); 1372 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false));
1387 1373
1388 gfx::Rect giant_rect(-10000000, -10000000, 1000000000, 1000000000); 1374 gfx::Rect giant_rect(-10000000, -10000000, 1000000000, 1000000000);
1389 1375
1390 client_.set_tree(ACTIVE_TREE); 1376 client_.set_tree(ACTIVE_TREE);
1391 tiling_->ComputeTilePriorityRects( 1377 tiling_->ComputeTilePriorityRects(
1392 ACTIVE_TREE,
1393 gfx::Rect(layer_bounds), // visible content rect 1378 gfx::Rect(layer_bounds), // visible content rect
1394 1.f, // current contents scale 1379 1.f, // current contents scale
1395 1.0, // current frame time 1380 1.0, // current frame time
1396 Occlusion()); 1381 Occlusion());
1397 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, true)); 1382 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, true));
1398 1383
1399 // If the visible content rect is empty, it should still have live tiles. 1384 // If the visible content rect is empty, it should still have live tiles.
1400 tiling_->ComputeTilePriorityRects(ACTIVE_TREE, 1385 tiling_->ComputeTilePriorityRects(giant_rect, // visible content rect
1401 giant_rect, // visible content rect
1402 1.f, // current contents scale 1386 1.f, // current contents scale
1403 2.0, // current frame time 1387 2.0, // current frame time
1404 Occlusion()); 1388 Occlusion());
1405 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, true)); 1389 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, true));
1406 } 1390 }
1407 1391
1408 TEST_F(PictureLayerTilingIteratorTest, TilesExistOutsideViewport) { 1392 TEST_F(PictureLayerTilingIteratorTest, TilesExistOutsideViewport) {
1409 gfx::Size layer_bounds(1099, 801); 1393 gfx::Size layer_bounds(1099, 801);
1410 Initialize(gfx::Size(100, 100), 1.f, layer_bounds); 1394 Initialize(gfx::Size(100, 100), 1.f, layer_bounds);
1411 VerifyTilesExactlyCoverRect(1.f, gfx::Rect(layer_bounds)); 1395 VerifyTilesExactlyCoverRect(1.f, gfx::Rect(layer_bounds));
1412 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false)); 1396 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false));
1413 1397
1414 // This rect does not intersect with the layer, as the layer is outside the 1398 // This rect does not intersect with the layer, as the layer is outside the
1415 // viewport. 1399 // viewport.
1416 gfx::Rect viewport_rect(1100, 0, 1000, 1000); 1400 gfx::Rect viewport_rect(1100, 0, 1000, 1000);
1417 EXPECT_FALSE(viewport_rect.Intersects(gfx::Rect(layer_bounds))); 1401 EXPECT_FALSE(viewport_rect.Intersects(gfx::Rect(layer_bounds)));
1418 1402
1419 client_.set_tree(ACTIVE_TREE); 1403 client_.set_tree(ACTIVE_TREE);
1420 tiling_->ComputeTilePriorityRects(ACTIVE_TREE, 1404 tiling_->ComputeTilePriorityRects(viewport_rect, // visible content rect
1421 viewport_rect, // visible content rect
1422 1.f, // current contents scale 1405 1.f, // current contents scale
1423 1.0, // current frame time 1406 1.0, // current frame time
1424 Occlusion()); 1407 Occlusion());
1425 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, true)); 1408 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, true));
1426 } 1409 }
1427 1410
1428 static void TilesIntersectingRectExist(const gfx::Rect& rect, 1411 static void TilesIntersectingRectExist(const gfx::Rect& rect,
1429 bool intersect_exists, 1412 bool intersect_exists,
1430 Tile* tile, 1413 Tile* tile,
1431 const gfx::Rect& geometry_rect) { 1414 const gfx::Rect& geometry_rect) {
1432 bool intersects = rect.Intersects(geometry_rect); 1415 bool intersects = rect.Intersects(geometry_rect);
1433 bool expected_exists = intersect_exists ? intersects : !intersects; 1416 bool expected_exists = intersect_exists ? intersects : !intersects;
1434 EXPECT_EQ(expected_exists, tile != NULL) 1417 EXPECT_EQ(expected_exists, tile != NULL)
1435 << "Rects intersecting " << rect.ToString() << " should exist. " 1418 << "Rects intersecting " << rect.ToString() << " should exist. "
1436 << "Current tile rect is " << geometry_rect.ToString(); 1419 << "Current tile rect is " << geometry_rect.ToString();
1437 } 1420 }
1438 1421
1439 TEST_F(PictureLayerTilingIteratorTest, 1422 TEST_F(PictureLayerTilingIteratorTest,
1440 TilesExistLargeViewportAndLayerWithSmallVisibleArea) { 1423 TilesExistLargeViewportAndLayerWithSmallVisibleArea) {
1441 gfx::Size layer_bounds(10000, 10000); 1424 gfx::Size layer_bounds(10000, 10000);
1442 Initialize(gfx::Size(100, 100), 1.f, layer_bounds); 1425 Initialize(gfx::Size(100, 100), 1.f, layer_bounds);
1443 VerifyTilesExactlyCoverRect(1.f, gfx::Rect(layer_bounds)); 1426 VerifyTilesExactlyCoverRect(1.f, gfx::Rect(layer_bounds));
1444 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false)); 1427 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false));
1445 1428
1446 gfx::Rect visible_rect(8000, 8000, 50, 50); 1429 gfx::Rect visible_rect(8000, 8000, 50, 50);
1447 1430
1448 client_.set_tree(ACTIVE_TREE); 1431 client_.set_tree(ACTIVE_TREE);
1449 set_max_tiles_for_interest_area(1); 1432 set_max_tiles_for_interest_area(1);
1450 tiling_->ComputeTilePriorityRects(ACTIVE_TREE, 1433 tiling_->ComputeTilePriorityRects(visible_rect, // visible content rect
1451 visible_rect, // visible content rect
1452 1.f, // current contents scale 1434 1.f, // current contents scale
1453 1.0, // current frame time 1435 1.0, // current frame time
1454 Occlusion()); 1436 Occlusion());
1455 VerifyTiles(1.f, 1437 VerifyTiles(1.f,
1456 gfx::Rect(layer_bounds), 1438 gfx::Rect(layer_bounds),
1457 base::Bind(&TilesIntersectingRectExist, visible_rect, true)); 1439 base::Bind(&TilesIntersectingRectExist, visible_rect, true));
1458 } 1440 }
1459 1441
1460 TEST_F(PictureLayerTilingIteratorTest, AddTilingsToMatchScale) { 1442 TEST_F(PictureLayerTilingIteratorTest, AddTilingsToMatchScale) {
1461 gfx::Size layer_bounds(1099, 801); 1443 gfx::Size layer_bounds(1099, 801);
1462 gfx::Size tile_size(100, 100); 1444 gfx::Size tile_size(100, 100);
1463 1445
1464 client_.SetTileSize(tile_size); 1446 client_.SetTileSize(tile_size);
1465 client_.set_tree(PENDING_TREE); 1447 client_.set_tree(PENDING_TREE);
1466 1448
1467 PictureLayerTilingSet active_set(&client_); 1449 auto active_set = PictureLayerTilingSet::Create(&client_);
1468 1450
1469 active_set.AddTiling(1.f, layer_bounds); 1451 active_set->AddTiling(1.f, layer_bounds);
1470 1452
1471 VerifyTiles(active_set.tiling_at(0), 1453 VerifyTiles(active_set->tiling_at(0), 1.f, gfx::Rect(layer_bounds),
1472 1.f,
1473 gfx::Rect(layer_bounds),
1474 base::Bind(&TileExists, false)); 1454 base::Bind(&TileExists, false));
1475 1455
1476 UpdateAllTilePriorities(&active_set, 1456 UpdateAllTilePriorities(active_set.get(),
1477 PENDING_TREE,
1478 gfx::Rect(layer_bounds), // visible content rect 1457 gfx::Rect(layer_bounds), // visible content rect
1479 1.f, // current contents scale 1458 1.f, // current contents scale
1480 1.0); // current frame time 1459 1.0); // current frame time
1481 1460
1482 // The active tiling has tiles now. 1461 // The active tiling has tiles now.
1483 VerifyTiles(active_set.tiling_at(0), 1462 VerifyTiles(active_set->tiling_at(0), 1.f, gfx::Rect(layer_bounds),
1484 1.f,
1485 gfx::Rect(layer_bounds),
1486 base::Bind(&TileExists, true)); 1463 base::Bind(&TileExists, true));
1487 1464
1488 // Add the same tilings to the pending set. 1465 // Add the same tilings to the pending set.
1489 PictureLayerTilingSet pending_set(&client_); 1466 auto pending_set = PictureLayerTilingSet::Create(&client_);
1490 Region invalidation; 1467 Region invalidation;
1491 pending_set.SyncTilings(active_set, layer_bounds, invalidation, 0.f); 1468 pending_set->SyncTilings(*active_set, layer_bounds, invalidation, 0.f,
1469 client_.raster_source());
1492 1470
1493 // The pending tiling starts with no tiles. 1471 // The pending tiling starts with no tiles.
1494 VerifyTiles(pending_set.tiling_at(0), 1472 VerifyTiles(pending_set->tiling_at(0), 1.f, gfx::Rect(layer_bounds),
1495 1.f,
1496 gfx::Rect(layer_bounds),
1497 base::Bind(&TileExists, false)); 1473 base::Bind(&TileExists, false));
1498 1474
1499 // ComputeTilePriorityRects on the pending tiling at the same frame time. The 1475 // ComputeTilePriorityRects on the pending tiling at the same frame time. The
1500 // pending tiling should get tiles. 1476 // pending tiling should get tiles.
1501 UpdateAllTilePriorities(&pending_set, 1477 UpdateAllTilePriorities(pending_set.get(),
1502 PENDING_TREE,
1503 gfx::Rect(layer_bounds), // visible content rect 1478 gfx::Rect(layer_bounds), // visible content rect
1504 1.f, // current contents scale 1479 1.f, // current contents scale
1505 1.0); // current frame time 1480 1.0); // current frame time
1506 1481
1507 VerifyTiles(pending_set.tiling_at(0), 1482 VerifyTiles(pending_set->tiling_at(0), 1.f, gfx::Rect(layer_bounds),
1508 1.f,
1509 gfx::Rect(layer_bounds),
1510 base::Bind(&TileExists, true)); 1483 base::Bind(&TileExists, true));
1511 } 1484 }
1512 1485
1513 TEST(ComputeTilePriorityRectsTest, VisibleTiles) { 1486 TEST(ComputeTilePriorityRectsTest, VisibleTiles) {
1514 // The TilePriority of visible tiles should have zero distance_to_visible 1487 // The TilePriority of visible tiles should have zero distance_to_visible
1515 // and time_to_visible. 1488 // and time_to_visible.
1516 1489
1517 FakePictureLayerTilingClient client; 1490 FakePictureLayerTilingClient client;
1518 scoped_ptr<TestablePictureLayerTiling> tiling; 1491 scoped_ptr<TestablePictureLayerTiling> tiling;
1519 1492
1520 gfx::Size device_viewport(800, 600); 1493 gfx::Size device_viewport(800, 600);
1521 gfx::Size last_layer_bounds(200, 200); 1494 gfx::Size last_layer_bounds(200, 200);
1522 gfx::Size current_layer_bounds(200, 200); 1495 gfx::Size current_layer_bounds(200, 200);
1523 float current_layer_contents_scale = 1.f; 1496 float current_layer_contents_scale = 1.f;
1524 gfx::Transform current_screen_transform; 1497 gfx::Transform current_screen_transform;
1525 double current_frame_time_in_seconds = 1.0; 1498 double current_frame_time_in_seconds = 1.0;
1526 1499
1527 gfx::Rect viewport_in_layer_space = ViewportInLayerSpace( 1500 gfx::Rect viewport_in_layer_space = ViewportInLayerSpace(
1528 current_screen_transform, device_viewport); 1501 current_screen_transform, device_viewport);
1529 1502
1530 client.SetTileSize(gfx::Size(100, 100)); 1503 client.SetTileSize(gfx::Size(100, 100));
1531 client.set_tree(ACTIVE_TREE); 1504 client.set_tree(ACTIVE_TREE);
1532 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale 1505 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale
1533 current_layer_bounds, 1506 current_layer_bounds,
1534 &client); 1507 &client);
1535 1508
1536 tiling->ComputeTilePriorityRects(ACTIVE_TREE, 1509 tiling->ComputeTilePriorityRects(viewport_in_layer_space,
1537 viewport_in_layer_space,
1538 current_layer_contents_scale, 1510 current_layer_contents_scale,
1539 current_frame_time_in_seconds, 1511 current_frame_time_in_seconds, Occlusion());
1540 Occlusion());
1541 tiling->UpdateAllTilePrioritiesForTesting(); 1512 tiling->UpdateAllTilePrioritiesForTesting();
1542 1513
1543 ASSERT_TRUE(tiling->TileAt(0, 0)); 1514 ASSERT_TRUE(tiling->TileAt(0, 0));
1544 ASSERT_TRUE(tiling->TileAt(0, 1)); 1515 ASSERT_TRUE(tiling->TileAt(0, 1));
1545 ASSERT_TRUE(tiling->TileAt(1, 0)); 1516 ASSERT_TRUE(tiling->TileAt(1, 0));
1546 ASSERT_TRUE(tiling->TileAt(1, 1)); 1517 ASSERT_TRUE(tiling->TileAt(1, 1));
1547 1518
1548 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); 1519 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE);
1549 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); 1520 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible);
1550 EXPECT_FLOAT_EQ(TilePriority::NOW, priority.priority_bin); 1521 EXPECT_FLOAT_EQ(TilePriority::NOW, priority.priority_bin);
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
1582 1553
1583 gfx::Rect viewport_in_layer_space = ViewportInLayerSpace( 1554 gfx::Rect viewport_in_layer_space = ViewportInLayerSpace(
1584 current_screen_transform, device_viewport); 1555 current_screen_transform, device_viewport);
1585 1556
1586 client.SetTileSize(gfx::Size(100, 100)); 1557 client.SetTileSize(gfx::Size(100, 100));
1587 client.set_tree(ACTIVE_TREE); 1558 client.set_tree(ACTIVE_TREE);
1588 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale 1559 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale
1589 current_layer_bounds, 1560 current_layer_bounds,
1590 &client); 1561 &client);
1591 1562
1592 tiling->ComputeTilePriorityRects(ACTIVE_TREE, 1563 tiling->ComputeTilePriorityRects(viewport_in_layer_space,
1593 viewport_in_layer_space,
1594 current_layer_contents_scale, 1564 current_layer_contents_scale,
1595 current_frame_time_in_seconds, 1565 current_frame_time_in_seconds, Occlusion());
1596 Occlusion());
1597 tiling->UpdateAllTilePrioritiesForTesting(); 1566 tiling->UpdateAllTilePrioritiesForTesting();
1598 1567
1599 ASSERT_TRUE(tiling->TileAt(0, 0)); 1568 ASSERT_TRUE(tiling->TileAt(0, 0));
1600 ASSERT_TRUE(tiling->TileAt(0, 1)); 1569 ASSERT_TRUE(tiling->TileAt(0, 1));
1601 ASSERT_TRUE(tiling->TileAt(1, 0)); 1570 ASSERT_TRUE(tiling->TileAt(1, 0));
1602 ASSERT_TRUE(tiling->TileAt(1, 1)); 1571 ASSERT_TRUE(tiling->TileAt(1, 1));
1603 1572
1604 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); 1573 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE);
1605 EXPECT_GT(priority.distance_to_visible, 0.f); 1574 EXPECT_GT(priority.distance_to_visible, 0.f);
1606 EXPECT_NE(TilePriority::NOW, priority.priority_bin); 1575 EXPECT_NE(TilePriority::NOW, priority.priority_bin);
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
1648 1617
1649 gfx::Rect viewport_in_layer_space = ViewportInLayerSpace( 1618 gfx::Rect viewport_in_layer_space = ViewportInLayerSpace(
1650 current_screen_transform, device_viewport); 1619 current_screen_transform, device_viewport);
1651 1620
1652 client.SetTileSize(gfx::Size(100, 100)); 1621 client.SetTileSize(gfx::Size(100, 100));
1653 client.set_tree(ACTIVE_TREE); 1622 client.set_tree(ACTIVE_TREE);
1654 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale 1623 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale
1655 current_layer_bounds, 1624 current_layer_bounds,
1656 &client); 1625 &client);
1657 1626
1658 tiling->ComputeTilePriorityRects(ACTIVE_TREE, 1627 tiling->ComputeTilePriorityRects(viewport_in_layer_space,
1659 viewport_in_layer_space,
1660 current_layer_contents_scale, 1628 current_layer_contents_scale,
1661 current_frame_time_in_seconds, 1629 current_frame_time_in_seconds, Occlusion());
1662 Occlusion());
1663 tiling->UpdateAllTilePrioritiesForTesting(); 1630 tiling->UpdateAllTilePrioritiesForTesting();
1664 1631
1665 ASSERT_TRUE(tiling->TileAt(0, 0)); 1632 ASSERT_TRUE(tiling->TileAt(0, 0));
1666 ASSERT_TRUE(tiling->TileAt(0, 1)); 1633 ASSERT_TRUE(tiling->TileAt(0, 1));
1667 ASSERT_TRUE(tiling->TileAt(1, 0)); 1634 ASSERT_TRUE(tiling->TileAt(1, 0));
1668 ASSERT_TRUE(tiling->TileAt(1, 1)); 1635 ASSERT_TRUE(tiling->TileAt(1, 1));
1669 1636
1670 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); 1637 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE);
1671 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); 1638 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible);
1672 EXPECT_FLOAT_EQ(TilePriority::NOW, priority.priority_bin); 1639 EXPECT_FLOAT_EQ(TilePriority::NOW, priority.priority_bin);
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
1708 1675
1709 gfx::Rect viewport_in_layer_space = ViewportInLayerSpace( 1676 gfx::Rect viewport_in_layer_space = ViewportInLayerSpace(
1710 current_screen_transform, device_viewport); 1677 current_screen_transform, device_viewport);
1711 1678
1712 client.SetTileSize(gfx::Size(100, 100)); 1679 client.SetTileSize(gfx::Size(100, 100));
1713 client.set_tree(ACTIVE_TREE); 1680 client.set_tree(ACTIVE_TREE);
1714 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale 1681 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale
1715 current_layer_bounds, 1682 current_layer_bounds,
1716 &client); 1683 &client);
1717 1684
1718 tiling->ComputeTilePriorityRects(ACTIVE_TREE, 1685 tiling->ComputeTilePriorityRects(viewport_in_layer_space,
1719 viewport_in_layer_space,
1720 current_layer_contents_scale, 1686 current_layer_contents_scale,
1721 current_frame_time_in_seconds, 1687 current_frame_time_in_seconds, Occlusion());
1722 Occlusion());
1723 tiling->UpdateAllTilePrioritiesForTesting(); 1688 tiling->UpdateAllTilePrioritiesForTesting();
1724 1689
1725 ASSERT_TRUE(tiling->TileAt(0, 0)); 1690 ASSERT_TRUE(tiling->TileAt(0, 0));
1726 ASSERT_TRUE(tiling->TileAt(0, 1)); 1691 ASSERT_TRUE(tiling->TileAt(0, 1));
1727 ASSERT_TRUE(tiling->TileAt(1, 0)); 1692 ASSERT_TRUE(tiling->TileAt(1, 0));
1728 ASSERT_TRUE(tiling->TileAt(1, 1)); 1693 ASSERT_TRUE(tiling->TileAt(1, 1));
1729 1694
1730 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); 1695 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE);
1731 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); 1696 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible);
1732 EXPECT_EQ(TilePriority::NOW, priority.priority_bin); 1697 EXPECT_EQ(TilePriority::NOW, priority.priority_bin);
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
1792 1757
1793 gfx::Rect viewport_in_layer_space = ViewportInLayerSpace( 1758 gfx::Rect viewport_in_layer_space = ViewportInLayerSpace(
1794 current_screen_transform, device_viewport); 1759 current_screen_transform, device_viewport);
1795 1760
1796 client.SetTileSize(gfx::Size(100, 100)); 1761 client.SetTileSize(gfx::Size(100, 100));
1797 client.set_tree(ACTIVE_TREE); 1762 client.set_tree(ACTIVE_TREE);
1798 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale 1763 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale
1799 current_layer_bounds, 1764 current_layer_bounds,
1800 &client); 1765 &client);
1801 1766
1802 tiling->ComputeTilePriorityRects(ACTIVE_TREE, 1767 tiling->ComputeTilePriorityRects(viewport_in_layer_space,
1803 viewport_in_layer_space,
1804 current_layer_contents_scale, 1768 current_layer_contents_scale,
1805 current_frame_time_in_seconds, 1769 current_frame_time_in_seconds, Occlusion());
1806 Occlusion());
1807 tiling->UpdateAllTilePrioritiesForTesting(); 1770 tiling->UpdateAllTilePrioritiesForTesting();
1808 1771
1809 ASSERT_TRUE(tiling->TileAt(0, 0)); 1772 ASSERT_TRUE(tiling->TileAt(0, 0));
1810 ASSERT_TRUE(tiling->TileAt(0, 1)); 1773 ASSERT_TRUE(tiling->TileAt(0, 1));
1811 ASSERT_TRUE(tiling->TileAt(1, 0)); 1774 ASSERT_TRUE(tiling->TileAt(1, 0));
1812 ASSERT_TRUE(tiling->TileAt(1, 1)); 1775 ASSERT_TRUE(tiling->TileAt(1, 1));
1813 1776
1814 // All tiles will have a positive distance_to_visible 1777 // All tiles will have a positive distance_to_visible
1815 // and an infinite time_to_visible. 1778 // and an infinite time_to_visible.
1816 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); 1779 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE);
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
1886 1849
1887 gfx::Rect viewport_in_layer_space = ViewportInLayerSpace( 1850 gfx::Rect viewport_in_layer_space = ViewportInLayerSpace(
1888 current_screen_transform, device_viewport); 1851 current_screen_transform, device_viewport);
1889 1852
1890 client.SetTileSize(gfx::Size(100, 100)); 1853 client.SetTileSize(gfx::Size(100, 100));
1891 client.set_tree(ACTIVE_TREE); 1854 client.set_tree(ACTIVE_TREE);
1892 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale 1855 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale
1893 current_layer_bounds, 1856 current_layer_bounds,
1894 &client); 1857 &client);
1895 1858
1896 tiling->ComputeTilePriorityRects(ACTIVE_TREE, 1859 tiling->ComputeTilePriorityRects(viewport_in_layer_space,
1897 viewport_in_layer_space,
1898 current_layer_contents_scale, 1860 current_layer_contents_scale,
1899 current_frame_time_in_seconds, 1861 current_frame_time_in_seconds, Occlusion());
1900 Occlusion());
1901 tiling->UpdateAllTilePrioritiesForTesting(); 1862 tiling->UpdateAllTilePrioritiesForTesting();
1902 1863
1903 ASSERT_TRUE(tiling->TileAt(0, 0)); 1864 ASSERT_TRUE(tiling->TileAt(0, 0));
1904 ASSERT_TRUE(tiling->TileAt(0, 1)); 1865 ASSERT_TRUE(tiling->TileAt(0, 1));
1905 ASSERT_TRUE(tiling->TileAt(1, 0)); 1866 ASSERT_TRUE(tiling->TileAt(1, 0));
1906 ASSERT_TRUE(tiling->TileAt(1, 1)); 1867 ASSERT_TRUE(tiling->TileAt(1, 1));
1907 1868
1908 // Left-side tiles will be clipped by the transform, so we have to assume 1869 // Left-side tiles will be clipped by the transform, so we have to assume
1909 // they are visible just in case. 1870 // they are visible just in case.
1910 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); 1871 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE);
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
1951 gfx::Rect viewport_in_layer_space = ViewportInLayerSpace( 1912 gfx::Rect viewport_in_layer_space = ViewportInLayerSpace(
1952 current_screen_transform, device_viewport); 1913 current_screen_transform, device_viewport);
1953 1914
1954 client.SetTileSize(gfx::Size(100, 100)); 1915 client.SetTileSize(gfx::Size(100, 100));
1955 client.set_tree(ACTIVE_TREE); 1916 client.set_tree(ACTIVE_TREE);
1956 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale 1917 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale
1957 current_layer_bounds, 1918 current_layer_bounds,
1958 &client); 1919 &client);
1959 1920
1960 // previous ("last") frame 1921 // previous ("last") frame
1961 tiling->ComputeTilePriorityRects(ACTIVE_TREE, 1922 tiling->ComputeTilePriorityRects(viewport_in_layer_space,
1962 viewport_in_layer_space,
1963 last_layer_contents_scale, 1923 last_layer_contents_scale,
1964 last_frame_time_in_seconds, 1924 last_frame_time_in_seconds, Occlusion());
1965 Occlusion());
1966 1925
1967 // current frame 1926 // current frame
1968 tiling->ComputeTilePriorityRects(ACTIVE_TREE, 1927 tiling->ComputeTilePriorityRects(viewport_in_layer_space,
1969 viewport_in_layer_space,
1970 current_layer_contents_scale, 1928 current_layer_contents_scale,
1971 current_frame_time_in_seconds, 1929 current_frame_time_in_seconds, Occlusion());
1972 Occlusion());
1973 tiling->UpdateAllTilePrioritiesForTesting(); 1930 tiling->UpdateAllTilePrioritiesForTesting();
1974 1931
1975 ASSERT_TRUE(tiling->TileAt(0, 0)); 1932 ASSERT_TRUE(tiling->TileAt(0, 0));
1976 ASSERT_TRUE(tiling->TileAt(0, 1)); 1933 ASSERT_TRUE(tiling->TileAt(0, 1));
1977 ASSERT_TRUE(tiling->TileAt(1, 0)); 1934 ASSERT_TRUE(tiling->TileAt(1, 0));
1978 ASSERT_TRUE(tiling->TileAt(1, 1)); 1935 ASSERT_TRUE(tiling->TileAt(1, 1));
1979 1936
1980 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); 1937 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE);
1981 EXPECT_GT(priority.distance_to_visible, 0.f); 1938 EXPECT_GT(priority.distance_to_visible, 0.f);
1982 EXPECT_NE(TilePriority::NOW, priority.priority_bin); 1939 EXPECT_NE(TilePriority::NOW, priority.priority_bin);
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
2030 gfx::Rect viewport_in_layer_space = ViewportInLayerSpace( 1987 gfx::Rect viewport_in_layer_space = ViewportInLayerSpace(
2031 current_screen_transform, device_viewport); 1988 current_screen_transform, device_viewport);
2032 1989
2033 client.SetTileSize(gfx::Size(100, 100)); 1990 client.SetTileSize(gfx::Size(100, 100));
2034 client.set_tree(ACTIVE_TREE); 1991 client.set_tree(ACTIVE_TREE);
2035 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale 1992 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale
2036 current_layer_bounds, 1993 current_layer_bounds,
2037 &client); 1994 &client);
2038 1995
2039 // previous ("last") frame 1996 // previous ("last") frame
2040 tiling->ComputeTilePriorityRects(ACTIVE_TREE, 1997 tiling->ComputeTilePriorityRects(viewport_in_layer_space,
2041 viewport_in_layer_space,
2042 last_layer_contents_scale, 1998 last_layer_contents_scale,
2043 last_frame_time_in_seconds, 1999 last_frame_time_in_seconds, Occlusion());
2044 Occlusion());
2045 2000
2046 // current frame 2001 // current frame
2047 tiling->ComputeTilePriorityRects(ACTIVE_TREE, 2002 tiling->ComputeTilePriorityRects(viewport_in_layer_space,
2048 viewport_in_layer_space,
2049 current_layer_contents_scale, 2003 current_layer_contents_scale,
2050 current_frame_time_in_seconds, 2004 current_frame_time_in_seconds, Occlusion());
2051 Occlusion());
2052 tiling->UpdateAllTilePrioritiesForTesting(); 2005 tiling->UpdateAllTilePrioritiesForTesting();
2053 2006
2054 ASSERT_TRUE(tiling->TileAt(0, 0)); 2007 ASSERT_TRUE(tiling->TileAt(0, 0));
2055 ASSERT_TRUE(tiling->TileAt(0, 1)); 2008 ASSERT_TRUE(tiling->TileAt(0, 1));
2056 ASSERT_TRUE(tiling->TileAt(1, 0)); 2009 ASSERT_TRUE(tiling->TileAt(1, 0));
2057 ASSERT_TRUE(tiling->TileAt(1, 1)); 2010 ASSERT_TRUE(tiling->TileAt(1, 1));
2058 2011
2059 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); 2012 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE);
2060 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); 2013 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible);
2061 EXPECT_EQ(TilePriority::NOW, priority.priority_bin); 2014 EXPECT_EQ(TilePriority::NOW, priority.priority_bin);
(...skipping 21 matching lines...) Expand all
2083 FakePictureLayerTilingClient active_client; 2036 FakePictureLayerTilingClient active_client;
2084 scoped_ptr<TestablePictureLayerTiling> active_tiling; 2037 scoped_ptr<TestablePictureLayerTiling> active_tiling;
2085 2038
2086 active_client.SetTileSize(gfx::Size(100, 100)); 2039 active_client.SetTileSize(gfx::Size(100, 100));
2087 active_client.set_tree(ACTIVE_TREE); 2040 active_client.set_tree(ACTIVE_TREE);
2088 active_client.set_max_tiles_for_interest_area(10); 2041 active_client.set_max_tiles_for_interest_area(10);
2089 active_tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale 2042 active_tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale
2090 gfx::Size(10000, 10000), 2043 gfx::Size(10000, 10000),
2091 &active_client); 2044 &active_client);
2092 // Create all tiles on this tiling. 2045 // Create all tiles on this tiling.
2093 active_tiling->ComputeTilePriorityRects( 2046 active_tiling->ComputeTilePriorityRects(gfx::Rect(0, 0, 100, 100), 1.0f, 1.0f,
2094 ACTIVE_TREE, gfx::Rect(0, 0, 100, 100), 1.0f, 1.0f, Occlusion()); 2047 Occlusion());
2095 2048
2096 FakePictureLayerTilingClient recycle_client; 2049 FakePictureLayerTilingClient recycle_client;
2097 recycle_client.SetTileSize(gfx::Size(100, 100)); 2050 recycle_client.SetTileSize(gfx::Size(100, 100));
2098 recycle_client.set_tree(PENDING_TREE); 2051 recycle_client.set_tree(PENDING_TREE);
2099 recycle_client.set_twin_tiling(active_tiling.get()); 2052 recycle_client.set_twin_tiling(active_tiling.get());
2100 recycle_client.set_max_tiles_for_interest_area(10); 2053 recycle_client.set_max_tiles_for_interest_area(10);
2101 2054
2102 scoped_ptr<TestablePictureLayerTiling> recycle_tiling; 2055 scoped_ptr<TestablePictureLayerTiling> recycle_tiling;
2103 recycle_tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale 2056 recycle_tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale
2104 gfx::Size(10000, 10000), 2057 gfx::Size(10000, 10000),
2105 &recycle_client); 2058 &recycle_client);
2106 2059
2107 // Create all tiles on the second tiling. All tiles should be shared. 2060 // Create all tiles on the second tiling. All tiles should be shared.
2108 recycle_tiling->ComputeTilePriorityRects( 2061 recycle_tiling->ComputeTilePriorityRects(gfx::Rect(0, 0, 100, 100), 1.0f,
2109 PENDING_TREE, gfx::Rect(0, 0, 100, 100), 1.0f, 1.0f, Occlusion()); 2062 1.0f, Occlusion());
2110 2063
2111 // Set the second tiling as recycled. 2064 // Set the second tiling as recycled.
2112 active_client.set_twin_tiling(NULL); 2065 active_client.set_twin_tiling(NULL);
2113 active_client.set_recycled_twin_tiling(recycle_tiling.get()); 2066 active_client.set_recycled_twin_tiling(recycle_tiling.get());
2114 recycle_client.set_twin_tiling(NULL); 2067 recycle_client.set_twin_tiling(NULL);
2115 2068
2116 // Verify that tiles exist and are shared. 2069 // Verify that tiles exist and are shared.
2117 EXPECT_TRUE(active_tiling->TileAt(0, 0)); 2070 EXPECT_TRUE(active_tiling->TileAt(0, 0));
2118 EXPECT_TRUE(recycle_tiling->TileAt(0, 0)); 2071 EXPECT_TRUE(recycle_tiling->TileAt(0, 0));
2119 EXPECT_EQ(active_tiling->TileAt(0, 0), recycle_tiling->TileAt(0, 0)); 2072 EXPECT_EQ(active_tiling->TileAt(0, 0), recycle_tiling->TileAt(0, 0));
2120 2073
2121 // Move the viewport far away from the (0, 0) tile. 2074 // Move the viewport far away from the (0, 0) tile.
2122 active_tiling->ComputeTilePriorityRects( 2075 active_tiling->ComputeTilePriorityRects(gfx::Rect(9000, 9000, 100, 100), 1.0f,
2123 ACTIVE_TREE, gfx::Rect(9000, 9000, 100, 100), 1.0f, 2.0, Occlusion()); 2076 2.0, Occlusion());
2124 // Ensure the tile was deleted on both tilings. 2077 // Ensure the tile was deleted on both tilings.
2125 EXPECT_FALSE(active_tiling->TileAt(0, 0)); 2078 EXPECT_FALSE(active_tiling->TileAt(0, 0));
2126 EXPECT_FALSE(recycle_tiling->TileAt(0, 0)); 2079 EXPECT_FALSE(recycle_tiling->TileAt(0, 0));
2127 2080
2128 // Move the viewport back to (0, 0) tile. 2081 // Move the viewport back to (0, 0) tile.
2129 active_tiling->ComputeTilePriorityRects( 2082 active_tiling->ComputeTilePriorityRects(gfx::Rect(0, 0, 100, 100), 1.0f, 3.0,
2130 ACTIVE_TREE, gfx::Rect(0, 0, 100, 100), 1.0f, 3.0, Occlusion()); 2083 Occlusion());
2131 2084
2132 // Ensure that we now have a tile here, but the recycle tiling does not. 2085 // Ensure that we now have a tile here, but the recycle tiling does not.
2133 EXPECT_TRUE(active_tiling->TileAt(0, 0)); 2086 EXPECT_TRUE(active_tiling->TileAt(0, 0));
2134 EXPECT_FALSE(recycle_tiling->TileAt(0, 0)); 2087 EXPECT_FALSE(recycle_tiling->TileAt(0, 0));
2135 } 2088 }
2136 2089
2137 TEST(PictureLayerTilingTest, RecycledTilesClearedOnReset) { 2090 TEST(PictureLayerTilingTest, RecycledTilesClearedOnReset) {
2138 FakePictureLayerTilingClient active_client; 2091 FakePictureLayerTilingClient active_client;
2139 scoped_ptr<TestablePictureLayerTiling> active_tiling; 2092 scoped_ptr<TestablePictureLayerTiling> active_tiling;
2140 2093
2141 active_client.SetTileSize(gfx::Size(100, 100)); 2094 active_client.SetTileSize(gfx::Size(100, 100));
2142 active_client.set_tree(ACTIVE_TREE); 2095 active_client.set_tree(ACTIVE_TREE);
2143 active_tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale 2096 active_tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale
2144 gfx::Size(100, 100), 2097 gfx::Size(100, 100),
2145 &active_client); 2098 &active_client);
2146 // Create all tiles on this tiling. 2099 // Create all tiles on this tiling.
2147 active_tiling->ComputeTilePriorityRects( 2100 active_tiling->ComputeTilePriorityRects(gfx::Rect(0, 0, 100, 100), 1.0f, 1.0f,
2148 ACTIVE_TREE, gfx::Rect(0, 0, 100, 100), 1.0f, 1.0f, Occlusion()); 2101 Occlusion());
2149 2102
2150 FakePictureLayerTilingClient recycle_client; 2103 FakePictureLayerTilingClient recycle_client;
2151 recycle_client.SetTileSize(gfx::Size(100, 100)); 2104 recycle_client.SetTileSize(gfx::Size(100, 100));
2152 recycle_client.set_tree(PENDING_TREE); 2105 recycle_client.set_tree(PENDING_TREE);
2153 recycle_client.set_twin_tiling(active_tiling.get()); 2106 recycle_client.set_twin_tiling(active_tiling.get());
2154 recycle_client.set_max_tiles_for_interest_area(10); 2107 recycle_client.set_max_tiles_for_interest_area(10);
2155 2108
2156 scoped_ptr<TestablePictureLayerTiling> recycle_tiling; 2109 scoped_ptr<TestablePictureLayerTiling> recycle_tiling;
2157 recycle_tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale 2110 recycle_tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale
2158 gfx::Size(100, 100), 2111 gfx::Size(100, 100),
2159 &recycle_client); 2112 &recycle_client);
2160 2113
2161 // Create all tiles on the recycle tiling. All tiles should be shared. 2114 // Create all tiles on the recycle tiling. All tiles should be shared.
2162 recycle_tiling->ComputeTilePriorityRects( 2115 recycle_tiling->ComputeTilePriorityRects(gfx::Rect(0, 0, 100, 100), 1.0f,
2163 PENDING_TREE, gfx::Rect(0, 0, 100, 100), 1.0f, 1.0f, Occlusion()); 2116 1.0f, Occlusion());
2164 2117
2165 // Set the second tiling as recycled. 2118 // Set the second tiling as recycled.
2166 active_client.set_twin_tiling(NULL); 2119 active_client.set_twin_tiling(NULL);
2167 active_client.set_recycled_twin_tiling(recycle_tiling.get()); 2120 active_client.set_recycled_twin_tiling(recycle_tiling.get());
2168 recycle_client.set_twin_tiling(NULL); 2121 recycle_client.set_twin_tiling(NULL);
2169 2122
2170 // Verify that tiles exist and are shared. 2123 // Verify that tiles exist and are shared.
2171 EXPECT_TRUE(active_tiling->TileAt(0, 0)); 2124 EXPECT_TRUE(active_tiling->TileAt(0, 0));
2172 EXPECT_TRUE(recycle_tiling->TileAt(0, 0)); 2125 EXPECT_TRUE(recycle_tiling->TileAt(0, 0));
2173 EXPECT_EQ(active_tiling->TileAt(0, 0), recycle_tiling->TileAt(0, 0)); 2126 EXPECT_EQ(active_tiling->TileAt(0, 0), recycle_tiling->TileAt(0, 0));
(...skipping 13 matching lines...) Expand all
2187 EXPECT_EQ(4u, tiling_->AllRefTilesForTesting().size()); 2140 EXPECT_EQ(4u, tiling_->AllRefTilesForTesting().size());
2188 2141
2189 client_.SetTileSize(gfx::Size(250, 200)); 2142 client_.SetTileSize(gfx::Size(250, 200));
2190 client_.set_tree(PENDING_TREE); 2143 client_.set_tree(PENDING_TREE);
2191 2144
2192 // Tile size in the tiling should still be 150x100. 2145 // Tile size in the tiling should still be 150x100.
2193 EXPECT_EQ(150, tiling_->TilingDataForTesting().max_texture_size().width()); 2146 EXPECT_EQ(150, tiling_->TilingDataForTesting().max_texture_size().width());
2194 EXPECT_EQ(100, tiling_->TilingDataForTesting().max_texture_size().height()); 2147 EXPECT_EQ(100, tiling_->TilingDataForTesting().max_texture_size().height());
2195 2148
2196 Region invalidation; 2149 Region invalidation;
2197 tiling_->UpdateTilesToCurrentRasterSource(invalidation, gfx::Size(250, 150)); 2150 tiling_->UpdateTilesToCurrentRasterSource(client_.raster_source(),
2151 invalidation, gfx::Size(250, 150));
2198 2152
2199 // Tile size in the tiling should be resized to 250x200. 2153 // Tile size in the tiling should be resized to 250x200.
2200 EXPECT_EQ(250, tiling_->TilingDataForTesting().max_texture_size().width()); 2154 EXPECT_EQ(250, tiling_->TilingDataForTesting().max_texture_size().width());
2201 EXPECT_EQ(200, tiling_->TilingDataForTesting().max_texture_size().height()); 2155 EXPECT_EQ(200, tiling_->TilingDataForTesting().max_texture_size().height());
2202 EXPECT_EQ(0u, tiling_->AllRefTilesForTesting().size()); 2156 EXPECT_EQ(0u, tiling_->AllRefTilesForTesting().size());
2203 } 2157 }
2204 2158
2205 } // namespace 2159 } // namespace
2206 } // namespace cc 2160 } // namespace cc
OLDNEW
« no previous file with comments | « cc/resources/picture_layer_tiling_set_unittest.cc ('k') | cc/resources/picture_pile.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698