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
3 // found in the LICENSE file.
5 #include "cc/test/fake_picture_layer_impl.h"
8 #include "cc/resources/tile.h"
9 #include "cc/trees/layer_tree_impl.h"
13 FakePictureLayerImpl::FakePictureLayerImpl(
14 LayerTreeImpl* tree_impl,
16 scoped_refptr<PicturePileImpl> pile)
17 : PictureLayerImpl(tree_impl, id),
18 append_quads_count_(0) {
20 CHECK(pile->tiling_rect().origin() == gfx::Point());
21 SetBounds(pile_->tiling_rect().size());
24 FakePictureLayerImpl::FakePictureLayerImpl(LayerTreeImpl* tree_impl,
26 scoped_refptr<PicturePileImpl> pile,
27 const gfx::Size& layer_bounds)
28 : PictureLayerImpl(tree_impl, id), append_quads_count_(0) {
30 SetBounds(layer_bounds);
33 FakePictureLayerImpl::FakePictureLayerImpl(LayerTreeImpl* tree_impl, int id)
34 : PictureLayerImpl(tree_impl, id), append_quads_count_(0) {}
36 scoped_ptr<LayerImpl> FakePictureLayerImpl::CreateLayerImpl(
37 LayerTreeImpl* tree_impl) {
38 return make_scoped_ptr(
39 new FakePictureLayerImpl(tree_impl, id())).PassAs<LayerImpl>();
42 void FakePictureLayerImpl::AppendQuads(QuadSink* quad_sink,
43 AppendQuadsData* append_quads_data) {
44 PictureLayerImpl::AppendQuads(quad_sink, append_quads_data);
45 ++append_quads_count_;
48 gfx::Size FakePictureLayerImpl::CalculateTileSize(
49 const gfx::Size& content_bounds) const {
50 if (fixed_tile_size_.IsEmpty()) {
51 return PictureLayerImpl::CalculateTileSize(content_bounds);
54 return fixed_tile_size_;
57 PictureLayerTiling* FakePictureLayerImpl::HighResTiling() const {
58 PictureLayerTiling* result = NULL;
59 for (size_t i = 0; i < tilings_->num_tilings(); ++i) {
60 PictureLayerTiling* tiling = tilings_->tiling_at(i);
61 if (tiling->resolution() == HIGH_RESOLUTION) {
62 // There should be only one high res tiling.
70 PictureLayerTiling* FakePictureLayerImpl::LowResTiling() const {
71 PictureLayerTiling* result = NULL;
72 for (size_t i = 0; i < tilings_->num_tilings(); ++i) {
73 PictureLayerTiling* tiling = tilings_->tiling_at(i);
74 if (tiling->resolution() == LOW_RESOLUTION) {
75 // There should be only one low res tiling.
83 void FakePictureLayerImpl::SetAllTilesVisible() {
85 layer_tree_impl()->IsActiveTree() ? ACTIVE_TREE : PENDING_TREE;
87 for (size_t tiling_idx = 0; tiling_idx < tilings_->num_tilings();
89 PictureLayerTiling* tiling = tilings_->tiling_at(tiling_idx);
90 std::vector<Tile*> tiles = tiling->AllTilesForTesting();
91 for (size_t tile_idx = 0; tile_idx < tiles.size(); ++tile_idx) {
92 Tile* tile = tiles[tile_idx];
93 TilePriority priority;
94 priority.resolution = HIGH_RESOLUTION;
95 priority.priority_bin = TilePriority::NOW;
96 priority.distance_to_visible = 0.f;
97 tile->SetPriority(tree, priority);
102 void FakePictureLayerImpl::ResetAllTilesPriorities() {
103 for (size_t tiling_idx = 0; tiling_idx < tilings_->num_tilings();
105 PictureLayerTiling* tiling = tilings_->tiling_at(tiling_idx);
106 std::vector<Tile*> tiles = tiling->AllTilesForTesting();
107 for (size_t tile_idx = 0; tile_idx < tiles.size(); ++tile_idx) {
108 Tile* tile = tiles[tile_idx];
109 tile->SetPriority(ACTIVE_TREE, TilePriority());
110 tile->SetPriority(PENDING_TREE, TilePriority());
115 void FakePictureLayerImpl::SetAllTilesReady() {
116 for (size_t tiling_idx = 0; tiling_idx < tilings_->num_tilings();
118 PictureLayerTiling* tiling = tilings_->tiling_at(tiling_idx);
119 SetAllTilesReadyInTiling(tiling);
123 void FakePictureLayerImpl::SetAllTilesReadyInTiling(
124 PictureLayerTiling* tiling) {
125 std::vector<Tile*> tiles = tiling->AllTilesForTesting();
126 for (size_t tile_idx = 0; tile_idx < tiles.size(); ++tile_idx) {
127 Tile* tile = tiles[tile_idx];
128 ManagedTileState& state = tile->managed_state();
129 for (size_t mode_idx = 0; mode_idx < NUM_RASTER_MODES; ++mode_idx)
130 state.tile_versions[mode_idx].SetSolidColorForTesting(true);
131 DCHECK(tile->IsReadyToDraw());
135 void FakePictureLayerImpl::CreateDefaultTilingsAndTiles() {
136 layer_tree_impl()->UpdateDrawProperties();
138 if (CanHaveTilings()) {
139 DCHECK_EQ(tilings()->num_tilings(), 2u);
140 DCHECK_EQ(tilings()->tiling_at(0)->resolution(), HIGH_RESOLUTION);
141 DCHECK_EQ(tilings()->tiling_at(1)->resolution(), LOW_RESOLUTION);
142 HighResTiling()->CreateAllTilesForTesting();
143 LowResTiling()->CreateAllTilesForTesting();
145 DCHECK_EQ(tilings()->num_tilings(), 0u);