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(LayerTreeImpl* tree_impl,
15 scoped_refptr<PicturePileImpl> pile)
16 : PictureLayerImpl(tree_impl, id),
17 append_quads_count_(0),
18 did_become_active_call_count_(0),
19 has_valid_tile_priorities_(false),
20 use_set_valid_tile_priorities_flag_(false),
21 release_resources_count_(0) {
23 SetBounds(pile_->tiling_size());
24 SetContentBounds(pile_->tiling_size());
27 FakePictureLayerImpl::FakePictureLayerImpl(LayerTreeImpl* tree_impl,
29 scoped_refptr<PicturePileImpl> pile,
30 const gfx::Size& layer_bounds)
31 : PictureLayerImpl(tree_impl, id),
32 append_quads_count_(0),
33 did_become_active_call_count_(0),
34 has_valid_tile_priorities_(false),
35 use_set_valid_tile_priorities_flag_(false),
36 release_resources_count_(0) {
38 SetBounds(layer_bounds);
39 SetContentBounds(layer_bounds);
42 FakePictureLayerImpl::FakePictureLayerImpl(LayerTreeImpl* tree_impl, int id)
43 : PictureLayerImpl(tree_impl, id),
44 append_quads_count_(0),
45 did_become_active_call_count_(0),
46 has_valid_tile_priorities_(false),
47 use_set_valid_tile_priorities_flag_(false),
48 release_resources_count_(0) {
51 scoped_ptr<LayerImpl> FakePictureLayerImpl::CreateLayerImpl(
52 LayerTreeImpl* tree_impl) {
53 return make_scoped_ptr(new FakePictureLayerImpl(tree_impl, id()));
56 void FakePictureLayerImpl::AppendQuads(
57 RenderPass* render_pass,
58 const Occlusion& occlusion_in_content_space,
59 AppendQuadsData* append_quads_data) {
60 PictureLayerImpl::AppendQuads(
61 render_pass, occlusion_in_content_space, append_quads_data);
62 ++append_quads_count_;
65 gfx::Size FakePictureLayerImpl::CalculateTileSize(
66 const gfx::Size& content_bounds) const {
67 if (fixed_tile_size_.IsEmpty()) {
68 return PictureLayerImpl::CalculateTileSize(content_bounds);
71 return fixed_tile_size_;
74 PictureLayerTiling* FakePictureLayerImpl::HighResTiling() const {
75 PictureLayerTiling* result = NULL;
76 for (size_t i = 0; i < tilings_->num_tilings(); ++i) {
77 PictureLayerTiling* tiling = tilings_->tiling_at(i);
78 if (tiling->resolution() == HIGH_RESOLUTION) {
79 // There should be only one high res tiling.
87 PictureLayerTiling* FakePictureLayerImpl::LowResTiling() const {
88 PictureLayerTiling* result = NULL;
89 for (size_t i = 0; i < tilings_->num_tilings(); ++i) {
90 PictureLayerTiling* tiling = tilings_->tiling_at(i);
91 if (tiling->resolution() == LOW_RESOLUTION) {
92 // There should be only one low res tiling.
100 void FakePictureLayerImpl::SetPile(scoped_refptr<PicturePileImpl> pile) {
103 for (size_t i = 0; i < num_tilings(); ++i) {
104 tilings()->tiling_at(i)->UpdateTilesToCurrentPile(Region(),
105 pile_->tiling_size());
110 void FakePictureLayerImpl::SetAllTilesVisible() {
112 layer_tree_impl()->IsActiveTree() ? ACTIVE_TREE : PENDING_TREE;
114 for (size_t tiling_idx = 0; tiling_idx < tilings_->num_tilings();
116 PictureLayerTiling* tiling = tilings_->tiling_at(tiling_idx);
117 std::vector<Tile*> tiles = tiling->AllTilesForTesting();
118 for (size_t tile_idx = 0; tile_idx < tiles.size(); ++tile_idx) {
119 Tile* tile = tiles[tile_idx];
120 TilePriority priority;
121 priority.resolution = HIGH_RESOLUTION;
122 priority.priority_bin = TilePriority::NOW;
123 priority.distance_to_visible = 0.f;
124 tile->SetPriority(tree, priority);
129 void FakePictureLayerImpl::ResetAllTilesPriorities() {
130 for (size_t tiling_idx = 0; tiling_idx < tilings_->num_tilings();
132 PictureLayerTiling* tiling = tilings_->tiling_at(tiling_idx);
133 std::vector<Tile*> tiles = tiling->AllTilesForTesting();
134 for (size_t tile_idx = 0; tile_idx < tiles.size(); ++tile_idx) {
135 Tile* tile = tiles[tile_idx];
136 tile->SetPriority(ACTIVE_TREE, TilePriority());
137 tile->SetPriority(PENDING_TREE, TilePriority());
142 void FakePictureLayerImpl::SetAllTilesReady() {
143 for (size_t tiling_idx = 0; tiling_idx < tilings_->num_tilings();
145 PictureLayerTiling* tiling = tilings_->tiling_at(tiling_idx);
146 SetAllTilesReadyInTiling(tiling);
150 void FakePictureLayerImpl::SetAllTilesReadyInTiling(
151 PictureLayerTiling* tiling) {
152 std::vector<Tile*> tiles = tiling->AllTilesForTesting();
153 for (size_t tile_idx = 0; tile_idx < tiles.size(); ++tile_idx) {
154 Tile* tile = tiles[tile_idx];
159 void FakePictureLayerImpl::SetTileReady(Tile* tile) {
160 ManagedTileState& state = tile->managed_state();
161 state.draw_info.SetSolidColorForTesting(true);
162 DCHECK(tile->IsReadyToDraw());
165 void FakePictureLayerImpl::CreateDefaultTilingsAndTiles() {
166 layer_tree_impl()->UpdateDrawProperties();
168 if (CanHaveTilings()) {
169 DCHECK_EQ(tilings()->num_tilings(),
170 layer_tree_impl()->settings().create_low_res_tiling ? 2u : 1u);
171 DCHECK_EQ(tilings()->tiling_at(0)->resolution(), HIGH_RESOLUTION);
172 HighResTiling()->CreateAllTilesForTesting();
173 if (layer_tree_impl()->settings().create_low_res_tiling) {
174 DCHECK_EQ(tilings()->tiling_at(1)->resolution(), LOW_RESOLUTION);
175 LowResTiling()->CreateAllTilesForTesting();
178 DCHECK_EQ(tilings()->num_tilings(), 0u);
182 void FakePictureLayerImpl::DidBecomeActive() {
183 PictureLayerImpl::DidBecomeActive();
184 ++did_become_active_call_count_;
187 bool FakePictureLayerImpl::HasValidTilePriorities() const {
188 return use_set_valid_tile_priorities_flag_
189 ? has_valid_tile_priorities_
190 : PictureLayerImpl::HasValidTilePriorities();
193 void FakePictureLayerImpl::ReleaseResources() {
194 PictureLayerImpl::ReleaseResources();
195 ++release_resources_count_;