fake_picture_layer_impl.cc revision 6e8cce623b6e4fe0c9e4af605d675dd9d0338c38
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.
4
5#include "cc/test/fake_picture_layer_impl.h"
6
7#include <vector>
8#include "cc/resources/tile.h"
9#include "cc/trees/layer_tree_impl.h"
10
11namespace cc {
12
13FakePictureLayerImpl::FakePictureLayerImpl(LayerTreeImpl* tree_impl,
14                                           int id,
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  pile_ = pile;
22  SetBounds(pile_->tiling_size());
23  SetContentBounds(pile_->tiling_size());
24}
25
26FakePictureLayerImpl::FakePictureLayerImpl(LayerTreeImpl* tree_impl,
27                                           int id,
28                                           scoped_refptr<PicturePileImpl> pile,
29                                           const gfx::Size& layer_bounds)
30    : PictureLayerImpl(tree_impl, id),
31      append_quads_count_(0),
32      did_become_active_call_count_(0),
33      has_valid_tile_priorities_(false),
34      use_set_valid_tile_priorities_flag_(false) {
35  pile_ = pile;
36  SetBounds(layer_bounds);
37  SetContentBounds(layer_bounds);
38}
39
40FakePictureLayerImpl::FakePictureLayerImpl(LayerTreeImpl* tree_impl, int id)
41    : PictureLayerImpl(tree_impl, id),
42      append_quads_count_(0),
43      did_become_active_call_count_(0),
44      has_valid_tile_priorities_(false),
45      use_set_valid_tile_priorities_flag_(false) {
46}
47
48scoped_ptr<LayerImpl> FakePictureLayerImpl::CreateLayerImpl(
49    LayerTreeImpl* tree_impl) {
50  return make_scoped_ptr(
51      new FakePictureLayerImpl(tree_impl, id())).PassAs<LayerImpl>();
52}
53
54void FakePictureLayerImpl::AppendQuads(
55    RenderPass* render_pass,
56    const OcclusionTracker<LayerImpl>& occlusion_tracker,
57    AppendQuadsData* append_quads_data) {
58  PictureLayerImpl::AppendQuads(
59      render_pass, occlusion_tracker, append_quads_data);
60  ++append_quads_count_;
61}
62
63gfx::Size FakePictureLayerImpl::CalculateTileSize(
64    const gfx::Size& content_bounds) const {
65  if (fixed_tile_size_.IsEmpty()) {
66    return PictureLayerImpl::CalculateTileSize(content_bounds);
67  }
68
69  return fixed_tile_size_;
70}
71
72PictureLayerTiling* FakePictureLayerImpl::HighResTiling() const {
73  PictureLayerTiling* result = NULL;
74  for (size_t i = 0; i < tilings_->num_tilings(); ++i) {
75    PictureLayerTiling* tiling = tilings_->tiling_at(i);
76    if (tiling->resolution() == HIGH_RESOLUTION) {
77      // There should be only one high res tiling.
78      CHECK(!result);
79      result = tiling;
80    }
81  }
82  return result;
83}
84
85PictureLayerTiling* FakePictureLayerImpl::LowResTiling() const {
86  PictureLayerTiling* result = NULL;
87  for (size_t i = 0; i < tilings_->num_tilings(); ++i) {
88    PictureLayerTiling* tiling = tilings_->tiling_at(i);
89    if (tiling->resolution() == LOW_RESOLUTION) {
90      // There should be only one low res tiling.
91      CHECK(!result);
92      result = tiling;
93    }
94  }
95  return result;
96}
97
98void FakePictureLayerImpl::SetAllTilesVisible() {
99  WhichTree tree =
100      layer_tree_impl()->IsActiveTree() ? ACTIVE_TREE : PENDING_TREE;
101
102  for (size_t tiling_idx = 0; tiling_idx < tilings_->num_tilings();
103       ++tiling_idx) {
104    PictureLayerTiling* tiling = tilings_->tiling_at(tiling_idx);
105    std::vector<Tile*> tiles = tiling->AllTilesForTesting();
106    for (size_t tile_idx = 0; tile_idx < tiles.size(); ++tile_idx) {
107      Tile* tile = tiles[tile_idx];
108      TilePriority priority;
109      priority.resolution = HIGH_RESOLUTION;
110      priority.priority_bin = TilePriority::NOW;
111      priority.distance_to_visible = 0.f;
112      tile->SetPriority(tree, priority);
113    }
114  }
115}
116
117void FakePictureLayerImpl::ResetAllTilesPriorities() {
118  for (size_t tiling_idx = 0; tiling_idx < tilings_->num_tilings();
119       ++tiling_idx) {
120    PictureLayerTiling* tiling = tilings_->tiling_at(tiling_idx);
121    std::vector<Tile*> tiles = tiling->AllTilesForTesting();
122    for (size_t tile_idx = 0; tile_idx < tiles.size(); ++tile_idx) {
123      Tile* tile = tiles[tile_idx];
124      tile->SetPriority(ACTIVE_TREE, TilePriority());
125      tile->SetPriority(PENDING_TREE, TilePriority());
126    }
127  }
128}
129
130void FakePictureLayerImpl::SetAllTilesReady() {
131  for (size_t tiling_idx = 0; tiling_idx < tilings_->num_tilings();
132       ++tiling_idx) {
133    PictureLayerTiling* tiling = tilings_->tiling_at(tiling_idx);
134    SetAllTilesReadyInTiling(tiling);
135  }
136}
137
138void FakePictureLayerImpl::SetAllTilesReadyInTiling(
139    PictureLayerTiling* tiling) {
140  std::vector<Tile*> tiles = tiling->AllTilesForTesting();
141  for (size_t tile_idx = 0; tile_idx < tiles.size(); ++tile_idx) {
142    Tile* tile = tiles[tile_idx];
143    ManagedTileState& state = tile->managed_state();
144    for (size_t mode_idx = 0; mode_idx < NUM_RASTER_MODES; ++mode_idx)
145      state.tile_versions[mode_idx].SetSolidColorForTesting(true);
146    DCHECK(tile->IsReadyToDraw());
147  }
148}
149
150void FakePictureLayerImpl::CreateDefaultTilingsAndTiles() {
151  layer_tree_impl()->UpdateDrawProperties();
152
153  if (CanHaveTilings()) {
154    DCHECK_EQ(tilings()->num_tilings(),
155              layer_tree_impl()->settings().create_low_res_tiling ? 2u : 1u);
156    DCHECK_EQ(tilings()->tiling_at(0)->resolution(), HIGH_RESOLUTION);
157    HighResTiling()->CreateAllTilesForTesting();
158    if (layer_tree_impl()->settings().create_low_res_tiling) {
159      DCHECK_EQ(tilings()->tiling_at(1)->resolution(), LOW_RESOLUTION);
160      LowResTiling()->CreateAllTilesForTesting();
161    }
162  } else {
163    DCHECK_EQ(tilings()->num_tilings(), 0u);
164  }
165}
166
167void FakePictureLayerImpl::DidBecomeActive() {
168  PictureLayerImpl::DidBecomeActive();
169  ++did_become_active_call_count_;
170}
171
172bool FakePictureLayerImpl::HasValidTilePriorities() const {
173  return use_set_valid_tile_priorities_flag_
174             ? has_valid_tile_priorities_
175             : PictureLayerImpl::HasValidTilePriorities();
176}
177
178}  // namespace cc
179