| OLD | NEW |
| 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 26 matching lines...) Expand all Loading... |
| 37 static void UpdateAllTilePriorities(PictureLayerTilingSet* set, | 37 static void UpdateAllTilePriorities(PictureLayerTilingSet* set, |
| 38 WhichTree tree, | 38 WhichTree tree, |
| 39 const gfx::Rect& visible_layer_rect, | 39 const gfx::Rect& visible_layer_rect, |
| 40 float layer_contents_scale, | 40 float layer_contents_scale, |
| 41 double current_frame_time_in_seconds) { | 41 double current_frame_time_in_seconds) { |
| 42 for (size_t i = 0; i < set->num_tilings(); ++i) { | 42 for (size_t i = 0; i < set->num_tilings(); ++i) { |
| 43 set->tiling_at(i)->UpdateTilePriorities(tree, | 43 set->tiling_at(i)->UpdateTilePriorities(tree, |
| 44 visible_layer_rect, | 44 visible_layer_rect, |
| 45 layer_contents_scale, | 45 layer_contents_scale, |
| 46 current_frame_time_in_seconds, | 46 current_frame_time_in_seconds, |
| 47 Occlusion()); | 47 NULL, |
| 48 NULL, |
| 49 gfx::Transform()); |
| 48 } | 50 } |
| 49 } | 51 } |
| 50 | 52 |
| 51 class TestablePictureLayerTiling : public PictureLayerTiling { | 53 class TestablePictureLayerTiling : public PictureLayerTiling { |
| 52 public: | 54 public: |
| 53 using PictureLayerTiling::SetLiveTilesRect; | 55 using PictureLayerTiling::SetLiveTilesRect; |
| 54 using PictureLayerTiling::TileAt; | 56 using PictureLayerTiling::TileAt; |
| 55 | 57 |
| 56 static scoped_ptr<TestablePictureLayerTiling> Create( | 58 static scoped_ptr<TestablePictureLayerTiling> Create( |
| 57 float contents_scale, | 59 float contents_scale, |
| (...skipping 473 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 531 client.set_skewport_extrapolation_limit_in_content_pixels(75); | 533 client.set_skewport_extrapolation_limit_in_content_pixels(75); |
| 532 client.set_tree(ACTIVE_TREE); | 534 client.set_tree(ACTIVE_TREE); |
| 533 scoped_ptr<TestablePictureLayerTiling> tiling; | 535 scoped_ptr<TestablePictureLayerTiling> tiling; |
| 534 | 536 |
| 535 gfx::Rect viewport(0, 0, 100, 100); | 537 gfx::Rect viewport(0, 0, 100, 100); |
| 536 gfx::Size layer_bounds(200, 200); | 538 gfx::Size layer_bounds(200, 200); |
| 537 | 539 |
| 538 client.SetTileSize(gfx::Size(100, 100)); | 540 client.SetTileSize(gfx::Size(100, 100)); |
| 539 tiling = TestablePictureLayerTiling::Create(1.0f, layer_bounds, &client); | 541 tiling = TestablePictureLayerTiling::Create(1.0f, layer_bounds, &client); |
| 540 | 542 |
| 541 tiling->UpdateTilePriorities(ACTIVE_TREE, viewport, 1.f, 1.0, Occlusion()); | 543 tiling->UpdateTilePriorities( |
| 544 ACTIVE_TREE, viewport, 1.f, 1.0, NULL, NULL, gfx::Transform()); |
| 542 | 545 |
| 543 // Move viewport down 50 pixels in 0.5 seconds. | 546 // Move viewport down 50 pixels in 0.5 seconds. |
| 544 gfx::Rect down_skewport = | 547 gfx::Rect down_skewport = |
| 545 tiling->ComputeSkewport(1.5, gfx::Rect(0, 50, 100, 100)); | 548 tiling->ComputeSkewport(1.5, gfx::Rect(0, 50, 100, 100)); |
| 546 | 549 |
| 547 EXPECT_EQ(0, down_skewport.x()); | 550 EXPECT_EQ(0, down_skewport.x()); |
| 548 EXPECT_EQ(50, down_skewport.y()); | 551 EXPECT_EQ(50, down_skewport.y()); |
| 549 EXPECT_EQ(100, down_skewport.width()); | 552 EXPECT_EQ(100, down_skewport.width()); |
| 550 EXPECT_EQ(175, down_skewport.height()); | 553 EXPECT_EQ(175, down_skewport.height()); |
| 551 EXPECT_TRUE(down_skewport.Contains(gfx::Rect(0, 50, 100, 100))); | 554 EXPECT_TRUE(down_skewport.Contains(gfx::Rect(0, 50, 100, 100))); |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 597 FakePictureLayerTilingClient client; | 600 FakePictureLayerTilingClient client; |
| 598 scoped_ptr<TestablePictureLayerTiling> tiling; | 601 scoped_ptr<TestablePictureLayerTiling> tiling; |
| 599 | 602 |
| 600 gfx::Rect viewport(0, 0, 100, 100); | 603 gfx::Rect viewport(0, 0, 100, 100); |
| 601 gfx::Size layer_bounds(200, 200); | 604 gfx::Size layer_bounds(200, 200); |
| 602 | 605 |
| 603 client.SetTileSize(gfx::Size(100, 100)); | 606 client.SetTileSize(gfx::Size(100, 100)); |
| 604 client.set_tree(ACTIVE_TREE); | 607 client.set_tree(ACTIVE_TREE); |
| 605 tiling = TestablePictureLayerTiling::Create(1.0f, layer_bounds, &client); | 608 tiling = TestablePictureLayerTiling::Create(1.0f, layer_bounds, &client); |
| 606 | 609 |
| 607 tiling->UpdateTilePriorities(ACTIVE_TREE, viewport, 1.f, 1.0, Occlusion()); | 610 tiling->UpdateTilePriorities( |
| 611 ACTIVE_TREE, viewport, 1.f, 1.0, NULL, NULL, gfx::Transform()); |
| 608 | 612 |
| 609 // Move viewport down 50 pixels in 0.5 seconds. | 613 // Move viewport down 50 pixels in 0.5 seconds. |
| 610 gfx::Rect down_skewport = | 614 gfx::Rect down_skewport = |
| 611 tiling->ComputeSkewport(1.5, gfx::Rect(0, 50, 100, 100)); | 615 tiling->ComputeSkewport(1.5, gfx::Rect(0, 50, 100, 100)); |
| 612 | 616 |
| 613 EXPECT_EQ(0, down_skewport.x()); | 617 EXPECT_EQ(0, down_skewport.x()); |
| 614 EXPECT_EQ(50, down_skewport.y()); | 618 EXPECT_EQ(50, down_skewport.y()); |
| 615 EXPECT_EQ(100, down_skewport.width()); | 619 EXPECT_EQ(100, down_skewport.width()); |
| 616 EXPECT_EQ(200, down_skewport.height()); | 620 EXPECT_EQ(200, down_skewport.height()); |
| 617 | 621 |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 664 | 668 |
| 665 // 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. |
| 666 // 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) |
| 667 // 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 |
| 668 // (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 |
| 669 // tiling. | 673 // tiling. |
| 670 tiling = TestablePictureLayerTiling::Create(0.25f, layer_bounds, &client); | 674 tiling = TestablePictureLayerTiling::Create(0.25f, layer_bounds, &client); |
| 671 gfx::Rect viewport_in_content_space = | 675 gfx::Rect viewport_in_content_space = |
| 672 gfx::ToEnclosedRect(gfx::ScaleRect(viewport, 0.25f)); | 676 gfx::ToEnclosedRect(gfx::ScaleRect(viewport, 0.25f)); |
| 673 | 677 |
| 674 tiling->UpdateTilePriorities(ACTIVE_TREE, viewport, 1.f, 1.0, Occlusion()); | 678 tiling->UpdateTilePriorities( |
| 679 ACTIVE_TREE, viewport, 1.f, 1.0, NULL, NULL, gfx::Transform()); |
| 675 | 680 |
| 676 gfx::Rect soon_rect = viewport; | 681 gfx::Rect soon_rect = viewport; |
| 677 soon_rect.Inset(-312.f, -312.f, -312.f, -312.f); | 682 soon_rect.Inset(-312.f, -312.f, -312.f, -312.f); |
| 678 gfx::Rect soon_rect_in_content_space = | 683 gfx::Rect soon_rect_in_content_space = |
| 679 gfx::ToEnclosedRect(gfx::ScaleRect(soon_rect, 0.25f)); | 684 gfx::ToEnclosedRect(gfx::ScaleRect(soon_rect, 0.25f)); |
| 680 | 685 |
| 681 // Sanity checks. | 686 // Sanity checks. |
| 682 for (int i = 0; i < 47; ++i) { | 687 for (int i = 0; i < 47; ++i) { |
| 683 for (int j = 0; j < 47; ++j) { | 688 for (int j = 0; j < 47; ++j) { |
| 684 EXPECT_TRUE(tiling->TileAt(i, j)) << "i: " << i << " j: " << j; | 689 EXPECT_TRUE(tiling->TileAt(i, j)) << "i: " << i << " j: " << j; |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 748 soon_rect = viewport; | 753 soon_rect = viewport; |
| 749 soon_rect.Inset(-312.f, -312.f, -312.f, -312.f); | 754 soon_rect.Inset(-312.f, -312.f, -312.f, -312.f); |
| 750 soon_rect_in_content_space = | 755 soon_rect_in_content_space = |
| 751 gfx::ToEnclosedRect(gfx::ScaleRect(soon_rect, 0.25f)); | 756 gfx::ToEnclosedRect(gfx::ScaleRect(soon_rect, 0.25f)); |
| 752 | 757 |
| 753 EXPECT_EQ(0, skewport.x()); | 758 EXPECT_EQ(0, skewport.x()); |
| 754 EXPECT_EQ(10, skewport.y()); | 759 EXPECT_EQ(10, skewport.y()); |
| 755 EXPECT_EQ(25, skewport.width()); | 760 EXPECT_EQ(25, skewport.width()); |
| 756 EXPECT_EQ(35, skewport.height()); | 761 EXPECT_EQ(35, skewport.height()); |
| 757 | 762 |
| 758 tiling->UpdateTilePriorities(ACTIVE_TREE, viewport, 1.f, 2.0, Occlusion()); | 763 tiling->UpdateTilePriorities( |
| 764 ACTIVE_TREE, viewport, 1.f, 2.0, NULL, NULL, gfx::Transform()); |
| 759 | 765 |
| 760 have_now = false; | 766 have_now = false; |
| 761 have_eventually = false; | 767 have_eventually = false; |
| 762 have_soon = false; | 768 have_soon = false; |
| 763 | 769 |
| 764 // 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 |
| 765 // some EVENTUALLY tiles. | 771 // some EVENTUALLY tiles. |
| 766 for (int i = 0; i < 47; ++i) { | 772 for (int i = 0; i < 47; ++i) { |
| 767 for (int j = 0; j < 47; ++j) { | 773 for (int j = 0; j < 47; ++j) { |
| 768 Tile* tile = tiling->TileAt(i, j); | 774 Tile* tile = tiling->TileAt(i, j); |
| (...skipping 30 matching lines...) Expand all Loading... |
| 799 priority = tiling->TileAt(5, 1)->priority(ACTIVE_TREE); | 805 priority = tiling->TileAt(5, 1)->priority(ACTIVE_TREE); |
| 800 EXPECT_FLOAT_EQ(68.f, priority.distance_to_visible); | 806 EXPECT_FLOAT_EQ(68.f, priority.distance_to_visible); |
| 801 | 807 |
| 802 priority = tiling->TileAt(2, 5)->priority(ACTIVE_TREE); | 808 priority = tiling->TileAt(2, 5)->priority(ACTIVE_TREE); |
| 803 EXPECT_FLOAT_EQ(28.f, priority.distance_to_visible); | 809 EXPECT_FLOAT_EQ(28.f, priority.distance_to_visible); |
| 804 | 810 |
| 805 priority = tiling->TileAt(3, 4)->priority(ACTIVE_TREE); | 811 priority = tiling->TileAt(3, 4)->priority(ACTIVE_TREE); |
| 806 EXPECT_FLOAT_EQ(4.f, priority.distance_to_visible); | 812 EXPECT_FLOAT_EQ(4.f, priority.distance_to_visible); |
| 807 | 813 |
| 808 // Change the underlying layer scale. | 814 // Change the underlying layer scale. |
| 809 tiling->UpdateTilePriorities(ACTIVE_TREE, viewport, 2.0f, 3.0, Occlusion()); | 815 tiling->UpdateTilePriorities( |
| 816 ACTIVE_TREE, viewport, 2.0f, 3.0, NULL, NULL, gfx::Transform()); |
| 810 | 817 |
| 811 priority = tiling->TileAt(5, 1)->priority(ACTIVE_TREE); | 818 priority = tiling->TileAt(5, 1)->priority(ACTIVE_TREE); |
| 812 EXPECT_FLOAT_EQ(136.f, priority.distance_to_visible); | 819 EXPECT_FLOAT_EQ(136.f, priority.distance_to_visible); |
| 813 | 820 |
| 814 priority = tiling->TileAt(2, 5)->priority(ACTIVE_TREE); | 821 priority = tiling->TileAt(2, 5)->priority(ACTIVE_TREE); |
| 815 EXPECT_FLOAT_EQ(56.f, priority.distance_to_visible); | 822 EXPECT_FLOAT_EQ(56.f, priority.distance_to_visible); |
| 816 | 823 |
| 817 priority = tiling->TileAt(3, 4)->priority(ACTIVE_TREE); | 824 priority = tiling->TileAt(3, 4)->priority(ACTIVE_TREE); |
| 818 EXPECT_FLOAT_EQ(8.f, priority.distance_to_visible); | 825 EXPECT_FLOAT_EQ(8.f, priority.distance_to_visible); |
| 819 | 826 |
| 820 // Test additional scales. | 827 // Test additional scales. |
| 821 tiling = TestablePictureLayerTiling::Create(0.2f, layer_bounds, &client); | 828 tiling = TestablePictureLayerTiling::Create(0.2f, layer_bounds, &client); |
| 822 tiling->UpdateTilePriorities(ACTIVE_TREE, viewport, 1.0f, 4.0, Occlusion()); | 829 tiling->UpdateTilePriorities( |
| 830 ACTIVE_TREE, viewport, 1.0f, 4.0, NULL, NULL, gfx::Transform()); |
| 823 | 831 |
| 824 priority = tiling->TileAt(5, 1)->priority(ACTIVE_TREE); | 832 priority = tiling->TileAt(5, 1)->priority(ACTIVE_TREE); |
| 825 EXPECT_FLOAT_EQ(110.f, priority.distance_to_visible); | 833 EXPECT_FLOAT_EQ(110.f, priority.distance_to_visible); |
| 826 | 834 |
| 827 priority = tiling->TileAt(2, 5)->priority(ACTIVE_TREE); | 835 priority = tiling->TileAt(2, 5)->priority(ACTIVE_TREE); |
| 828 EXPECT_FLOAT_EQ(70.f, priority.distance_to_visible); | 836 EXPECT_FLOAT_EQ(70.f, priority.distance_to_visible); |
| 829 | 837 |
| 830 priority = tiling->TileAt(3, 4)->priority(ACTIVE_TREE); | 838 priority = tiling->TileAt(3, 4)->priority(ACTIVE_TREE); |
| 831 EXPECT_FLOAT_EQ(60.f, priority.distance_to_visible); | 839 EXPECT_FLOAT_EQ(60.f, priority.distance_to_visible); |
| 832 | 840 |
| 833 tiling->UpdateTilePriorities(ACTIVE_TREE, viewport, 0.5f, 5.0, Occlusion()); | 841 tiling->UpdateTilePriorities( |
| 842 ACTIVE_TREE, viewport, 0.5f, 5.0, NULL, NULL, gfx::Transform()); |
| 834 | 843 |
| 835 priority = tiling->TileAt(5, 1)->priority(ACTIVE_TREE); | 844 priority = tiling->TileAt(5, 1)->priority(ACTIVE_TREE); |
| 836 EXPECT_FLOAT_EQ(55.f, priority.distance_to_visible); | 845 EXPECT_FLOAT_EQ(55.f, priority.distance_to_visible); |
| 837 | 846 |
| 838 priority = tiling->TileAt(2, 5)->priority(ACTIVE_TREE); | 847 priority = tiling->TileAt(2, 5)->priority(ACTIVE_TREE); |
| 839 EXPECT_FLOAT_EQ(35.f, priority.distance_to_visible); | 848 EXPECT_FLOAT_EQ(35.f, priority.distance_to_visible); |
| 840 | 849 |
| 841 priority = tiling->TileAt(3, 4)->priority(ACTIVE_TREE); | 850 priority = tiling->TileAt(3, 4)->priority(ACTIVE_TREE); |
| 842 EXPECT_FLOAT_EQ(30.f, priority.distance_to_visible); | 851 EXPECT_FLOAT_EQ(30.f, priority.distance_to_visible); |
| 843 } | 852 } |
| (...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1071 gfx::Rect viewport(50, 50, 100, 100); | 1080 gfx::Rect viewport(50, 50, 100, 100); |
| 1072 gfx::Size layer_bounds(800, 800); | 1081 gfx::Size layer_bounds(800, 800); |
| 1073 | 1082 |
| 1074 gfx::Rect soon_rect = viewport; | 1083 gfx::Rect soon_rect = viewport; |
| 1075 soon_rect.Inset(-312.f, -312.f, -312.f, -312.f); | 1084 soon_rect.Inset(-312.f, -312.f, -312.f, -312.f); |
| 1076 | 1085 |
| 1077 client.SetTileSize(gfx::Size(30, 30)); | 1086 client.SetTileSize(gfx::Size(30, 30)); |
| 1078 client.set_tree(ACTIVE_TREE); | 1087 client.set_tree(ACTIVE_TREE); |
| 1079 | 1088 |
| 1080 tiling = TestablePictureLayerTiling::Create(1.0f, layer_bounds, &client); | 1089 tiling = TestablePictureLayerTiling::Create(1.0f, layer_bounds, &client); |
| 1081 tiling->UpdateTilePriorities(ACTIVE_TREE, viewport, 1.0f, 1.0, Occlusion()); | 1090 tiling->UpdateTilePriorities( |
| 1091 ACTIVE_TREE, viewport, 1.0f, 1.0, NULL, NULL, gfx::Transform()); |
| 1082 | 1092 |
| 1083 PictureLayerTiling::TilingRasterTileIterator empty_iterator; | 1093 PictureLayerTiling::TilingRasterTileIterator empty_iterator; |
| 1084 EXPECT_FALSE(empty_iterator); | 1094 EXPECT_FALSE(empty_iterator); |
| 1085 | 1095 |
| 1086 std::vector<Tile*> all_tiles = tiling->AllTilesForTesting(); | 1096 std::vector<Tile*> all_tiles = tiling->AllTilesForTesting(); |
| 1087 | 1097 |
| 1088 // Sanity check. | 1098 // Sanity check. |
| 1089 EXPECT_EQ(841u, all_tiles.size()); | 1099 EXPECT_EQ(841u, all_tiles.size()); |
| 1090 | 1100 |
| 1091 // The explanation of each iteration is as follows: | 1101 // The explanation of each iteration is as follows: |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1179 scoped_ptr<TestablePictureLayerTiling> tiling; | 1189 scoped_ptr<TestablePictureLayerTiling> tiling; |
| 1180 | 1190 |
| 1181 gfx::Rect viewport(50, 0, 100, 100); | 1191 gfx::Rect viewport(50, 0, 100, 100); |
| 1182 gfx::Rect moved_viewport(50, 0, 100, 500); | 1192 gfx::Rect moved_viewport(50, 0, 100, 500); |
| 1183 gfx::Size layer_bounds(1000, 1000); | 1193 gfx::Size layer_bounds(1000, 1000); |
| 1184 | 1194 |
| 1185 client.SetTileSize(gfx::Size(30, 30)); | 1195 client.SetTileSize(gfx::Size(30, 30)); |
| 1186 client.set_tree(ACTIVE_TREE); | 1196 client.set_tree(ACTIVE_TREE); |
| 1187 | 1197 |
| 1188 tiling = TestablePictureLayerTiling::Create(1.f, layer_bounds, &client); | 1198 tiling = TestablePictureLayerTiling::Create(1.f, layer_bounds, &client); |
| 1189 tiling->UpdateTilePriorities(ACTIVE_TREE, viewport, 1.0f, 1.0, Occlusion()); | |
| 1190 tiling->UpdateTilePriorities( | 1199 tiling->UpdateTilePriorities( |
| 1191 ACTIVE_TREE, moved_viewport, 1.0f, 2.0, Occlusion()); | 1200 ACTIVE_TREE, viewport, 1.0f, 1.0, NULL, NULL, gfx::Transform()); |
| 1201 tiling->UpdateTilePriorities( |
| 1202 ACTIVE_TREE, moved_viewport, 1.0f, 2.0, NULL, NULL, gfx::Transform()); |
| 1192 | 1203 |
| 1193 gfx::Rect soon_rect = moved_viewport; | 1204 gfx::Rect soon_rect = moved_viewport; |
| 1194 soon_rect.Inset(-312.f, -312.f, -312.f, -312.f); | 1205 soon_rect.Inset(-312.f, -312.f, -312.f, -312.f); |
| 1195 | 1206 |
| 1196 // There are 3 bins in TilePriority. | 1207 // There are 3 bins in TilePriority. |
| 1197 bool have_tiles[3] = {}; | 1208 bool have_tiles[3] = {}; |
| 1198 Tile* last_tile = NULL; | 1209 Tile* last_tile = NULL; |
| 1199 int eventually_bin_order_correct_count = 0; | 1210 int eventually_bin_order_correct_count = 0; |
| 1200 int eventually_bin_order_incorrect_count = 0; | 1211 int eventually_bin_order_incorrect_count = 0; |
| 1201 for (PictureLayerTiling::TilingRasterTileIterator it(tiling.get(), | 1212 for (PictureLayerTiling::TilingRasterTileIterator it(tiling.get(), |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1254 FakePictureLayerTilingClient client(resource_provider.get()); | 1265 FakePictureLayerTilingClient client(resource_provider.get()); |
| 1255 scoped_ptr<TestablePictureLayerTiling> tiling; | 1266 scoped_ptr<TestablePictureLayerTiling> tiling; |
| 1256 | 1267 |
| 1257 gfx::Rect viewport(50, 50, 100, 100); | 1268 gfx::Rect viewport(50, 50, 100, 100); |
| 1258 gfx::Size layer_bounds(2000, 2000); | 1269 gfx::Size layer_bounds(2000, 2000); |
| 1259 | 1270 |
| 1260 client.SetTileSize(gfx::Size(30, 30)); | 1271 client.SetTileSize(gfx::Size(30, 30)); |
| 1261 client.set_tree(ACTIVE_TREE); | 1272 client.set_tree(ACTIVE_TREE); |
| 1262 | 1273 |
| 1263 tiling = TestablePictureLayerTiling::Create(1.0f, layer_bounds, &client); | 1274 tiling = TestablePictureLayerTiling::Create(1.0f, layer_bounds, &client); |
| 1264 tiling->UpdateTilePriorities(ACTIVE_TREE, viewport, 1.0f, 1.0, Occlusion()); | 1275 tiling->UpdateTilePriorities( |
| 1276 ACTIVE_TREE, viewport, 1.0f, 1.0, NULL, NULL, gfx::Transform()); |
| 1265 | 1277 |
| 1266 PictureLayerTiling::TilingRasterTileIterator empty_iterator; | 1278 PictureLayerTiling::TilingRasterTileIterator empty_iterator; |
| 1267 EXPECT_FALSE(empty_iterator); | 1279 EXPECT_FALSE(empty_iterator); |
| 1268 | 1280 |
| 1269 std::vector<Tile*> all_tiles = tiling->AllTilesForTesting(); | 1281 std::vector<Tile*> all_tiles = tiling->AllTilesForTesting(); |
| 1270 | 1282 |
| 1271 PictureLayerTiling::TilingEvictionTileIterator it( | 1283 PictureLayerTiling::TilingEvictionTileIterator it( |
| 1272 tiling.get(), SMOOTHNESS_TAKES_PRIORITY, PictureLayerTiling::NOW); | 1284 tiling.get(), SMOOTHNESS_TAKES_PRIORITY, PictureLayerTiling::NOW); |
| 1273 | 1285 |
| 1274 // Tiles don't have resources to evict. | 1286 // Tiles don't have resources to evict. |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1332 Initialize(gfx::Size(100, 100), 1.f, layer_bounds); | 1344 Initialize(gfx::Size(100, 100), 1.f, layer_bounds); |
| 1333 VerifyTilesExactlyCoverRect(1.f, gfx::Rect(layer_bounds)); | 1345 VerifyTilesExactlyCoverRect(1.f, gfx::Rect(layer_bounds)); |
| 1334 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false)); | 1346 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false)); |
| 1335 | 1347 |
| 1336 client_.set_tree(ACTIVE_TREE); | 1348 client_.set_tree(ACTIVE_TREE); |
| 1337 tiling_->UpdateTilePriorities( | 1349 tiling_->UpdateTilePriorities( |
| 1338 ACTIVE_TREE, | 1350 ACTIVE_TREE, |
| 1339 gfx::Rect(layer_bounds), // visible content rect | 1351 gfx::Rect(layer_bounds), // visible content rect |
| 1340 1.f, // current contents scale | 1352 1.f, // current contents scale |
| 1341 1.0, // current frame time | 1353 1.0, // current frame time |
| 1342 Occlusion()); | 1354 NULL, // occlusion tracker |
| 1355 NULL, // render target |
| 1356 gfx::Transform()); // draw transform |
| 1343 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, true)); | 1357 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, true)); |
| 1344 | 1358 |
| 1345 // Make the viewport rect empty. All tiles are killed and become zombies. | 1359 // Make the viewport rect empty. All tiles are killed and become zombies. |
| 1346 tiling_->UpdateTilePriorities(ACTIVE_TREE, | 1360 tiling_->UpdateTilePriorities(ACTIVE_TREE, |
| 1347 gfx::Rect(), // visible content rect | 1361 gfx::Rect(), // visible content rect |
| 1348 1.f, // current contents scale | 1362 1.f, // current contents scale |
| 1349 2.0, // current frame time | 1363 2.0, // current frame time |
| 1350 Occlusion()); | 1364 NULL, // occlusion tracker |
| 1365 NULL, // render target |
| 1366 gfx::Transform()); // draw transform |
| 1351 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false)); | 1367 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false)); |
| 1352 } | 1368 } |
| 1353 | 1369 |
| 1354 TEST_F(PictureLayerTilingIteratorTest, TilesExistGiantViewport) { | 1370 TEST_F(PictureLayerTilingIteratorTest, TilesExistGiantViewport) { |
| 1355 gfx::Size layer_bounds(1099, 801); | 1371 gfx::Size layer_bounds(1099, 801); |
| 1356 Initialize(gfx::Size(100, 100), 1.f, layer_bounds); | 1372 Initialize(gfx::Size(100, 100), 1.f, layer_bounds); |
| 1357 VerifyTilesExactlyCoverRect(1.f, gfx::Rect(layer_bounds)); | 1373 VerifyTilesExactlyCoverRect(1.f, gfx::Rect(layer_bounds)); |
| 1358 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false)); | 1374 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false)); |
| 1359 | 1375 |
| 1360 gfx::Rect giant_rect(-10000000, -10000000, 1000000000, 1000000000); | 1376 gfx::Rect giant_rect(-10000000, -10000000, 1000000000, 1000000000); |
| 1361 | 1377 |
| 1362 client_.set_tree(ACTIVE_TREE); | 1378 client_.set_tree(ACTIVE_TREE); |
| 1363 tiling_->UpdateTilePriorities( | 1379 tiling_->UpdateTilePriorities( |
| 1364 ACTIVE_TREE, | 1380 ACTIVE_TREE, |
| 1365 gfx::Rect(layer_bounds), // visible content rect | 1381 gfx::Rect(layer_bounds), // visible content rect |
| 1366 1.f, // current contents scale | 1382 1.f, // current contents scale |
| 1367 1.0, // current frame time | 1383 1.0, // current frame time |
| 1368 Occlusion()); | 1384 NULL, // occlusion tracker |
| 1385 NULL, // render target |
| 1386 gfx::Transform()); // draw transform |
| 1369 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, true)); | 1387 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, true)); |
| 1370 | 1388 |
| 1371 // If the visible content rect is empty, it should still have live tiles. | 1389 // If the visible content rect is empty, it should still have live tiles. |
| 1372 tiling_->UpdateTilePriorities(ACTIVE_TREE, | 1390 tiling_->UpdateTilePriorities(ACTIVE_TREE, |
| 1373 giant_rect, // visible content rect | 1391 giant_rect, // visible content rect |
| 1374 1.f, // current contents scale | 1392 1.f, // current contents scale |
| 1375 2.0, // current frame time | 1393 2.0, // current frame time |
| 1376 Occlusion()); | 1394 NULL, // occlusion tracker |
| 1395 NULL, // render target |
| 1396 gfx::Transform()); // draw transform |
| 1377 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, true)); | 1397 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, true)); |
| 1378 } | 1398 } |
| 1379 | 1399 |
| 1380 TEST_F(PictureLayerTilingIteratorTest, TilesExistOutsideViewport) { | 1400 TEST_F(PictureLayerTilingIteratorTest, TilesExistOutsideViewport) { |
| 1381 gfx::Size layer_bounds(1099, 801); | 1401 gfx::Size layer_bounds(1099, 801); |
| 1382 Initialize(gfx::Size(100, 100), 1.f, layer_bounds); | 1402 Initialize(gfx::Size(100, 100), 1.f, layer_bounds); |
| 1383 VerifyTilesExactlyCoverRect(1.f, gfx::Rect(layer_bounds)); | 1403 VerifyTilesExactlyCoverRect(1.f, gfx::Rect(layer_bounds)); |
| 1384 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false)); | 1404 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false)); |
| 1385 | 1405 |
| 1386 // This rect does not intersect with the layer, as the layer is outside the | 1406 // This rect does not intersect with the layer, as the layer is outside the |
| 1387 // viewport. | 1407 // viewport. |
| 1388 gfx::Rect viewport_rect(1100, 0, 1000, 1000); | 1408 gfx::Rect viewport_rect(1100, 0, 1000, 1000); |
| 1389 EXPECT_FALSE(viewport_rect.Intersects(gfx::Rect(layer_bounds))); | 1409 EXPECT_FALSE(viewport_rect.Intersects(gfx::Rect(layer_bounds))); |
| 1390 | 1410 |
| 1391 client_.set_tree(ACTIVE_TREE); | 1411 client_.set_tree(ACTIVE_TREE); |
| 1392 tiling_->UpdateTilePriorities(ACTIVE_TREE, | 1412 tiling_->UpdateTilePriorities(ACTIVE_TREE, |
| 1393 viewport_rect, // visible content rect | 1413 viewport_rect, // visible content rect |
| 1394 1.f, // current contents scale | 1414 1.f, // current contents scale |
| 1395 1.0, // current frame time | 1415 1.0, // current frame time |
| 1396 Occlusion()); | 1416 NULL, // occlusion tracker |
| 1417 NULL, // render target |
| 1418 gfx::Transform()); // draw transform |
| 1397 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, true)); | 1419 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, true)); |
| 1398 } | 1420 } |
| 1399 | 1421 |
| 1400 static void TilesIntersectingRectExist(const gfx::Rect& rect, | 1422 static void TilesIntersectingRectExist(const gfx::Rect& rect, |
| 1401 bool intersect_exists, | 1423 bool intersect_exists, |
| 1402 Tile* tile, | 1424 Tile* tile, |
| 1403 const gfx::Rect& geometry_rect) { | 1425 const gfx::Rect& geometry_rect) { |
| 1404 bool intersects = rect.Intersects(geometry_rect); | 1426 bool intersects = rect.Intersects(geometry_rect); |
| 1405 bool expected_exists = intersect_exists ? intersects : !intersects; | 1427 bool expected_exists = intersect_exists ? intersects : !intersects; |
| 1406 EXPECT_EQ(expected_exists, tile != NULL) | 1428 EXPECT_EQ(expected_exists, tile != NULL) |
| 1407 << "Rects intersecting " << rect.ToString() << " should exist. " | 1429 << "Rects intersecting " << rect.ToString() << " should exist. " |
| 1408 << "Current tile rect is " << geometry_rect.ToString(); | 1430 << "Current tile rect is " << geometry_rect.ToString(); |
| 1409 } | 1431 } |
| 1410 | 1432 |
| 1411 TEST_F(PictureLayerTilingIteratorTest, | 1433 TEST_F(PictureLayerTilingIteratorTest, |
| 1412 TilesExistLargeViewportAndLayerWithSmallVisibleArea) { | 1434 TilesExistLargeViewportAndLayerWithSmallVisibleArea) { |
| 1413 gfx::Size layer_bounds(10000, 10000); | 1435 gfx::Size layer_bounds(10000, 10000); |
| 1414 Initialize(gfx::Size(100, 100), 1.f, layer_bounds); | 1436 Initialize(gfx::Size(100, 100), 1.f, layer_bounds); |
| 1415 VerifyTilesExactlyCoverRect(1.f, gfx::Rect(layer_bounds)); | 1437 VerifyTilesExactlyCoverRect(1.f, gfx::Rect(layer_bounds)); |
| 1416 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false)); | 1438 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false)); |
| 1417 | 1439 |
| 1418 gfx::Rect visible_rect(8000, 8000, 50, 50); | 1440 gfx::Rect visible_rect(8000, 8000, 50, 50); |
| 1419 | 1441 |
| 1420 client_.set_tree(ACTIVE_TREE); | 1442 client_.set_tree(ACTIVE_TREE); |
| 1421 set_max_tiles_for_interest_area(1); | 1443 set_max_tiles_for_interest_area(1); |
| 1422 tiling_->UpdateTilePriorities(ACTIVE_TREE, | 1444 tiling_->UpdateTilePriorities(ACTIVE_TREE, |
| 1423 visible_rect, // visible content rect | 1445 visible_rect, // visible content rect |
| 1424 1.f, // current contents scale | 1446 1.f, // current contents scale |
| 1425 1.0, // current frame time | 1447 1.0, // current frame time |
| 1426 Occlusion()); | 1448 NULL, // occlusion tracker |
| 1449 NULL, // render target |
| 1450 gfx::Transform()); // draw transform |
| 1427 VerifyTiles(1.f, | 1451 VerifyTiles(1.f, |
| 1428 gfx::Rect(layer_bounds), | 1452 gfx::Rect(layer_bounds), |
| 1429 base::Bind(&TilesIntersectingRectExist, visible_rect, true)); | 1453 base::Bind(&TilesIntersectingRectExist, visible_rect, true)); |
| 1430 } | 1454 } |
| 1431 | 1455 |
| 1432 TEST_F(PictureLayerTilingIteratorTest, AddTilingsToMatchScale) { | 1456 TEST_F(PictureLayerTilingIteratorTest, AddTilingsToMatchScale) { |
| 1433 gfx::Size layer_bounds(1099, 801); | 1457 gfx::Size layer_bounds(1099, 801); |
| 1434 gfx::Size tile_size(100, 100); | 1458 gfx::Size tile_size(100, 100); |
| 1435 | 1459 |
| 1436 client_.SetTileSize(tile_size); | 1460 client_.SetTileSize(tile_size); |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1502 client.SetTileSize(gfx::Size(100, 100)); | 1526 client.SetTileSize(gfx::Size(100, 100)); |
| 1503 client.set_tree(ACTIVE_TREE); | 1527 client.set_tree(ACTIVE_TREE); |
| 1504 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale | 1528 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale |
| 1505 current_layer_bounds, | 1529 current_layer_bounds, |
| 1506 &client); | 1530 &client); |
| 1507 | 1531 |
| 1508 tiling->UpdateTilePriorities(ACTIVE_TREE, | 1532 tiling->UpdateTilePriorities(ACTIVE_TREE, |
| 1509 viewport_in_layer_space, | 1533 viewport_in_layer_space, |
| 1510 current_layer_contents_scale, | 1534 current_layer_contents_scale, |
| 1511 current_frame_time_in_seconds, | 1535 current_frame_time_in_seconds, |
| 1512 Occlusion()); | 1536 NULL, // occlusion tracker |
| 1537 NULL, // render target |
| 1538 gfx::Transform()); // draw transform |
| 1513 | 1539 |
| 1514 ASSERT_TRUE(tiling->TileAt(0, 0)); | 1540 ASSERT_TRUE(tiling->TileAt(0, 0)); |
| 1515 ASSERT_TRUE(tiling->TileAt(0, 1)); | 1541 ASSERT_TRUE(tiling->TileAt(0, 1)); |
| 1516 ASSERT_TRUE(tiling->TileAt(1, 0)); | 1542 ASSERT_TRUE(tiling->TileAt(1, 0)); |
| 1517 ASSERT_TRUE(tiling->TileAt(1, 1)); | 1543 ASSERT_TRUE(tiling->TileAt(1, 1)); |
| 1518 | 1544 |
| 1519 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); | 1545 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); |
| 1520 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); | 1546 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); |
| 1521 EXPECT_FLOAT_EQ(TilePriority::NOW, priority.priority_bin); | 1547 EXPECT_FLOAT_EQ(TilePriority::NOW, priority.priority_bin); |
| 1522 | 1548 |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1557 client.SetTileSize(gfx::Size(100, 100)); | 1583 client.SetTileSize(gfx::Size(100, 100)); |
| 1558 client.set_tree(ACTIVE_TREE); | 1584 client.set_tree(ACTIVE_TREE); |
| 1559 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale | 1585 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale |
| 1560 current_layer_bounds, | 1586 current_layer_bounds, |
| 1561 &client); | 1587 &client); |
| 1562 | 1588 |
| 1563 tiling->UpdateTilePriorities(ACTIVE_TREE, | 1589 tiling->UpdateTilePriorities(ACTIVE_TREE, |
| 1564 viewport_in_layer_space, | 1590 viewport_in_layer_space, |
| 1565 current_layer_contents_scale, | 1591 current_layer_contents_scale, |
| 1566 current_frame_time_in_seconds, | 1592 current_frame_time_in_seconds, |
| 1567 Occlusion()); | 1593 NULL, // occlusion tracker |
| 1594 NULL, // render target |
| 1595 gfx::Transform()); // draw transform |
| 1568 | 1596 |
| 1569 ASSERT_TRUE(tiling->TileAt(0, 0)); | 1597 ASSERT_TRUE(tiling->TileAt(0, 0)); |
| 1570 ASSERT_TRUE(tiling->TileAt(0, 1)); | 1598 ASSERT_TRUE(tiling->TileAt(0, 1)); |
| 1571 ASSERT_TRUE(tiling->TileAt(1, 0)); | 1599 ASSERT_TRUE(tiling->TileAt(1, 0)); |
| 1572 ASSERT_TRUE(tiling->TileAt(1, 1)); | 1600 ASSERT_TRUE(tiling->TileAt(1, 1)); |
| 1573 | 1601 |
| 1574 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); | 1602 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); |
| 1575 EXPECT_GT(priority.distance_to_visible, 0.f); | 1603 EXPECT_GT(priority.distance_to_visible, 0.f); |
| 1576 EXPECT_NE(TilePriority::NOW, priority.priority_bin); | 1604 EXPECT_NE(TilePriority::NOW, priority.priority_bin); |
| 1577 | 1605 |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1622 client.SetTileSize(gfx::Size(100, 100)); | 1650 client.SetTileSize(gfx::Size(100, 100)); |
| 1623 client.set_tree(ACTIVE_TREE); | 1651 client.set_tree(ACTIVE_TREE); |
| 1624 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale | 1652 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale |
| 1625 current_layer_bounds, | 1653 current_layer_bounds, |
| 1626 &client); | 1654 &client); |
| 1627 | 1655 |
| 1628 tiling->UpdateTilePriorities(ACTIVE_TREE, | 1656 tiling->UpdateTilePriorities(ACTIVE_TREE, |
| 1629 viewport_in_layer_space, | 1657 viewport_in_layer_space, |
| 1630 current_layer_contents_scale, | 1658 current_layer_contents_scale, |
| 1631 current_frame_time_in_seconds, | 1659 current_frame_time_in_seconds, |
| 1632 Occlusion()); | 1660 NULL, // occlusion tracker |
| 1661 NULL, // render target |
| 1662 gfx::Transform()); // draw transform |
| 1633 | 1663 |
| 1634 ASSERT_TRUE(tiling->TileAt(0, 0)); | 1664 ASSERT_TRUE(tiling->TileAt(0, 0)); |
| 1635 ASSERT_TRUE(tiling->TileAt(0, 1)); | 1665 ASSERT_TRUE(tiling->TileAt(0, 1)); |
| 1636 ASSERT_TRUE(tiling->TileAt(1, 0)); | 1666 ASSERT_TRUE(tiling->TileAt(1, 0)); |
| 1637 ASSERT_TRUE(tiling->TileAt(1, 1)); | 1667 ASSERT_TRUE(tiling->TileAt(1, 1)); |
| 1638 | 1668 |
| 1639 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); | 1669 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); |
| 1640 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); | 1670 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); |
| 1641 EXPECT_FLOAT_EQ(TilePriority::NOW, priority.priority_bin); | 1671 EXPECT_FLOAT_EQ(TilePriority::NOW, priority.priority_bin); |
| 1642 | 1672 |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1681 client.SetTileSize(gfx::Size(100, 100)); | 1711 client.SetTileSize(gfx::Size(100, 100)); |
| 1682 client.set_tree(ACTIVE_TREE); | 1712 client.set_tree(ACTIVE_TREE); |
| 1683 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale | 1713 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale |
| 1684 current_layer_bounds, | 1714 current_layer_bounds, |
| 1685 &client); | 1715 &client); |
| 1686 | 1716 |
| 1687 tiling->UpdateTilePriorities(ACTIVE_TREE, | 1717 tiling->UpdateTilePriorities(ACTIVE_TREE, |
| 1688 viewport_in_layer_space, | 1718 viewport_in_layer_space, |
| 1689 current_layer_contents_scale, | 1719 current_layer_contents_scale, |
| 1690 current_frame_time_in_seconds, | 1720 current_frame_time_in_seconds, |
| 1691 Occlusion()); | 1721 NULL, // occlusion tracker |
| 1722 NULL, // render target |
| 1723 gfx::Transform()); // draw transform |
| 1692 | 1724 |
| 1693 ASSERT_TRUE(tiling->TileAt(0, 0)); | 1725 ASSERT_TRUE(tiling->TileAt(0, 0)); |
| 1694 ASSERT_TRUE(tiling->TileAt(0, 1)); | 1726 ASSERT_TRUE(tiling->TileAt(0, 1)); |
| 1695 ASSERT_TRUE(tiling->TileAt(1, 0)); | 1727 ASSERT_TRUE(tiling->TileAt(1, 0)); |
| 1696 ASSERT_TRUE(tiling->TileAt(1, 1)); | 1728 ASSERT_TRUE(tiling->TileAt(1, 1)); |
| 1697 | 1729 |
| 1698 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); | 1730 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); |
| 1699 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); | 1731 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); |
| 1700 EXPECT_EQ(TilePriority::NOW, priority.priority_bin); | 1732 EXPECT_EQ(TilePriority::NOW, priority.priority_bin); |
| 1701 | 1733 |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1764 client.SetTileSize(gfx::Size(100, 100)); | 1796 client.SetTileSize(gfx::Size(100, 100)); |
| 1765 client.set_tree(ACTIVE_TREE); | 1797 client.set_tree(ACTIVE_TREE); |
| 1766 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale | 1798 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale |
| 1767 current_layer_bounds, | 1799 current_layer_bounds, |
| 1768 &client); | 1800 &client); |
| 1769 | 1801 |
| 1770 tiling->UpdateTilePriorities(ACTIVE_TREE, | 1802 tiling->UpdateTilePriorities(ACTIVE_TREE, |
| 1771 viewport_in_layer_space, | 1803 viewport_in_layer_space, |
| 1772 current_layer_contents_scale, | 1804 current_layer_contents_scale, |
| 1773 current_frame_time_in_seconds, | 1805 current_frame_time_in_seconds, |
| 1774 Occlusion()); | 1806 NULL, // occlusion tracker |
| 1807 NULL, // render target |
| 1808 gfx::Transform()); // draw transform |
| 1775 | 1809 |
| 1776 ASSERT_TRUE(tiling->TileAt(0, 0)); | 1810 ASSERT_TRUE(tiling->TileAt(0, 0)); |
| 1777 ASSERT_TRUE(tiling->TileAt(0, 1)); | 1811 ASSERT_TRUE(tiling->TileAt(0, 1)); |
| 1778 ASSERT_TRUE(tiling->TileAt(1, 0)); | 1812 ASSERT_TRUE(tiling->TileAt(1, 0)); |
| 1779 ASSERT_TRUE(tiling->TileAt(1, 1)); | 1813 ASSERT_TRUE(tiling->TileAt(1, 1)); |
| 1780 | 1814 |
| 1781 // All tiles will have a positive distance_to_visible | 1815 // All tiles will have a positive distance_to_visible |
| 1782 // and an infinite time_to_visible. | 1816 // and an infinite time_to_visible. |
| 1783 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); | 1817 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); |
| 1784 EXPECT_FLOAT_EQ(priority.distance_to_visible, 0.f); | 1818 EXPECT_FLOAT_EQ(priority.distance_to_visible, 0.f); |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1857 client.SetTileSize(gfx::Size(100, 100)); | 1891 client.SetTileSize(gfx::Size(100, 100)); |
| 1858 client.set_tree(ACTIVE_TREE); | 1892 client.set_tree(ACTIVE_TREE); |
| 1859 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale | 1893 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale |
| 1860 current_layer_bounds, | 1894 current_layer_bounds, |
| 1861 &client); | 1895 &client); |
| 1862 | 1896 |
| 1863 tiling->UpdateTilePriorities(ACTIVE_TREE, | 1897 tiling->UpdateTilePriorities(ACTIVE_TREE, |
| 1864 viewport_in_layer_space, | 1898 viewport_in_layer_space, |
| 1865 current_layer_contents_scale, | 1899 current_layer_contents_scale, |
| 1866 current_frame_time_in_seconds, | 1900 current_frame_time_in_seconds, |
| 1867 Occlusion()); | 1901 NULL, // occlusion tracker |
| 1902 NULL, // render target |
| 1903 gfx::Transform()); // draw transform |
| 1868 | 1904 |
| 1869 ASSERT_TRUE(tiling->TileAt(0, 0)); | 1905 ASSERT_TRUE(tiling->TileAt(0, 0)); |
| 1870 ASSERT_TRUE(tiling->TileAt(0, 1)); | 1906 ASSERT_TRUE(tiling->TileAt(0, 1)); |
| 1871 ASSERT_TRUE(tiling->TileAt(1, 0)); | 1907 ASSERT_TRUE(tiling->TileAt(1, 0)); |
| 1872 ASSERT_TRUE(tiling->TileAt(1, 1)); | 1908 ASSERT_TRUE(tiling->TileAt(1, 1)); |
| 1873 | 1909 |
| 1874 // Left-side tiles will be clipped by the transform, so we have to assume | 1910 // Left-side tiles will be clipped by the transform, so we have to assume |
| 1875 // they are visible just in case. | 1911 // they are visible just in case. |
| 1876 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); | 1912 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); |
| 1877 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); | 1913 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1921 client.set_tree(ACTIVE_TREE); | 1957 client.set_tree(ACTIVE_TREE); |
| 1922 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale | 1958 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale |
| 1923 current_layer_bounds, | 1959 current_layer_bounds, |
| 1924 &client); | 1960 &client); |
| 1925 | 1961 |
| 1926 // previous ("last") frame | 1962 // previous ("last") frame |
| 1927 tiling->UpdateTilePriorities(ACTIVE_TREE, | 1963 tiling->UpdateTilePriorities(ACTIVE_TREE, |
| 1928 viewport_in_layer_space, | 1964 viewport_in_layer_space, |
| 1929 last_layer_contents_scale, | 1965 last_layer_contents_scale, |
| 1930 last_frame_time_in_seconds, | 1966 last_frame_time_in_seconds, |
| 1931 Occlusion()); | 1967 NULL, // occlusion tracker |
| 1968 NULL, // render target |
| 1969 gfx::Transform()); // draw transform |
| 1932 | 1970 |
| 1933 // current frame | 1971 // current frame |
| 1934 tiling->UpdateTilePriorities(ACTIVE_TREE, | 1972 tiling->UpdateTilePriorities(ACTIVE_TREE, |
| 1935 viewport_in_layer_space, | 1973 viewport_in_layer_space, |
| 1936 current_layer_contents_scale, | 1974 current_layer_contents_scale, |
| 1937 current_frame_time_in_seconds, | 1975 current_frame_time_in_seconds, |
| 1938 Occlusion()); | 1976 NULL, // occlusion tracker |
| 1977 NULL, // render target |
| 1978 gfx::Transform()); // draw transform |
| 1939 | 1979 |
| 1940 ASSERT_TRUE(tiling->TileAt(0, 0)); | 1980 ASSERT_TRUE(tiling->TileAt(0, 0)); |
| 1941 ASSERT_TRUE(tiling->TileAt(0, 1)); | 1981 ASSERT_TRUE(tiling->TileAt(0, 1)); |
| 1942 ASSERT_TRUE(tiling->TileAt(1, 0)); | 1982 ASSERT_TRUE(tiling->TileAt(1, 0)); |
| 1943 ASSERT_TRUE(tiling->TileAt(1, 1)); | 1983 ASSERT_TRUE(tiling->TileAt(1, 1)); |
| 1944 | 1984 |
| 1945 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); | 1985 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); |
| 1946 EXPECT_GT(priority.distance_to_visible, 0.f); | 1986 EXPECT_GT(priority.distance_to_visible, 0.f); |
| 1947 EXPECT_NE(TilePriority::NOW, priority.priority_bin); | 1987 EXPECT_NE(TilePriority::NOW, priority.priority_bin); |
| 1948 | 1988 |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1999 client.set_tree(ACTIVE_TREE); | 2039 client.set_tree(ACTIVE_TREE); |
| 2000 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale | 2040 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale |
| 2001 current_layer_bounds, | 2041 current_layer_bounds, |
| 2002 &client); | 2042 &client); |
| 2003 | 2043 |
| 2004 // previous ("last") frame | 2044 // previous ("last") frame |
| 2005 tiling->UpdateTilePriorities(ACTIVE_TREE, | 2045 tiling->UpdateTilePriorities(ACTIVE_TREE, |
| 2006 viewport_in_layer_space, | 2046 viewport_in_layer_space, |
| 2007 last_layer_contents_scale, | 2047 last_layer_contents_scale, |
| 2008 last_frame_time_in_seconds, | 2048 last_frame_time_in_seconds, |
| 2009 Occlusion()); | 2049 NULL, // occlusion tracker |
| 2050 NULL, // render target |
| 2051 gfx::Transform()); // draw transform |
| 2010 | 2052 |
| 2011 // current frame | 2053 // current frame |
| 2012 tiling->UpdateTilePriorities(ACTIVE_TREE, | 2054 tiling->UpdateTilePriorities(ACTIVE_TREE, |
| 2013 viewport_in_layer_space, | 2055 viewport_in_layer_space, |
| 2014 current_layer_contents_scale, | 2056 current_layer_contents_scale, |
| 2015 current_frame_time_in_seconds, | 2057 current_frame_time_in_seconds, |
| 2016 Occlusion()); | 2058 NULL, // occlusion tracker |
| 2059 NULL, // render target |
| 2060 gfx::Transform()); // draw transform |
| 2017 | 2061 |
| 2018 ASSERT_TRUE(tiling->TileAt(0, 0)); | 2062 ASSERT_TRUE(tiling->TileAt(0, 0)); |
| 2019 ASSERT_TRUE(tiling->TileAt(0, 1)); | 2063 ASSERT_TRUE(tiling->TileAt(0, 1)); |
| 2020 ASSERT_TRUE(tiling->TileAt(1, 0)); | 2064 ASSERT_TRUE(tiling->TileAt(1, 0)); |
| 2021 ASSERT_TRUE(tiling->TileAt(1, 1)); | 2065 ASSERT_TRUE(tiling->TileAt(1, 1)); |
| 2022 | 2066 |
| 2023 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); | 2067 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); |
| 2024 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); | 2068 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); |
| 2025 EXPECT_EQ(TilePriority::NOW, priority.priority_bin); | 2069 EXPECT_EQ(TilePriority::NOW, priority.priority_bin); |
| 2026 | 2070 |
| 2027 priority = tiling->TileAt(0, 1)->priority(ACTIVE_TREE); | 2071 priority = tiling->TileAt(0, 1)->priority(ACTIVE_TREE); |
| 2028 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); | 2072 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); |
| 2029 EXPECT_EQ(TilePriority::NOW, priority.priority_bin); | 2073 EXPECT_EQ(TilePriority::NOW, priority.priority_bin); |
| 2030 | 2074 |
| 2031 priority = tiling->TileAt(1, 0)->priority(ACTIVE_TREE); | 2075 priority = tiling->TileAt(1, 0)->priority(ACTIVE_TREE); |
| 2032 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); | 2076 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); |
| 2033 EXPECT_EQ(TilePriority::NOW, priority.priority_bin); | 2077 EXPECT_EQ(TilePriority::NOW, priority.priority_bin); |
| 2034 } | 2078 } |
| 2035 | 2079 |
| 2036 TEST(PictureLayerTilingTest, ResetClearsPriorities) { | 2080 TEST(PictureLayerTilingTest, ResetClearsPriorities) { |
| 2037 FakePictureLayerTilingClient client; | 2081 FakePictureLayerTilingClient client; |
| 2038 scoped_ptr<TestablePictureLayerTiling> tiling; | 2082 scoped_ptr<TestablePictureLayerTiling> tiling; |
| 2039 | 2083 |
| 2040 client.SetTileSize(gfx::Size(100, 100)); | 2084 client.SetTileSize(gfx::Size(100, 100)); |
| 2041 client.set_tree(ACTIVE_TREE); | 2085 client.set_tree(ACTIVE_TREE); |
| 2042 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale | 2086 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale |
| 2043 gfx::Size(100, 100), | 2087 gfx::Size(100, 100), |
| 2044 &client); | 2088 &client); |
| 2045 tiling->UpdateTilePriorities( | 2089 tiling->UpdateTilePriorities(ACTIVE_TREE, |
| 2046 ACTIVE_TREE, gfx::Rect(0, 0, 100, 100), 1.0f, 1.0f, Occlusion()); | 2090 gfx::Rect(0, 0, 100, 100), |
| 2091 1.0f, |
| 2092 1.0f, |
| 2093 NULL, // occlusion tracker |
| 2094 NULL, // render target |
| 2095 gfx::Transform()); // draw transform |
| 2047 | 2096 |
| 2048 std::vector<scoped_refptr<Tile> > tiles = tiling->AllRefTilesForTesting(); | 2097 std::vector<scoped_refptr<Tile> > tiles = tiling->AllRefTilesForTesting(); |
| 2049 ASSERT_GT(tiles.size(), 0u); | 2098 ASSERT_GT(tiles.size(), 0u); |
| 2050 for (std::vector<scoped_refptr<Tile> >::const_iterator it = tiles.begin(); | 2099 for (std::vector<scoped_refptr<Tile> >::const_iterator it = tiles.begin(); |
| 2051 it != tiles.end(); | 2100 it != tiles.end(); |
| 2052 ++it) { | 2101 ++it) { |
| 2053 EXPECT_NE(TilePriority(), (*it)->priority(ACTIVE_TREE)); | 2102 EXPECT_NE(TilePriority(), (*it)->priority(ACTIVE_TREE)); |
| 2054 } | 2103 } |
| 2055 | 2104 |
| 2056 tiling->Reset(); | 2105 tiling->Reset(); |
| (...skipping 19 matching lines...) Expand all Loading... |
| 2076 FakePictureLayerTilingClient active_client; | 2125 FakePictureLayerTilingClient active_client; |
| 2077 scoped_ptr<TestablePictureLayerTiling> active_tiling; | 2126 scoped_ptr<TestablePictureLayerTiling> active_tiling; |
| 2078 | 2127 |
| 2079 active_client.SetTileSize(gfx::Size(100, 100)); | 2128 active_client.SetTileSize(gfx::Size(100, 100)); |
| 2080 active_client.set_tree(ACTIVE_TREE); | 2129 active_client.set_tree(ACTIVE_TREE); |
| 2081 active_client.set_max_tiles_for_interest_area(10); | 2130 active_client.set_max_tiles_for_interest_area(10); |
| 2082 active_tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale | 2131 active_tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale |
| 2083 gfx::Size(10000, 10000), | 2132 gfx::Size(10000, 10000), |
| 2084 &active_client); | 2133 &active_client); |
| 2085 // Create all tiles on this tiling. | 2134 // Create all tiles on this tiling. |
| 2086 active_tiling->UpdateTilePriorities( | 2135 active_tiling->UpdateTilePriorities(ACTIVE_TREE, |
| 2087 ACTIVE_TREE, gfx::Rect(0, 0, 100, 100), 1.0f, 1.0f, Occlusion()); | 2136 gfx::Rect(0, 0, 100, 100), |
| 2137 1.0f, |
| 2138 1.0f, |
| 2139 NULL, // occlusion tracker |
| 2140 NULL, // render target |
| 2141 gfx::Transform()); // draw transform |
| 2088 | 2142 |
| 2089 FakePictureLayerTilingClient recycle_client; | 2143 FakePictureLayerTilingClient recycle_client; |
| 2090 recycle_client.SetTileSize(gfx::Size(100, 100)); | 2144 recycle_client.SetTileSize(gfx::Size(100, 100)); |
| 2091 recycle_client.set_tree(PENDING_TREE); | 2145 recycle_client.set_tree(PENDING_TREE); |
| 2092 recycle_client.set_twin_tiling(active_tiling.get()); | 2146 recycle_client.set_twin_tiling(active_tiling.get()); |
| 2093 recycle_client.set_max_tiles_for_interest_area(10); | 2147 recycle_client.set_max_tiles_for_interest_area(10); |
| 2094 | 2148 |
| 2095 scoped_ptr<TestablePictureLayerTiling> recycle_tiling; | 2149 scoped_ptr<TestablePictureLayerTiling> recycle_tiling; |
| 2096 recycle_tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale | 2150 recycle_tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale |
| 2097 gfx::Size(10000, 10000), | 2151 gfx::Size(10000, 10000), |
| 2098 &recycle_client); | 2152 &recycle_client); |
| 2099 | 2153 |
| 2100 // Create all tiles on the second tiling. All tiles should be shared. | 2154 // Create all tiles on the second tiling. All tiles should be shared. |
| 2101 recycle_tiling->UpdateTilePriorities( | 2155 recycle_tiling->UpdateTilePriorities(PENDING_TREE, |
| 2102 PENDING_TREE, gfx::Rect(0, 0, 100, 100), 1.0f, 1.0f, Occlusion()); | 2156 gfx::Rect(0, 0, 100, 100), |
| 2157 1.0f, |
| 2158 1.0f, |
| 2159 NULL, // occlusion tracker |
| 2160 NULL, // render target |
| 2161 gfx::Transform()); // draw transform |
| 2103 | 2162 |
| 2104 // Set the second tiling as recycled. | 2163 // Set the second tiling as recycled. |
| 2105 active_client.set_twin_tiling(NULL); | 2164 active_client.set_twin_tiling(NULL); |
| 2106 active_client.set_recycled_twin_tiling(recycle_tiling.get()); | 2165 active_client.set_recycled_twin_tiling(recycle_tiling.get()); |
| 2107 recycle_client.set_twin_tiling(NULL); | 2166 recycle_client.set_twin_tiling(NULL); |
| 2108 | 2167 |
| 2109 // Verify that tiles exist and are shared. | 2168 // Verify that tiles exist and are shared. |
| 2110 EXPECT_TRUE(active_tiling->TileAt(0, 0)); | 2169 EXPECT_TRUE(active_tiling->TileAt(0, 0)); |
| 2111 EXPECT_TRUE(recycle_tiling->TileAt(0, 0)); | 2170 EXPECT_TRUE(recycle_tiling->TileAt(0, 0)); |
| 2112 EXPECT_EQ(active_tiling->TileAt(0, 0), recycle_tiling->TileAt(0, 0)); | 2171 EXPECT_EQ(active_tiling->TileAt(0, 0), recycle_tiling->TileAt(0, 0)); |
| 2113 | 2172 |
| 2114 // Move the viewport far away from the (0, 0) tile. | 2173 // Move the viewport far away from the (0, 0) tile. |
| 2115 active_tiling->UpdateTilePriorities( | 2174 active_tiling->UpdateTilePriorities(ACTIVE_TREE, |
| 2116 ACTIVE_TREE, gfx::Rect(9000, 9000, 100, 100), 1.0f, 2.0, Occlusion()); | 2175 gfx::Rect(9000, 9000, 100, 100), |
| 2176 1.0f, |
| 2177 2.0, |
| 2178 NULL, // occlusion tracker |
| 2179 NULL, // render target |
| 2180 gfx::Transform()); // draw transform |
| 2117 // Ensure the tile was deleted on both tilings. | 2181 // Ensure the tile was deleted on both tilings. |
| 2118 EXPECT_FALSE(active_tiling->TileAt(0, 0)); | 2182 EXPECT_FALSE(active_tiling->TileAt(0, 0)); |
| 2119 EXPECT_FALSE(recycle_tiling->TileAt(0, 0)); | 2183 EXPECT_FALSE(recycle_tiling->TileAt(0, 0)); |
| 2120 | 2184 |
| 2121 // Move the viewport back to (0, 0) tile. | 2185 // Move the viewport back to (0, 0) tile. |
| 2122 active_tiling->UpdateTilePriorities( | 2186 active_tiling->UpdateTilePriorities(ACTIVE_TREE, |
| 2123 ACTIVE_TREE, gfx::Rect(0, 0, 100, 100), 1.0f, 3.0, Occlusion()); | 2187 gfx::Rect(0, 0, 100, 100), |
| 2188 1.0f, |
| 2189 3.0, |
| 2190 NULL, // occlusion tracker |
| 2191 NULL, // render target |
| 2192 gfx::Transform()); // draw transform |
| 2124 | 2193 |
| 2125 // Ensure that we now have a tile here, but the recycle tiling does not. | 2194 // Ensure that we now have a tile here, but the recycle tiling does not. |
| 2126 EXPECT_TRUE(active_tiling->TileAt(0, 0)); | 2195 EXPECT_TRUE(active_tiling->TileAt(0, 0)); |
| 2127 EXPECT_FALSE(recycle_tiling->TileAt(0, 0)); | 2196 EXPECT_FALSE(recycle_tiling->TileAt(0, 0)); |
| 2128 } | 2197 } |
| 2129 | 2198 |
| 2130 TEST(PictureLayerTilingTest, RecycledTilesClearedOnReset) { | 2199 TEST(PictureLayerTilingTest, RecycledTilesClearedOnReset) { |
| 2131 FakePictureLayerTilingClient active_client; | 2200 FakePictureLayerTilingClient active_client; |
| 2132 scoped_ptr<TestablePictureLayerTiling> active_tiling; | 2201 scoped_ptr<TestablePictureLayerTiling> active_tiling; |
| 2133 | 2202 |
| 2134 active_client.SetTileSize(gfx::Size(100, 100)); | 2203 active_client.SetTileSize(gfx::Size(100, 100)); |
| 2135 active_client.set_tree(ACTIVE_TREE); | 2204 active_client.set_tree(ACTIVE_TREE); |
| 2136 active_tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale | 2205 active_tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale |
| 2137 gfx::Size(100, 100), | 2206 gfx::Size(100, 100), |
| 2138 &active_client); | 2207 &active_client); |
| 2139 // Create all tiles on this tiling. | 2208 // Create all tiles on this tiling. |
| 2140 active_tiling->UpdateTilePriorities( | 2209 active_tiling->UpdateTilePriorities(ACTIVE_TREE, |
| 2141 ACTIVE_TREE, gfx::Rect(0, 0, 100, 100), 1.0f, 1.0f, Occlusion()); | 2210 gfx::Rect(0, 0, 100, 100), |
| 2211 1.0f, |
| 2212 1.0f, |
| 2213 NULL, // occlusion tracker |
| 2214 NULL, // render target |
| 2215 gfx::Transform()); // draw transform |
| 2142 | 2216 |
| 2143 FakePictureLayerTilingClient recycle_client; | 2217 FakePictureLayerTilingClient recycle_client; |
| 2144 recycle_client.SetTileSize(gfx::Size(100, 100)); | 2218 recycle_client.SetTileSize(gfx::Size(100, 100)); |
| 2145 recycle_client.set_tree(PENDING_TREE); | 2219 recycle_client.set_tree(PENDING_TREE); |
| 2146 recycle_client.set_twin_tiling(active_tiling.get()); | 2220 recycle_client.set_twin_tiling(active_tiling.get()); |
| 2147 recycle_client.set_max_tiles_for_interest_area(10); | 2221 recycle_client.set_max_tiles_for_interest_area(10); |
| 2148 | 2222 |
| 2149 scoped_ptr<TestablePictureLayerTiling> recycle_tiling; | 2223 scoped_ptr<TestablePictureLayerTiling> recycle_tiling; |
| 2150 recycle_tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale | 2224 recycle_tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale |
| 2151 gfx::Size(100, 100), | 2225 gfx::Size(100, 100), |
| 2152 &recycle_client); | 2226 &recycle_client); |
| 2153 | 2227 |
| 2154 // Create all tiles on the recycle tiling. All tiles should be shared. | 2228 // Create all tiles on the recycle tiling. All tiles should be shared. |
| 2155 recycle_tiling->UpdateTilePriorities( | 2229 recycle_tiling->UpdateTilePriorities(PENDING_TREE, |
| 2156 PENDING_TREE, gfx::Rect(0, 0, 100, 100), 1.0f, 1.0f, Occlusion()); | 2230 gfx::Rect(0, 0, 100, 100), |
| 2231 1.0f, |
| 2232 1.0f, |
| 2233 NULL, // occlusion tracker |
| 2234 NULL, // render target |
| 2235 gfx::Transform()); // draw transform |
| 2157 | 2236 |
| 2158 // Set the second tiling as recycled. | 2237 // Set the second tiling as recycled. |
| 2159 active_client.set_twin_tiling(NULL); | 2238 active_client.set_twin_tiling(NULL); |
| 2160 active_client.set_recycled_twin_tiling(recycle_tiling.get()); | 2239 active_client.set_recycled_twin_tiling(recycle_tiling.get()); |
| 2161 recycle_client.set_twin_tiling(NULL); | 2240 recycle_client.set_twin_tiling(NULL); |
| 2162 | 2241 |
| 2163 // Verify that tiles exist and are shared. | 2242 // Verify that tiles exist and are shared. |
| 2164 EXPECT_TRUE(active_tiling->TileAt(0, 0)); | 2243 EXPECT_TRUE(active_tiling->TileAt(0, 0)); |
| 2165 EXPECT_TRUE(recycle_tiling->TileAt(0, 0)); | 2244 EXPECT_TRUE(recycle_tiling->TileAt(0, 0)); |
| 2166 EXPECT_EQ(active_tiling->TileAt(0, 0), recycle_tiling->TileAt(0, 0)); | 2245 EXPECT_EQ(active_tiling->TileAt(0, 0), recycle_tiling->TileAt(0, 0)); |
| 2167 | 2246 |
| 2168 // Reset the active tiling. The recycle tiles should be released too. | 2247 // Reset the active tiling. The recycle tiles should be released too. |
| 2169 active_tiling->Reset(); | 2248 active_tiling->Reset(); |
| 2170 EXPECT_FALSE(active_tiling->TileAt(0, 0)); | 2249 EXPECT_FALSE(active_tiling->TileAt(0, 0)); |
| 2171 EXPECT_FALSE(recycle_tiling->TileAt(0, 0)); | 2250 EXPECT_FALSE(recycle_tiling->TileAt(0, 0)); |
| 2172 } | 2251 } |
| 2173 | 2252 |
| 2174 } // namespace | 2253 } // namespace |
| 2175 } // namespace cc | 2254 } // namespace cc |
| OLD | NEW |