#include "cc/test/fake_picture_pile_impl.h"
#include "cc/test/fake_tile_manager.h"
#include "cc/test/fake_tile_manager_client.h"
+#include "cc/test/test_shared_bitmap_manager.h"
#include "cc/test/test_tile_priorities.h"
#include "testing/gtest/include/gtest/gtest.h"
const ManagedTileState& ams = a->managed_state();
const ManagedTileState& bms = b->managed_state();
+ if (ams.priority_bin != bms.priority_bin)
+ return ams.priority_bin < bms.priority_bin;
+
if (ams.required_for_activation != bms.required_for_activation)
return ams.required_for_activation;
if (ams.resolution != bms.resolution)
return ams.resolution < bms.resolution;
- if (ams.time_to_needed_in_seconds != bms.time_to_needed_in_seconds)
- return ams.time_to_needed_in_seconds < bms.time_to_needed_in_seconds;
-
- if (ams.distance_to_visible_in_pixels !=
- bms.distance_to_visible_in_pixels) {
- return ams.distance_to_visible_in_pixels <
- bms.distance_to_visible_in_pixels;
- }
+ if (ams.distance_to_visible != bms.distance_to_visible)
+ return ams.distance_to_visible < bms.distance_to_visible;
gfx::Rect a_rect = a->content_rect();
gfx::Rect b_rect = b->content_rect();
output_surface_ = FakeOutputSurface::Create3d().Pass();
CHECK(output_surface_->BindToClient(&output_surface_client_));
- resource_provider_ =
- ResourceProvider::Create(output_surface_.get(),
- NULL,
- 0,
- false,
- 1).Pass();
+ shared_bitmap_manager_.reset(new TestSharedBitmapManager());
+ resource_provider_ = ResourceProvider::Create(output_surface_.get(),
+ shared_bitmap_manager_.get(),
+ NULL,
+ 0,
+ false,
+ 1,
+ false).Pass();
+ resource_pool_ = ResourcePool::Create(
+ resource_provider_.get(), GL_TEXTURE_2D, RGBA_8888);
tile_manager_.reset(
- new FakeTileManager(&tile_manager_client_, resource_provider_.get()));
- picture_pile_ = FakePicturePileImpl::CreatePile();
+ new FakeTileManager(&tile_manager_client_, resource_pool_.get()));
+ picture_pile_ = FakePicturePileImpl::CreateInfiniteFilledPile();
}
scoped_refptr<Tile> CreateTile() {
return tile_manager_->CreateTile(picture_pile_.get(),
settings_.default_tile_size,
gfx::Rect(),
- gfx::Rect(),
1.0,
0,
0,
- Tile::USE_LCD_TEXT);
+ 0);
+ }
+ void ReleaseTiles(std::vector<scoped_refptr<Tile> >* tiles) {
+ for (std::vector<scoped_refptr<Tile> >::iterator it = tiles->begin();
+ it != tiles->end();
+ it++) {
+ Tile* tile = it->get();
+ tile->SetPriority(ACTIVE_TREE, TilePriority());
+ tile->SetPriority(PENDING_TREE, TilePriority());
+ }
}
private:
LayerTreeSettings settings_;
FakeOutputSurfaceClient output_surface_client_;
scoped_ptr<FakeOutputSurface> output_surface_;
+ scoped_ptr<SharedBitmapManager> shared_bitmap_manager_;
scoped_ptr<ResourceProvider> resource_provider_;
+ scoped_ptr<ResourcePool> resource_pool_;
FakeTileManagerClient tile_manager_client_;
scoped_ptr<FakeTileManager> tile_manager_;
scoped_refptr<FakePicturePileImpl> picture_pile_;
TEST_F(PrioritizedTileSetTest, NonEmptyIterator) {
PrioritizedTileSet set;
scoped_refptr<Tile> tile = CreateTile();
- set.InsertTile(tile, NOW_BIN);
+ set.InsertTile(tile.get(), NOW_BIN);
PrioritizedTileSet::Iterator it(&set, true);
EXPECT_TRUE(it);
tile->SetPriority(ACTIVE_TREE, priorities[priority]);
tile->SetPriority(PENDING_TREE, priorities[priority]);
tiles.push_back(tile);
- set.InsertTile(tile, NOW_AND_READY_TO_DRAW_BIN);
+ set.InsertTile(tile.get(), NOW_AND_READY_TO_DRAW_BIN);
}
}
++i;
}
EXPECT_EQ(20, i);
+
+ ReleaseTiles(&tiles);
}
TEST_F(PrioritizedTileSetTest, NowBin) {
tile->SetPriority(ACTIVE_TREE, priorities[priority]);
tile->SetPriority(PENDING_TREE, priorities[priority]);
tiles.push_back(tile);
- set.InsertTile(tile, NOW_BIN);
+ set.InsertTile(tile.get(), NOW_BIN);
}
}
++i;
}
EXPECT_EQ(20, i);
+
+ ReleaseTiles(&tiles);
}
TEST_F(PrioritizedTileSetTest, SoonBin) {
tile->SetPriority(ACTIVE_TREE, priorities[priority]);
tile->SetPriority(PENDING_TREE, priorities[priority]);
tiles.push_back(tile);
- set.InsertTile(tile, SOON_BIN);
+ set.InsertTile(tile.get(), SOON_BIN);
}
}
++i;
}
EXPECT_EQ(20, i);
+
+ ReleaseTiles(&tiles);
}
TEST_F(PrioritizedTileSetTest, SoonBinNoPriority) {
tile->SetPriority(ACTIVE_TREE, priorities[priority]);
tile->SetPriority(PENDING_TREE, priorities[priority]);
tiles.push_back(tile);
- set.InsertTile(tile, SOON_BIN);
+ set.InsertTile(tile.get(), SOON_BIN);
}
}
++i;
}
EXPECT_EQ(20, i);
+
+ ReleaseTiles(&tiles);
}
TEST_F(PrioritizedTileSetTest, EventuallyAndActiveBin) {
tile->SetPriority(ACTIVE_TREE, priorities[priority]);
tile->SetPriority(PENDING_TREE, priorities[priority]);
tiles.push_back(tile);
- set.InsertTile(tile, EVENTUALLY_AND_ACTIVE_BIN);
+ set.InsertTile(tile.get(), EVENTUALLY_AND_ACTIVE_BIN);
}
}
++i;
}
EXPECT_EQ(20, i);
+
+ ReleaseTiles(&tiles);
}
TEST_F(PrioritizedTileSetTest, EventuallyBin) {
tile->SetPriority(ACTIVE_TREE, priorities[priority]);
tile->SetPriority(PENDING_TREE, priorities[priority]);
tiles.push_back(tile);
- set.InsertTile(tile, EVENTUALLY_BIN);
+ set.InsertTile(tile.get(), EVENTUALLY_BIN);
}
}
++i;
}
EXPECT_EQ(20, i);
+
+ ReleaseTiles(&tiles);
}
TEST_F(PrioritizedTileSetTest, AtLastAndActiveBin) {
tile->SetPriority(ACTIVE_TREE, priorities[priority]);
tile->SetPriority(PENDING_TREE, priorities[priority]);
tiles.push_back(tile);
- set.InsertTile(tile, AT_LAST_AND_ACTIVE_BIN);
+ set.InsertTile(tile.get(), AT_LAST_AND_ACTIVE_BIN);
}
}
++i;
}
EXPECT_EQ(20, i);
+
+ ReleaseTiles(&tiles);
}
TEST_F(PrioritizedTileSetTest, AtLastBin) {
tile->SetPriority(ACTIVE_TREE, priorities[priority]);
tile->SetPriority(PENDING_TREE, priorities[priority]);
tiles.push_back(tile);
- set.InsertTile(tile, AT_LAST_BIN);
+ set.InsertTile(tile.get(), AT_LAST_BIN);
}
}
++i;
}
EXPECT_EQ(20, i);
+
+ ReleaseTiles(&tiles);
}
TEST_F(PrioritizedTileSetTest, TilesForEachBin) {
scoped_refptr<Tile> at_last_and_active_bin = CreateTile();
PrioritizedTileSet set;
- set.InsertTile(soon_bin, SOON_BIN);
- set.InsertTile(at_last_and_active_bin, AT_LAST_AND_ACTIVE_BIN);
- set.InsertTile(eventually_bin, EVENTUALLY_BIN);
- set.InsertTile(now_bin, NOW_BIN);
- set.InsertTile(eventually_and_active_bin, EVENTUALLY_AND_ACTIVE_BIN);
- set.InsertTile(at_last_bin, AT_LAST_BIN);
- set.InsertTile(now_and_ready_to_draw_bin, NOW_AND_READY_TO_DRAW_BIN);
+ set.InsertTile(soon_bin.get(), SOON_BIN);
+ set.InsertTile(at_last_and_active_bin.get(), AT_LAST_AND_ACTIVE_BIN);
+ set.InsertTile(eventually_bin.get(), EVENTUALLY_BIN);
+ set.InsertTile(now_bin.get(), NOW_BIN);
+ set.InsertTile(eventually_and_active_bin.get(), EVENTUALLY_AND_ACTIVE_BIN);
+ set.InsertTile(at_last_bin.get(), AT_LAST_BIN);
+ set.InsertTile(now_and_ready_to_draw_bin.get(), NOW_AND_READY_TO_DRAW_BIN);
// Tiles should appear in order.
PrioritizedTileSet::Iterator it(&set, true);
at_last_bins.push_back(tile);
at_last_and_active_bins.push_back(tile);
- set.InsertTile(tile, NOW_AND_READY_TO_DRAW_BIN);
- set.InsertTile(tile, NOW_BIN);
- set.InsertTile(tile, SOON_BIN);
- set.InsertTile(tile, EVENTUALLY_AND_ACTIVE_BIN);
- set.InsertTile(tile, EVENTUALLY_BIN);
- set.InsertTile(tile, AT_LAST_BIN);
- set.InsertTile(tile, AT_LAST_AND_ACTIVE_BIN);
+ set.InsertTile(tile.get(), NOW_AND_READY_TO_DRAW_BIN);
+ set.InsertTile(tile.get(), NOW_BIN);
+ set.InsertTile(tile.get(), SOON_BIN);
+ set.InsertTile(tile.get(), EVENTUALLY_AND_ACTIVE_BIN);
+ set.InsertTile(tile.get(), EVENTUALLY_BIN);
+ set.InsertTile(tile.get(), AT_LAST_BIN);
+ set.InsertTile(tile.get(), AT_LAST_AND_ACTIVE_BIN);
}
}
for (vector_it = now_and_ready_to_draw_bins.begin();
vector_it != now_and_ready_to_draw_bins.end();
++vector_it) {
- EXPECT_TRUE(*vector_it == *it);
+ EXPECT_TRUE(vector_it->get() == *it);
++it;
}
// Now bins are sorted.
std::sort(now_bins.begin(), now_bins.end(), BinComparator());
for (vector_it = now_bins.begin(); vector_it != now_bins.end(); ++vector_it) {
- EXPECT_TRUE(*vector_it == *it);
+ EXPECT_TRUE(vector_it->get() == *it);
++it;
}
std::sort(soon_bins.begin(), soon_bins.end(), BinComparator());
for (vector_it = soon_bins.begin(); vector_it != soon_bins.end();
++vector_it) {
- EXPECT_TRUE(*vector_it == *it);
+ EXPECT_TRUE(vector_it->get() == *it);
++it;
}
for (vector_it = eventually_and_active_bins.begin();
vector_it != eventually_and_active_bins.end();
++vector_it) {
- EXPECT_TRUE(*vector_it == *it);
+ EXPECT_TRUE(vector_it->get() == *it);
++it;
}
std::sort(eventually_bins.begin(), eventually_bins.end(), BinComparator());
for (vector_it = eventually_bins.begin(); vector_it != eventually_bins.end();
++vector_it) {
- EXPECT_TRUE(*vector_it == *it);
+ EXPECT_TRUE(vector_it->get() == *it);
++it;
}
for (vector_it = at_last_and_active_bins.begin();
vector_it != at_last_and_active_bins.end();
++vector_it) {
- EXPECT_TRUE(*vector_it == *it);
+ EXPECT_TRUE(vector_it->get() == *it);
++it;
}
std::sort(at_last_bins.begin(), at_last_bins.end(), BinComparator());
for (vector_it = at_last_bins.begin(); vector_it != at_last_bins.end();
++vector_it) {
- EXPECT_TRUE(*vector_it == *it);
+ EXPECT_TRUE(vector_it->get() == *it);
++it;
}
EXPECT_FALSE(it);
+
+ ReleaseTiles(&now_and_ready_to_draw_bins);
+ ReleaseTiles(&now_bins);
+ ReleaseTiles(&soon_bins);
+ ReleaseTiles(&eventually_and_active_bins);
+ ReleaseTiles(&eventually_bins);
+ ReleaseTiles(&at_last_bins);
+ ReleaseTiles(&at_last_and_active_bins);
}
TEST_F(PrioritizedTileSetTest, ManyTilesForEachBinDisablePriority) {
at_last_bins.push_back(tile);
at_last_and_active_bins.push_back(tile);
- set.InsertTile(tile, NOW_AND_READY_TO_DRAW_BIN);
- set.InsertTile(tile, NOW_BIN);
- set.InsertTile(tile, SOON_BIN);
- set.InsertTile(tile, EVENTUALLY_AND_ACTIVE_BIN);
- set.InsertTile(tile, EVENTUALLY_BIN);
- set.InsertTile(tile, AT_LAST_BIN);
- set.InsertTile(tile, AT_LAST_AND_ACTIVE_BIN);
+ set.InsertTile(tile.get(), NOW_AND_READY_TO_DRAW_BIN);
+ set.InsertTile(tile.get(), NOW_BIN);
+ set.InsertTile(tile.get(), SOON_BIN);
+ set.InsertTile(tile.get(), EVENTUALLY_AND_ACTIVE_BIN);
+ set.InsertTile(tile.get(), EVENTUALLY_BIN);
+ set.InsertTile(tile.get(), AT_LAST_BIN);
+ set.InsertTile(tile.get(), AT_LAST_AND_ACTIVE_BIN);
}
}
for (vector_it = now_and_ready_to_draw_bins.begin();
vector_it != now_and_ready_to_draw_bins.end();
++vector_it) {
- EXPECT_TRUE(*vector_it == *it);
+ EXPECT_TRUE(vector_it->get() == *it);
++it;
}
// Now bins are sorted.
std::sort(now_bins.begin(), now_bins.end(), BinComparator());
for (vector_it = now_bins.begin(); vector_it != now_bins.end(); ++vector_it) {
- EXPECT_TRUE(*vector_it == *it);
+ EXPECT_TRUE(vector_it->get() == *it);
++it;
}
std::sort(soon_bins.begin(), soon_bins.end(), BinComparator());
for (vector_it = soon_bins.begin(); vector_it != soon_bins.end();
++vector_it) {
- EXPECT_TRUE(*vector_it == *it);
+ EXPECT_TRUE(vector_it->get() == *it);
++it;
}
for (vector_it = eventually_and_active_bins.begin();
vector_it != eventually_and_active_bins.end();
++vector_it) {
- EXPECT_TRUE(*vector_it == *it);
+ EXPECT_TRUE(vector_it->get() == *it);
++it;
}
// Eventually bins are not sorted.
for (vector_it = eventually_bins.begin(); vector_it != eventually_bins.end();
++vector_it) {
- EXPECT_TRUE(*vector_it == *it);
+ EXPECT_TRUE(vector_it->get() == *it);
++it;
}
for (vector_it = at_last_and_active_bins.begin();
vector_it != at_last_and_active_bins.end();
++vector_it) {
- EXPECT_TRUE(*vector_it == *it);
+ EXPECT_TRUE(vector_it->get() == *it);
++it;
}
// At last bins are not sorted.
for (vector_it = at_last_bins.begin(); vector_it != at_last_bins.end();
++vector_it) {
- EXPECT_TRUE(*vector_it == *it);
+ EXPECT_TRUE(vector_it->get() == *it);
++it;
}
EXPECT_FALSE(it);
+
+ ReleaseTiles(&now_and_ready_to_draw_bins);
+ ReleaseTiles(&now_bins);
+ ReleaseTiles(&soon_bins);
+ ReleaseTiles(&eventually_and_active_bins);
+ ReleaseTiles(&eventually_bins);
+ ReleaseTiles(&at_last_bins);
+ ReleaseTiles(&at_last_and_active_bins);
}
TEST_F(PrioritizedTileSetTest, TilesForFirstAndLastBins) {
scoped_refptr<Tile> at_last_bin = CreateTile();
PrioritizedTileSet set;
- set.InsertTile(at_last_bin, AT_LAST_BIN);
- set.InsertTile(now_and_ready_to_draw_bin, NOW_AND_READY_TO_DRAW_BIN);
+ set.InsertTile(at_last_bin.get(), AT_LAST_BIN);
+ set.InsertTile(now_and_ready_to_draw_bin.get(), NOW_AND_READY_TO_DRAW_BIN);
// Only two tiles should appear and they should appear in order.
PrioritizedTileSet::Iterator it(&set, true);
scoped_refptr<Tile> at_last_bin = CreateTile();
PrioritizedTileSet set;
- set.InsertTile(soon_bin, SOON_BIN);
- set.InsertTile(eventually_bin, EVENTUALLY_BIN);
- set.InsertTile(now_bin, NOW_BIN);
- set.InsertTile(at_last_bin, AT_LAST_BIN);
- set.InsertTile(now_and_ready_to_draw_bin, NOW_AND_READY_TO_DRAW_BIN);
+ set.InsertTile(soon_bin.get(), SOON_BIN);
+ set.InsertTile(eventually_bin.get(), EVENTUALLY_BIN);
+ set.InsertTile(now_bin.get(), NOW_BIN);
+ set.InsertTile(at_last_bin.get(), AT_LAST_BIN);
+ set.InsertTile(now_and_ready_to_draw_bin.get(), NOW_AND_READY_TO_DRAW_BIN);
// Tiles should appear in order.
PrioritizedTileSet::Iterator it(&set, true);