[NaCl SDK]: use standard __BEGIN_DECLS macros in sys/select.h
[chromium-blink-merge.git] / cc / test / tiled_layer_test_common.cc
blob81975ca12374e44b86735b549e59331c264a635c
1 // Copyright 2012 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/tiled_layer_test_common.h"
7 namespace cc {
9 FakeLayerUpdater::Resource::Resource(FakeLayerUpdater* layer,
10 scoped_ptr<PrioritizedResource> texture)
11 : LayerUpdater::Resource(texture.Pass()), layer_(layer) {
12 bitmap_.allocN32Pixels(10, 10);
15 FakeLayerUpdater::Resource::~Resource() {}
17 void FakeLayerUpdater::Resource::Update(ResourceUpdateQueue* queue,
18 const gfx::Rect& source_rect,
19 const gfx::Vector2d& dest_offset,
20 bool partial_update) {
21 const gfx::Rect kRect(0, 0, 10, 10);
22 ResourceUpdate upload = ResourceUpdate::Create(
23 texture(), &bitmap_, kRect, kRect, gfx::Vector2d());
24 if (partial_update)
25 queue->AppendPartialUpload(upload);
26 else
27 queue->AppendFullUpload(upload);
29 layer_->Update();
32 FakeLayerUpdater::FakeLayerUpdater() : prepare_count_(0), update_count_(0) {}
34 FakeLayerUpdater::~FakeLayerUpdater() {}
36 void FakeLayerUpdater::PrepareToUpdate(const gfx::Rect& content_rect,
37 const gfx::Size& tile_size,
38 float contents_width_scale,
39 float contents_height_scale,
40 gfx::Rect* resulting_opaque_rect) {
41 prepare_count_++;
42 last_update_rect_ = content_rect;
43 if (!rect_to_invalidate_.IsEmpty()) {
44 layer_->InvalidateContentRect(rect_to_invalidate_);
45 rect_to_invalidate_ = gfx::Rect();
46 layer_ = NULL;
48 *resulting_opaque_rect = opaque_paint_rect_;
51 void FakeLayerUpdater::SetRectToInvalidate(const gfx::Rect& rect,
52 FakeTiledLayer* layer) {
53 rect_to_invalidate_ = rect;
54 layer_ = layer;
57 scoped_ptr<LayerUpdater::Resource> FakeLayerUpdater::CreateResource(
58 PrioritizedResourceManager* manager) {
59 return scoped_ptr<LayerUpdater::Resource>(
60 new Resource(this, PrioritizedResource::Create(manager)));
63 FakeTiledLayerImpl::FakeTiledLayerImpl(LayerTreeImpl* tree_impl, int id)
64 : TiledLayerImpl(tree_impl, id) {}
66 FakeTiledLayerImpl::~FakeTiledLayerImpl() {}
68 FakeTiledLayer::FakeTiledLayer(PrioritizedResourceManager* resource_manager)
69 : TiledLayer(),
70 fake_updater_(make_scoped_refptr(new FakeLayerUpdater)),
71 resource_manager_(resource_manager) {
72 SetTileSize(tile_size());
73 SetTextureFormat(RGBA_8888);
74 SetBorderTexelOption(LayerTilingData::NO_BORDER_TEXELS);
75 // So that we don't get false positives if any of these
76 // tests expect to return false from DrawsContent() for other reasons.
77 SetIsDrawable(true);
80 FakeTiledLayerWithScaledBounds::FakeTiledLayerWithScaledBounds(
81 PrioritizedResourceManager* resource_manager)
82 : FakeTiledLayer(resource_manager) {}
84 FakeTiledLayerWithScaledBounds::~FakeTiledLayerWithScaledBounds() {}
86 FakeTiledLayer::~FakeTiledLayer() {}
88 void FakeTiledLayer::SetNeedsDisplayRect(const gfx::RectF& rect) {
89 last_needs_display_rect_ = rect;
90 TiledLayer::SetNeedsDisplayRect(rect);
93 void FakeTiledLayer::SetTexturePriorities(
94 const PriorityCalculator& calculator) {
95 // Ensure there is always a target render surface available. If none has been
96 // set (the layer is an orphan for the test), then just set a surface on
97 // itself.
98 bool missing_target_render_surface = !render_target();
100 if (missing_target_render_surface)
101 CreateRenderSurface();
103 TiledLayer::SetTexturePriorities(calculator);
105 if (missing_target_render_surface) {
106 ClearRenderSurface();
107 draw_properties().render_target = 0;
111 PrioritizedResourceManager* FakeTiledLayer::ResourceManager() {
112 return resource_manager_;
115 void FakeTiledLayer::UpdateContentsScale(float ideal_contents_scale) {
116 CalculateContentsScale(ideal_contents_scale,
117 &draw_properties().contents_scale_x,
118 &draw_properties().contents_scale_y,
119 &draw_properties().content_bounds);
122 void FakeTiledLayer::ResetNumDependentsNeedPushProperties() {
123 size_t num = 0;
124 if (mask_layer()) {
125 if (mask_layer()->needs_push_properties() ||
126 mask_layer()->descendant_needs_push_properties())
127 ++num;
129 if (replica_layer()) {
130 if (replica_layer()->needs_push_properties() ||
131 replica_layer()->descendant_needs_push_properties())
132 ++num;
134 for (size_t i = 0; i < children().size(); ++i) {
135 if (children()[i]->needs_push_properties() ||
136 children()[i]->descendant_needs_push_properties())
137 ++num;
139 num_dependents_need_push_properties_ = num;
142 LayerUpdater* FakeTiledLayer::Updater() const {
143 return fake_updater_.get();
146 void FakeTiledLayerWithScaledBounds::SetContentBounds(
147 const gfx::Size& content_bounds) {
148 forced_content_bounds_ = content_bounds;
149 draw_properties().content_bounds = forced_content_bounds_;
152 void FakeTiledLayerWithScaledBounds::CalculateContentsScale(
153 float ideal_contents_scale,
154 float* contents_scale_x,
155 float* contents_scale_y,
156 gfx::Size* content_bounds) {
157 *contents_scale_x =
158 static_cast<float>(forced_content_bounds_.width()) / bounds().width();
159 *contents_scale_y =
160 static_cast<float>(forced_content_bounds_.height()) / bounds().height();
161 *content_bounds = forced_content_bounds_;
164 } // namespace cc