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(
54 new FakePictureLayerImpl(tree_impl, id())).PassAs<LayerImpl>();
57 void FakePictureLayerImpl::AppendQuads(
58 RenderPass* render_pass,
59 const OcclusionTracker<LayerImpl>& occlusion_tracker,
60 AppendQuadsData* append_quads_data) {
61 PictureLayerImpl::AppendQuads(
62 render_pass, occlusion_tracker, append_quads_data);
63 ++append_quads_count_;
66 gfx::Size FakePictureLayerImpl::CalculateTileSize(
67 const gfx::Size& content_bounds) const {
68 if (fixed_tile_size_.IsEmpty()) {
69 return PictureLayerImpl::CalculateTileSize(content_bounds);
72 return fixed_tile_size_;
75 PictureLayerTiling* FakePictureLayerImpl::HighResTiling() const {
76 PictureLayerTiling* result = NULL;
77 for (size_t i = 0; i < tilings_->num_tilings(); ++i) {
78 PictureLayerTiling* tiling = tilings_->tiling_at(i);
79 if (tiling->resolution() == HIGH_RESOLUTION) {
80 // There should be only one high res tiling.
88 PictureLayerTiling* FakePictureLayerImpl::LowResTiling() const {
89 PictureLayerTiling* result = NULL;
90 for (size_t i = 0; i < tilings_->num_tilings(); ++i) {
91 PictureLayerTiling* tiling = tilings_->tiling_at(i);
92 if (tiling->resolution() == LOW_RESOLUTION) {
93 // There should be only one low res tiling.
101 void FakePictureLayerImpl::SetAllTilesVisible() {
103 layer_tree_impl()->IsActiveTree() ? ACTIVE_TREE : PENDING_TREE;
105 for (size_t tiling_idx = 0; tiling_idx < tilings_->num_tilings();
107 PictureLayerTiling* tiling = tilings_->tiling_at(tiling_idx);
108 std::vector<Tile*> tiles = tiling->AllTilesForTesting();
109 for (size_t tile_idx = 0; tile_idx < tiles.size(); ++tile_idx) {
110 Tile* tile = tiles[tile_idx];
111 TilePriority priority;
112 priority.resolution = HIGH_RESOLUTION;
113 priority.priority_bin = TilePriority::NOW;
114 priority.distance_to_visible = 0.f;
115 tile->SetPriority(tree, priority);
120 void FakePictureLayerImpl::ResetAllTilesPriorities() {
121 for (size_t tiling_idx = 0; tiling_idx < tilings_->num_tilings();
123 PictureLayerTiling* tiling = tilings_->tiling_at(tiling_idx);
124 std::vector<Tile*> tiles = tiling->AllTilesForTesting();
125 for (size_t tile_idx = 0; tile_idx < tiles.size(); ++tile_idx) {
126 Tile* tile = tiles[tile_idx];
127 tile->SetPriority(ACTIVE_TREE, TilePriority());
128 tile->SetPriority(PENDING_TREE, TilePriority());
133 void FakePictureLayerImpl::SetAllTilesReady() {
134 for (size_t tiling_idx = 0; tiling_idx < tilings_->num_tilings();
136 PictureLayerTiling* tiling = tilings_->tiling_at(tiling_idx);
137 SetAllTilesReadyInTiling(tiling);
141 void FakePictureLayerImpl::SetAllTilesReadyInTiling(
142 PictureLayerTiling* tiling) {
143 std::vector<Tile*> tiles = tiling->AllTilesForTesting();
144 for (size_t tile_idx = 0; tile_idx < tiles.size(); ++tile_idx) {
145 Tile* tile = tiles[tile_idx];
150 void FakePictureLayerImpl::SetTileReady(Tile* tile) {
151 ManagedTileState& state = tile->managed_state();
152 for (size_t mode_idx = 0; mode_idx < NUM_RASTER_MODES; ++mode_idx)
153 state.tile_versions[mode_idx].SetSolidColorForTesting(true);
154 DCHECK(tile->IsReadyToDraw());
157 void FakePictureLayerImpl::CreateDefaultTilingsAndTiles() {
158 layer_tree_impl()->UpdateDrawProperties();
160 if (CanHaveTilings()) {
161 DCHECK_EQ(tilings()->num_tilings(),
162 layer_tree_impl()->settings().create_low_res_tiling ? 2u : 1u);
163 DCHECK_EQ(tilings()->tiling_at(0)->resolution(), HIGH_RESOLUTION);
164 HighResTiling()->CreateAllTilesForTesting();
165 if (layer_tree_impl()->settings().create_low_res_tiling) {
166 DCHECK_EQ(tilings()->tiling_at(1)->resolution(), LOW_RESOLUTION);
167 LowResTiling()->CreateAllTilesForTesting();
170 DCHECK_EQ(tilings()->num_tilings(), 0u);
174 void FakePictureLayerImpl::DidBecomeActive() {
175 PictureLayerImpl::DidBecomeActive();
176 ++did_become_active_call_count_;
179 bool FakePictureLayerImpl::HasValidTilePriorities() const {
180 return use_set_valid_tile_priorities_flag_
181 ? has_valid_tile_priorities_
182 : PictureLayerImpl::HasValidTilePriorities();
185 void FakePictureLayerImpl::ReleaseResources() {
186 PictureLayerImpl::ReleaseResources();
187 ++release_resources_count_;