| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "cc/resources/eviction_tile_priority_queue.h" | 5 #include "cc/resources/eviction_tile_priority_queue.h" |
| 6 #include "cc/resources/raster_tile_priority_queue.h" | 6 #include "cc/resources/raster_tile_priority_queue.h" |
| 7 #include "cc/resources/tile.h" | 7 #include "cc/resources/tile.h" |
| 8 #include "cc/resources/tile_priority.h" | 8 #include "cc/resources/tile_priority.h" |
| 9 #include "cc/resources/tiling_set_raster_queue_all.h" | 9 #include "cc/resources/tiling_set_raster_queue_all.h" |
| 10 #include "cc/test/begin_frame_args_test.h" | 10 #include "cc/test/begin_frame_args_test.h" |
| (...skipping 565 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 576 // Ensure we can activate. | 576 // Ensure we can activate. |
| 577 EXPECT_TRUE(pending_layer_->AllTilesRequiredForActivationAreReadyToDraw()); | 577 EXPECT_TRUE(pending_layer_->AllTilesRequiredForActivationAreReadyToDraw()); |
| 578 EXPECT_TRUE(pending_child_raw->AllTilesRequiredForActivationAreReadyToDraw()); | 578 EXPECT_TRUE(pending_child_raw->AllTilesRequiredForActivationAreReadyToDraw()); |
| 579 } | 579 } |
| 580 | 580 |
| 581 TEST_F(TileManagerTilePriorityQueueTest, EvictionTilePriorityQueue) { | 581 TEST_F(TileManagerTilePriorityQueueTest, EvictionTilePriorityQueue) { |
| 582 const gfx::Size layer_bounds(1000, 1000); | 582 const gfx::Size layer_bounds(1000, 1000); |
| 583 host_impl_.SetViewportSize(layer_bounds); | 583 host_impl_.SetViewportSize(layer_bounds); |
| 584 SetupDefaultTrees(layer_bounds); | 584 SetupDefaultTrees(layer_bounds); |
| 585 | 585 |
| 586 EvictionTilePriorityQueue empty_queue; | 586 scoped_ptr<EvictionTilePriorityQueue> empty_queue( |
| 587 host_impl_.BuildEvictionQueue(&empty_queue, SAME_PRIORITY_FOR_BOTH_TREES); | 587 host_impl_.BuildEvictionQueue(SAME_PRIORITY_FOR_BOTH_TREES)); |
| 588 EXPECT_TRUE(empty_queue.IsEmpty()); | 588 EXPECT_TRUE(empty_queue->IsEmpty()); |
| 589 std::set<Tile*> all_tiles; | 589 std::set<Tile*> all_tiles; |
| 590 size_t tile_count = 0; | 590 size_t tile_count = 0; |
| 591 | 591 |
| 592 RasterTilePriorityQueue raster_queue; | 592 RasterTilePriorityQueue raster_queue; |
| 593 host_impl_.BuildRasterQueue(&raster_queue, SAME_PRIORITY_FOR_BOTH_TREES, | 593 host_impl_.BuildRasterQueue(&raster_queue, SAME_PRIORITY_FOR_BOTH_TREES, |
| 594 RasterTilePriorityQueue::Type::ALL); | 594 RasterTilePriorityQueue::Type::ALL); |
| 595 while (!raster_queue.IsEmpty()) { | 595 while (!raster_queue.IsEmpty()) { |
| 596 ++tile_count; | 596 ++tile_count; |
| 597 EXPECT_TRUE(raster_queue.Top()); | 597 EXPECT_TRUE(raster_queue.Top()); |
| 598 all_tiles.insert(raster_queue.Top()); | 598 all_tiles.insert(raster_queue.Top()); |
| 599 raster_queue.Pop(); | 599 raster_queue.Pop(); |
| 600 } | 600 } |
| 601 | 601 |
| 602 EXPECT_EQ(tile_count, all_tiles.size()); | 602 EXPECT_EQ(tile_count, all_tiles.size()); |
| 603 EXPECT_EQ(16u, tile_count); | 603 EXPECT_EQ(16u, tile_count); |
| 604 | 604 |
| 605 tile_manager()->InitializeTilesWithResourcesForTesting( | 605 tile_manager()->InitializeTilesWithResourcesForTesting( |
| 606 std::vector<Tile*>(all_tiles.begin(), all_tiles.end())); | 606 std::vector<Tile*>(all_tiles.begin(), all_tiles.end())); |
| 607 | 607 |
| 608 EvictionTilePriorityQueue queue; | 608 scoped_ptr<EvictionTilePriorityQueue> queue( |
| 609 host_impl_.BuildEvictionQueue(&queue, SMOOTHNESS_TAKES_PRIORITY); | 609 host_impl_.BuildEvictionQueue(SMOOTHNESS_TAKES_PRIORITY)); |
| 610 EXPECT_FALSE(queue.IsEmpty()); | 610 EXPECT_FALSE(queue->IsEmpty()); |
| 611 | 611 |
| 612 // Sanity check, all tiles should be visible. | 612 // Sanity check, all tiles should be visible. |
| 613 std::set<Tile*> smoothness_tiles; | 613 std::set<Tile*> smoothness_tiles; |
| 614 while (!queue.IsEmpty()) { | 614 while (!queue->IsEmpty()) { |
| 615 Tile* tile = queue.Top(); | 615 Tile* tile = queue->Top(); |
| 616 EXPECT_TRUE(tile); | 616 EXPECT_TRUE(tile); |
| 617 EXPECT_EQ(TilePriority::NOW, tile->priority(ACTIVE_TREE).priority_bin); | 617 EXPECT_EQ(TilePriority::NOW, tile->priority(ACTIVE_TREE).priority_bin); |
| 618 EXPECT_EQ(TilePriority::NOW, tile->priority(PENDING_TREE).priority_bin); | 618 EXPECT_EQ(TilePriority::NOW, tile->priority(PENDING_TREE).priority_bin); |
| 619 EXPECT_TRUE(tile->HasResource()); | 619 EXPECT_TRUE(tile->HasResource()); |
| 620 smoothness_tiles.insert(tile); | 620 smoothness_tiles.insert(tile); |
| 621 queue.Pop(); | 621 queue->Pop(); |
| 622 } | 622 } |
| 623 EXPECT_EQ(all_tiles, smoothness_tiles); | 623 EXPECT_EQ(all_tiles, smoothness_tiles); |
| 624 | 624 |
| 625 tile_manager()->ReleaseTileResourcesForTesting( | 625 tile_manager()->ReleaseTileResourcesForTesting( |
| 626 std::vector<Tile*>(all_tiles.begin(), all_tiles.end())); | 626 std::vector<Tile*>(all_tiles.begin(), all_tiles.end())); |
| 627 | 627 |
| 628 Region invalidation(gfx::Rect(0, 0, 500, 500)); | 628 Region invalidation(gfx::Rect(0, 0, 500, 500)); |
| 629 | 629 |
| 630 // Invalidate the pending tree. | 630 // Invalidate the pending tree. |
| 631 pending_layer_->set_invalidation(invalidation); | 631 pending_layer_->set_invalidation(invalidation); |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 668 for (size_t i = 0; i < active_low_res_tiles.size(); ++i) | 668 for (size_t i = 0; i < active_low_res_tiles.size(); ++i) |
| 669 all_tiles.insert(active_low_res_tiles[i]); | 669 all_tiles.insert(active_low_res_tiles[i]); |
| 670 | 670 |
| 671 tile_manager()->InitializeTilesWithResourcesForTesting( | 671 tile_manager()->InitializeTilesWithResourcesForTesting( |
| 672 std::vector<Tile*>(all_tiles.begin(), all_tiles.end())); | 672 std::vector<Tile*>(all_tiles.begin(), all_tiles.end())); |
| 673 | 673 |
| 674 Tile* last_tile = NULL; | 674 Tile* last_tile = NULL; |
| 675 smoothness_tiles.clear(); | 675 smoothness_tiles.clear(); |
| 676 tile_count = 0; | 676 tile_count = 0; |
| 677 // Here we expect to get increasing ACTIVE_TREE priority_bin. | 677 // Here we expect to get increasing ACTIVE_TREE priority_bin. |
| 678 queue.Reset(); | 678 queue = host_impl_.BuildEvictionQueue(SMOOTHNESS_TAKES_PRIORITY); |
| 679 host_impl_.BuildEvictionQueue(&queue, SMOOTHNESS_TAKES_PRIORITY); | |
| 680 int distance_increasing = 0; | 679 int distance_increasing = 0; |
| 681 int distance_decreasing = 0; | 680 int distance_decreasing = 0; |
| 682 while (!queue.IsEmpty()) { | 681 while (!queue->IsEmpty()) { |
| 683 Tile* tile = queue.Top(); | 682 Tile* tile = queue->Top(); |
| 684 EXPECT_TRUE(tile); | 683 EXPECT_TRUE(tile); |
| 685 EXPECT_TRUE(tile->HasResource()); | 684 EXPECT_TRUE(tile->HasResource()); |
| 686 | 685 |
| 687 if (!last_tile) | 686 if (!last_tile) |
| 688 last_tile = tile; | 687 last_tile = tile; |
| 689 | 688 |
| 690 EXPECT_GE(last_tile->priority(ACTIVE_TREE).priority_bin, | 689 EXPECT_GE(last_tile->priority(ACTIVE_TREE).priority_bin, |
| 691 tile->priority(ACTIVE_TREE).priority_bin); | 690 tile->priority(ACTIVE_TREE).priority_bin); |
| 692 if (last_tile->priority(ACTIVE_TREE).priority_bin == | 691 if (last_tile->priority(ACTIVE_TREE).priority_bin == |
| 693 tile->priority(ACTIVE_TREE).priority_bin) { | 692 tile->priority(ACTIVE_TREE).priority_bin) { |
| 694 EXPECT_LE(last_tile->required_for_activation(), | 693 EXPECT_LE(last_tile->required_for_activation(), |
| 695 tile->required_for_activation()); | 694 tile->required_for_activation()); |
| 696 if (last_tile->required_for_activation() == | 695 if (last_tile->required_for_activation() == |
| 697 tile->required_for_activation()) { | 696 tile->required_for_activation()) { |
| 698 if (last_tile->priority(ACTIVE_TREE).distance_to_visible >= | 697 if (last_tile->priority(ACTIVE_TREE).distance_to_visible >= |
| 699 tile->priority(ACTIVE_TREE).distance_to_visible) | 698 tile->priority(ACTIVE_TREE).distance_to_visible) |
| 700 ++distance_decreasing; | 699 ++distance_decreasing; |
| 701 else | 700 else |
| 702 ++distance_increasing; | 701 ++distance_increasing; |
| 703 } | 702 } |
| 704 } | 703 } |
| 705 | 704 |
| 706 last_tile = tile; | 705 last_tile = tile; |
| 707 ++tile_count; | 706 ++tile_count; |
| 708 smoothness_tiles.insert(tile); | 707 smoothness_tiles.insert(tile); |
| 709 queue.Pop(); | 708 queue->Pop(); |
| 710 } | 709 } |
| 711 | 710 |
| 712 EXPECT_EQ(3, distance_increasing); | 711 EXPECT_EQ(3, distance_increasing); |
| 713 EXPECT_EQ(16, distance_decreasing); | 712 EXPECT_EQ(16, distance_decreasing); |
| 714 EXPECT_EQ(tile_count, smoothness_tiles.size()); | 713 EXPECT_EQ(tile_count, smoothness_tiles.size()); |
| 715 EXPECT_EQ(all_tiles, smoothness_tiles); | 714 EXPECT_EQ(all_tiles, smoothness_tiles); |
| 716 | 715 |
| 717 std::set<Tile*> new_content_tiles; | 716 std::set<Tile*> new_content_tiles; |
| 718 last_tile = NULL; | 717 last_tile = NULL; |
| 719 // Here we expect to get increasing PENDING_TREE priority_bin. | 718 // Here we expect to get increasing PENDING_TREE priority_bin. |
| 720 queue.Reset(); | 719 queue = host_impl_.BuildEvictionQueue(NEW_CONTENT_TAKES_PRIORITY); |
| 721 host_impl_.BuildEvictionQueue(&queue, NEW_CONTENT_TAKES_PRIORITY); | |
| 722 distance_decreasing = 0; | 720 distance_decreasing = 0; |
| 723 distance_increasing = 0; | 721 distance_increasing = 0; |
| 724 while (!queue.IsEmpty()) { | 722 while (!queue->IsEmpty()) { |
| 725 Tile* tile = queue.Top(); | 723 Tile* tile = queue->Top(); |
| 726 EXPECT_TRUE(tile); | 724 EXPECT_TRUE(tile); |
| 727 | 725 |
| 728 if (!last_tile) | 726 if (!last_tile) |
| 729 last_tile = tile; | 727 last_tile = tile; |
| 730 | 728 |
| 731 EXPECT_GE(last_tile->priority(PENDING_TREE).priority_bin, | 729 EXPECT_GE(last_tile->priority(PENDING_TREE).priority_bin, |
| 732 tile->priority(PENDING_TREE).priority_bin); | 730 tile->priority(PENDING_TREE).priority_bin); |
| 733 if (last_tile->priority(PENDING_TREE).priority_bin == | 731 if (last_tile->priority(PENDING_TREE).priority_bin == |
| 734 tile->priority(PENDING_TREE).priority_bin) { | 732 tile->priority(PENDING_TREE).priority_bin) { |
| 735 EXPECT_LE(last_tile->required_for_activation(), | 733 EXPECT_LE(last_tile->required_for_activation(), |
| 736 tile->required_for_activation()); | 734 tile->required_for_activation()); |
| 737 if (last_tile->required_for_activation() == | 735 if (last_tile->required_for_activation() == |
| 738 tile->required_for_activation()) { | 736 tile->required_for_activation()) { |
| 739 if (last_tile->priority(PENDING_TREE).distance_to_visible >= | 737 if (last_tile->priority(PENDING_TREE).distance_to_visible >= |
| 740 tile->priority(PENDING_TREE).distance_to_visible) | 738 tile->priority(PENDING_TREE).distance_to_visible) |
| 741 ++distance_decreasing; | 739 ++distance_decreasing; |
| 742 else | 740 else |
| 743 ++distance_increasing; | 741 ++distance_increasing; |
| 744 } | 742 } |
| 745 } | 743 } |
| 746 | 744 |
| 747 last_tile = tile; | 745 last_tile = tile; |
| 748 new_content_tiles.insert(tile); | 746 new_content_tiles.insert(tile); |
| 749 queue.Pop(); | 747 queue->Pop(); |
| 750 } | 748 } |
| 751 | 749 |
| 752 EXPECT_EQ(3, distance_increasing); | 750 EXPECT_EQ(3, distance_increasing); |
| 753 EXPECT_EQ(16, distance_decreasing); | 751 EXPECT_EQ(16, distance_decreasing); |
| 754 EXPECT_EQ(tile_count, new_content_tiles.size()); | 752 EXPECT_EQ(tile_count, new_content_tiles.size()); |
| 755 EXPECT_EQ(all_tiles, new_content_tiles); | 753 EXPECT_EQ(all_tiles, new_content_tiles); |
| 756 } | 754 } |
| 757 | 755 |
| 758 TEST_F(TileManagerTilePriorityQueueTest, | 756 TEST_F(TileManagerTilePriorityQueueTest, |
| 759 EvictionTilePriorityQueueWithOcclusion) { | 757 EvictionTilePriorityQueueWithOcclusion) { |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 836 all_tiles.insert(pending_child_low_res_tiles.begin(), | 834 all_tiles.insert(pending_child_low_res_tiles.begin(), |
| 837 pending_child_low_res_tiles.end()); | 835 pending_child_low_res_tiles.end()); |
| 838 | 836 |
| 839 tile_manager()->InitializeTilesWithResourcesForTesting( | 837 tile_manager()->InitializeTilesWithResourcesForTesting( |
| 840 std::vector<Tile*>(all_tiles.begin(), all_tiles.end())); | 838 std::vector<Tile*>(all_tiles.begin(), all_tiles.end())); |
| 841 | 839 |
| 842 // Verify occlusion is considered by EvictionTilePriorityQueue. | 840 // Verify occlusion is considered by EvictionTilePriorityQueue. |
| 843 TreePriority tree_priority = NEW_CONTENT_TAKES_PRIORITY; | 841 TreePriority tree_priority = NEW_CONTENT_TAKES_PRIORITY; |
| 844 size_t occluded_count = 0u; | 842 size_t occluded_count = 0u; |
| 845 Tile* last_tile = NULL; | 843 Tile* last_tile = NULL; |
| 846 EvictionTilePriorityQueue queue; | 844 scoped_ptr<EvictionTilePriorityQueue> queue( |
| 847 host_impl_.BuildEvictionQueue(&queue, tree_priority); | 845 host_impl_.BuildEvictionQueue(tree_priority)); |
| 848 while (!queue.IsEmpty()) { | 846 while (!queue->IsEmpty()) { |
| 849 Tile* tile = queue.Top(); | 847 Tile* tile = queue->Top(); |
| 850 if (!last_tile) | 848 if (!last_tile) |
| 851 last_tile = tile; | 849 last_tile = tile; |
| 852 | 850 |
| 853 bool tile_is_occluded = tile->is_occluded_for_tree_priority(tree_priority); | 851 bool tile_is_occluded = tile->is_occluded_for_tree_priority(tree_priority); |
| 854 | 852 |
| 855 // The only way we will encounter an occluded tile after an unoccluded | 853 // The only way we will encounter an occluded tile after an unoccluded |
| 856 // tile is if the priorty bin decreased, the tile is required for | 854 // tile is if the priorty bin decreased, the tile is required for |
| 857 // activation, or the scale changed. | 855 // activation, or the scale changed. |
| 858 if (tile_is_occluded) { | 856 if (tile_is_occluded) { |
| 859 occluded_count++; | 857 occluded_count++; |
| 860 | 858 |
| 861 bool last_tile_is_occluded = | 859 bool last_tile_is_occluded = |
| 862 last_tile->is_occluded_for_tree_priority(tree_priority); | 860 last_tile->is_occluded_for_tree_priority(tree_priority); |
| 863 if (!last_tile_is_occluded) { | 861 if (!last_tile_is_occluded) { |
| 864 TilePriority::PriorityBin tile_priority_bin = | 862 TilePriority::PriorityBin tile_priority_bin = |
| 865 tile->priority_for_tree_priority(tree_priority).priority_bin; | 863 tile->priority_for_tree_priority(tree_priority).priority_bin; |
| 866 TilePriority::PriorityBin last_tile_priority_bin = | 864 TilePriority::PriorityBin last_tile_priority_bin = |
| 867 last_tile->priority_for_tree_priority(tree_priority).priority_bin; | 865 last_tile->priority_for_tree_priority(tree_priority).priority_bin; |
| 868 | 866 |
| 869 EXPECT_TRUE((tile_priority_bin < last_tile_priority_bin) || | 867 EXPECT_TRUE((tile_priority_bin < last_tile_priority_bin) || |
| 870 tile->required_for_activation() || | 868 tile->required_for_activation() || |
| 871 (tile->contents_scale() != last_tile->contents_scale())); | 869 (tile->contents_scale() != last_tile->contents_scale())); |
| 872 } | 870 } |
| 873 } | 871 } |
| 874 last_tile = tile; | 872 last_tile = tile; |
| 875 queue.Pop(); | 873 queue->Pop(); |
| 876 } | 874 } |
| 877 size_t expected_occluded_count = | 875 size_t expected_occluded_count = |
| 878 pending_child_high_res_tiles.size() + pending_child_low_res_tiles.size(); | 876 pending_child_high_res_tiles.size() + pending_child_low_res_tiles.size(); |
| 879 EXPECT_EQ(expected_occluded_count, occluded_count); | 877 EXPECT_EQ(expected_occluded_count, occluded_count); |
| 880 } | 878 } |
| 881 | 879 |
| 882 TEST_F(TileManagerTilePriorityQueueTest, | 880 TEST_F(TileManagerTilePriorityQueueTest, |
| 883 EvictionTilePriorityQueueWithTransparentLayer) { | 881 EvictionTilePriorityQueueWithTransparentLayer) { |
| 884 base::TimeTicks time_ticks; | 882 base::TimeTicks time_ticks; |
| 885 time_ticks += base::TimeDelta::FromMilliseconds(1); | 883 time_ticks += base::TimeDelta::FromMilliseconds(1); |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 962 | 960 |
| 963 EXPECT_TRUE(pending_layer_->HasValidTilePriorities()); | 961 EXPECT_TRUE(pending_layer_->HasValidTilePriorities()); |
| 964 EXPECT_FALSE(pending_child_layer->HasValidTilePriorities()); | 962 EXPECT_FALSE(pending_child_layer->HasValidTilePriorities()); |
| 965 | 963 |
| 966 // Verify that eviction queue returns tiles also from layers without valid | 964 // Verify that eviction queue returns tiles also from layers without valid |
| 967 // tile priorities and that the tile priority bin of those tiles is (at most) | 965 // tile priorities and that the tile priority bin of those tiles is (at most) |
| 968 // EVENTUALLY. | 966 // EVENTUALLY. |
| 969 TreePriority tree_priority = NEW_CONTENT_TAKES_PRIORITY; | 967 TreePriority tree_priority = NEW_CONTENT_TAKES_PRIORITY; |
| 970 std::set<Tile*> new_content_tiles; | 968 std::set<Tile*> new_content_tiles; |
| 971 size_t tile_count = 0; | 969 size_t tile_count = 0; |
| 972 EvictionTilePriorityQueue queue; | 970 scoped_ptr<EvictionTilePriorityQueue> queue( |
| 973 host_impl_.BuildEvictionQueue(&queue, tree_priority); | 971 host_impl_.BuildEvictionQueue(tree_priority)); |
| 974 while (!queue.IsEmpty()) { | 972 while (!queue->IsEmpty()) { |
| 975 Tile* tile = queue.Top(); | 973 Tile* tile = queue->Top(); |
| 976 const TilePriority& pending_priority = tile->priority(PENDING_TREE); | 974 const TilePriority& pending_priority = tile->priority(PENDING_TREE); |
| 977 EXPECT_NE(std::numeric_limits<float>::infinity(), | 975 EXPECT_NE(std::numeric_limits<float>::infinity(), |
| 978 pending_priority.distance_to_visible); | 976 pending_priority.distance_to_visible); |
| 979 if (all_pending_child_tiles.find(tile) != all_pending_child_tiles.end()) | 977 if (all_pending_child_tiles.find(tile) != all_pending_child_tiles.end()) |
| 980 EXPECT_EQ(TilePriority::EVENTUALLY, pending_priority.priority_bin); | 978 EXPECT_EQ(TilePriority::EVENTUALLY, pending_priority.priority_bin); |
| 981 else | 979 else |
| 982 EXPECT_EQ(TilePriority::NOW, pending_priority.priority_bin); | 980 EXPECT_EQ(TilePriority::NOW, pending_priority.priority_bin); |
| 983 new_content_tiles.insert(tile); | 981 new_content_tiles.insert(tile); |
| 984 ++tile_count; | 982 ++tile_count; |
| 985 queue.Pop(); | 983 queue->Pop(); |
| 986 } | 984 } |
| 987 EXPECT_EQ(tile_count, new_content_tiles.size()); | 985 EXPECT_EQ(tile_count, new_content_tiles.size()); |
| 988 EXPECT_EQ(all_tiles, new_content_tiles); | 986 EXPECT_EQ(all_tiles, new_content_tiles); |
| 989 } | 987 } |
| 990 | 988 |
| 991 TEST_F(TileManagerTilePriorityQueueTest, RasterTilePriorityQueueEmptyLayers) { | 989 TEST_F(TileManagerTilePriorityQueueTest, RasterTilePriorityQueueEmptyLayers) { |
| 992 const gfx::Size layer_bounds(1000, 1000); | 990 const gfx::Size layer_bounds(1000, 1000); |
| 993 host_impl_.SetViewportSize(layer_bounds); | 991 host_impl_.SetViewportSize(layer_bounds); |
| 994 SetupDefaultTrees(layer_bounds); | 992 SetupDefaultTrees(layer_bounds); |
| 995 | 993 |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1052 all_tiles.insert(raster_queue.Top()); | 1050 all_tiles.insert(raster_queue.Top()); |
| 1053 ++tile_count; | 1051 ++tile_count; |
| 1054 raster_queue.Pop(); | 1052 raster_queue.Pop(); |
| 1055 } | 1053 } |
| 1056 EXPECT_EQ(tile_count, all_tiles.size()); | 1054 EXPECT_EQ(tile_count, all_tiles.size()); |
| 1057 EXPECT_EQ(16u, tile_count); | 1055 EXPECT_EQ(16u, tile_count); |
| 1058 | 1056 |
| 1059 std::vector<Tile*> tiles(all_tiles.begin(), all_tiles.end()); | 1057 std::vector<Tile*> tiles(all_tiles.begin(), all_tiles.end()); |
| 1060 host_impl_.tile_manager()->InitializeTilesWithResourcesForTesting(tiles); | 1058 host_impl_.tile_manager()->InitializeTilesWithResourcesForTesting(tiles); |
| 1061 | 1059 |
| 1062 EvictionTilePriorityQueue queue; | |
| 1063 for (int i = 1; i < 10; ++i) { | 1060 for (int i = 1; i < 10; ++i) { |
| 1064 scoped_ptr<FakePictureLayerImpl> pending_layer = | 1061 scoped_ptr<FakePictureLayerImpl> pending_layer = |
| 1065 FakePictureLayerImpl::Create(host_impl_.pending_tree(), id_ + i); | 1062 FakePictureLayerImpl::Create(host_impl_.pending_tree(), id_ + i); |
| 1066 pending_layer->SetDrawsContent(true); | 1063 pending_layer->SetDrawsContent(true); |
| 1067 pending_layer->set_has_valid_tile_priorities(true); | 1064 pending_layer->set_has_valid_tile_priorities(true); |
| 1068 pending_layer_->AddChild(pending_layer.Pass()); | 1065 pending_layer_->AddChild(pending_layer.Pass()); |
| 1069 } | 1066 } |
| 1070 | 1067 |
| 1071 host_impl_.BuildEvictionQueue(&queue, SAME_PRIORITY_FOR_BOTH_TREES); | 1068 scoped_ptr<EvictionTilePriorityQueue> queue( |
| 1072 EXPECT_FALSE(queue.IsEmpty()); | 1069 host_impl_.BuildEvictionQueue(SAME_PRIORITY_FOR_BOTH_TREES)); |
| 1070 EXPECT_FALSE(queue->IsEmpty()); |
| 1073 | 1071 |
| 1074 tile_count = 0; | 1072 tile_count = 0; |
| 1075 all_tiles.clear(); | 1073 all_tiles.clear(); |
| 1076 while (!queue.IsEmpty()) { | 1074 while (!queue->IsEmpty()) { |
| 1077 EXPECT_TRUE(queue.Top()); | 1075 EXPECT_TRUE(queue->Top()); |
| 1078 all_tiles.insert(queue.Top()); | 1076 all_tiles.insert(queue->Top()); |
| 1079 ++tile_count; | 1077 ++tile_count; |
| 1080 queue.Pop(); | 1078 queue->Pop(); |
| 1081 } | 1079 } |
| 1082 EXPECT_EQ(tile_count, all_tiles.size()); | 1080 EXPECT_EQ(tile_count, all_tiles.size()); |
| 1083 EXPECT_EQ(16u, tile_count); | 1081 EXPECT_EQ(16u, tile_count); |
| 1084 } | 1082 } |
| 1085 | 1083 |
| 1086 TEST_F(TileManagerTilePriorityQueueTest, | 1084 TEST_F(TileManagerTilePriorityQueueTest, |
| 1087 RasterTilePriorityQueueStaticViewport) { | 1085 RasterTilePriorityQueueStaticViewport) { |
| 1088 FakePictureLayerTilingClient client; | 1086 FakePictureLayerTilingClient client; |
| 1089 | 1087 |
| 1090 gfx::Rect viewport(50, 50, 100, 100); | 1088 gfx::Rect viewport(50, 50, 100, 100); |
| (...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1265 EXPECT_GT(eventually_bin_order_correct_count, | 1263 EXPECT_GT(eventually_bin_order_correct_count, |
| 1266 eventually_bin_order_incorrect_count); | 1264 eventually_bin_order_incorrect_count); |
| 1267 | 1265 |
| 1268 EXPECT_TRUE(have_tiles[TilePriority::NOW]); | 1266 EXPECT_TRUE(have_tiles[TilePriority::NOW]); |
| 1269 EXPECT_TRUE(have_tiles[TilePriority::SOON]); | 1267 EXPECT_TRUE(have_tiles[TilePriority::SOON]); |
| 1270 EXPECT_TRUE(have_tiles[TilePriority::EVENTUALLY]); | 1268 EXPECT_TRUE(have_tiles[TilePriority::EVENTUALLY]); |
| 1271 } | 1269 } |
| 1272 | 1270 |
| 1273 } // namespace | 1271 } // namespace |
| 1274 } // namespace cc | 1272 } // namespace cc |
| OLD | NEW |