Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(236)

Side by Side Diff: cc/test/layer_tree_host_common_test.cc

Issue 2183403002: cc: Move data to LayerTree from LayerTreeHost. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@layer_tree_change
Patch Set: .. Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2014 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/layer_tree_host_common_test.h"
6
7 #include <stddef.h>
8
9 #include "cc/layers/layer.h"
10 #include "cc/layers/layer_impl.h"
11 #include "cc/test/fake_layer_tree_host.h"
12 #include "cc/trees/draw_property_utils.h"
13 #include "cc/trees/layer_tree_host_common.h"
14 #include "cc/trees/property_tree_builder.h"
15
16 namespace cc {
17 LayerTreeHostCommonTestBase::LayerTreeHostCommonTestBase(
18 const LayerTreeSettings& settings)
19 : LayerTestCommon::LayerImplTest(settings) {}
20
21 LayerTreeHostCommonTestBase::~LayerTreeHostCommonTestBase() {}
22
23 void LayerTreeHostCommonTestBase::SetLayerPropertiesForTesting(
24 Layer* layer,
25 const gfx::Transform& transform,
26 const gfx::Point3F& transform_origin,
27 const gfx::PointF& position,
28 const gfx::Size& bounds,
29 bool flatten_transform,
30 bool is_3d_sorted) {
31 SetLayerPropertiesForTestingInternal(layer, transform, position, bounds,
32 is_3d_sorted);
33 layer->SetTransformOrigin(transform_origin);
34 layer->SetShouldFlattenTransform(flatten_transform);
35 }
36
37 void LayerTreeHostCommonTestBase::SetLayerPropertiesForTesting(
38 LayerImpl* layer,
39 const gfx::Transform& transform,
40 const gfx::Point3F& transform_origin,
41 const gfx::PointF& position,
42 const gfx::Size& bounds,
43 bool flatten_transform,
44 bool is_3d_sorted) {
45 SetLayerPropertiesForTestingInternal(layer, transform, position, bounds,
46 is_3d_sorted);
47 layer->test_properties()->transform_origin = transform_origin;
48 layer->test_properties()->should_flatten_transform = flatten_transform;
49 }
50
51 void LayerTreeHostCommonTestBase::SetLayerPropertiesForTesting(
52 LayerImpl* layer,
53 const gfx::Transform& transform,
54 const gfx::Point3F& transform_origin,
55 const gfx::PointF& position,
56 const gfx::Size& bounds,
57 bool flatten_transform,
58 bool is_3d_sorted,
59 bool create_render_surface) {
60 SetLayerPropertiesForTestingInternal(layer, transform, position, bounds,
61 is_3d_sorted);
62 layer->test_properties()->transform_origin = transform_origin;
63 layer->test_properties()->should_flatten_transform = flatten_transform;
64 if (create_render_surface) {
65 layer->test_properties()->force_render_surface = true;
66 }
67 }
68
69 void LayerTreeHostCommonTestBase::ExecuteCalculateDrawProperties(
70 Layer* root_layer,
71 float device_scale_factor,
72 float page_scale_factor,
73 Layer* page_scale_layer) {
74 PropertyTreeBuilder::PreCalculateMetaInformation(root_layer);
75
76 EXPECT_TRUE(page_scale_layer || (page_scale_factor == 1.f));
77 gfx::Transform identity_matrix;
78 gfx::Size device_viewport_size =
79 gfx::Size(root_layer->bounds().width() * device_scale_factor,
80 root_layer->bounds().height() * device_scale_factor);
81
82 // We are probably not testing what is intended if the root_layer bounds are
83 // empty.
84 DCHECK(!root_layer->bounds().IsEmpty());
85 LayerTreeHostCommon::CalcDrawPropsMainInputsForTesting inputs(
86 root_layer, device_viewport_size);
87 inputs.device_scale_factor = device_scale_factor;
88 inputs.page_scale_factor = page_scale_factor;
89 inputs.page_scale_layer = page_scale_layer;
90 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs);
91 }
92
93 void LayerTreeHostCommonTestBase::
94 ExecuteCalculateDrawPropertiesWithPropertyTrees(Layer* root_layer) {
95 DCHECK(root_layer->layer_tree_host());
96 PropertyTreeBuilder::PreCalculateMetaInformation(root_layer);
97
98 gfx::Transform identity_transform;
99
100 bool can_render_to_separate_surface = true;
101
102 Layer* page_scale_layer = root_layer->GetLayerTree()->page_scale_layer();
103 Layer* inner_viewport_scroll_layer =
104 root_layer->GetLayerTree()->inner_viewport_scroll_layer();
105 Layer* outer_viewport_scroll_layer =
106 root_layer->GetLayerTree()->outer_viewport_scroll_layer();
107 Layer* overscroll_elasticity_layer =
108 root_layer->GetLayerTree()->overscroll_elasticity_layer();
109 gfx::Vector2dF elastic_overscroll =
110 root_layer->layer_tree_host()->elastic_overscroll();
111 float page_scale_factor = 1.f;
112 float device_scale_factor = 1.f;
113 gfx::Size device_viewport_size =
114 gfx::Size(root_layer->bounds().width() * device_scale_factor,
115 root_layer->bounds().height() * device_scale_factor);
116 PropertyTrees* property_trees =
117 root_layer->layer_tree_host()->property_trees();
118 update_layer_list_.clear();
119 PropertyTreeBuilder::BuildPropertyTrees(
120 root_layer, page_scale_layer, inner_viewport_scroll_layer,
121 outer_viewport_scroll_layer, overscroll_elasticity_layer,
122 elastic_overscroll, page_scale_factor, device_scale_factor,
123 gfx::Rect(device_viewport_size), identity_transform, property_trees);
124 draw_property_utils::UpdatePropertyTrees(property_trees,
125 can_render_to_separate_surface);
126 draw_property_utils::FindLayersThatNeedUpdates(
127 root_layer->layer_tree_host(), property_trees->transform_tree,
128 property_trees->effect_tree, &update_layer_list_);
129 draw_property_utils::ComputeVisibleRectsForTesting(
130 property_trees, can_render_to_separate_surface, &update_layer_list_);
131 }
132
133 void LayerTreeHostCommonTestBase::
134 ExecuteCalculateDrawPropertiesWithPropertyTrees(LayerImpl* root_layer) {
135 DCHECK(root_layer->layer_tree_impl());
136 PropertyTreeBuilder::PreCalculateMetaInformationForTesting(root_layer);
137
138 gfx::Transform identity_transform;
139
140 bool can_render_to_separate_surface = true;
141
142 LayerImpl* page_scale_layer = nullptr;
143 LayerImpl* inner_viewport_scroll_layer =
144 root_layer->layer_tree_impl()->InnerViewportScrollLayer();
145 LayerImpl* outer_viewport_scroll_layer =
146 root_layer->layer_tree_impl()->OuterViewportScrollLayer();
147 LayerImpl* overscroll_elasticity_layer =
148 root_layer->layer_tree_impl()->OverscrollElasticityLayer();
149 gfx::Vector2dF elastic_overscroll =
150 root_layer->layer_tree_impl()->elastic_overscroll()->Current(
151 root_layer->layer_tree_impl()->IsActiveTree());
152 float page_scale_factor = 1.f;
153 float device_scale_factor = 1.f;
154 gfx::Size device_viewport_size =
155 gfx::Size(root_layer->bounds().width() * device_scale_factor,
156 root_layer->bounds().height() * device_scale_factor);
157 update_layer_list_impl_.reset(new LayerImplList);
158 root_layer->layer_tree_impl()->BuildLayerListForTesting();
159 draw_property_utils::BuildPropertyTreesAndComputeVisibleRects(
160 root_layer, page_scale_layer, inner_viewport_scroll_layer,
161 outer_viewport_scroll_layer, overscroll_elasticity_layer,
162 elastic_overscroll, page_scale_factor, device_scale_factor,
163 gfx::Rect(device_viewport_size), identity_transform,
164 can_render_to_separate_surface,
165 root_layer->layer_tree_impl()->property_trees(),
166 update_layer_list_impl_.get());
167 }
168
169 void LayerTreeHostCommonTestBase::ExecuteCalculateDrawProperties(
170 LayerImpl* root_layer,
171 float device_scale_factor,
172 float page_scale_factor,
173 LayerImpl* page_scale_layer) {
174 if (device_scale_factor !=
175 root_layer->layer_tree_impl()->device_scale_factor())
176 root_layer->layer_tree_impl()->property_trees()->needs_rebuild = true;
177
178 root_layer->layer_tree_impl()->SetDeviceScaleFactor(device_scale_factor);
179
180 EXPECT_TRUE(page_scale_layer || (page_scale_factor == 1.f));
181
182 gfx::Transform identity_matrix;
183 gfx::Size device_viewport_size =
184 gfx::Size(root_layer->bounds().width() * device_scale_factor,
185 root_layer->bounds().height() * device_scale_factor);
186
187 render_surface_layer_list_impl_.reset(new LayerImplList);
188
189 // We are probably not testing what is intended if the root_layer bounds are
190 // empty.
191 DCHECK(!root_layer->bounds().IsEmpty());
192 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs(
193 root_layer, device_viewport_size, render_surface_layer_list_impl_.get());
194 inputs.device_scale_factor = device_scale_factor;
195 inputs.page_scale_factor = page_scale_factor;
196 inputs.page_scale_layer = page_scale_layer;
197 inputs.can_adjust_raster_scales = true;
198
199 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs);
200 }
201
202 void LayerTreeHostCommonTestBase::
203 ExecuteCalculateDrawPropertiesWithoutSeparateSurfaces(
204 LayerImpl* root_layer) {
205 gfx::Transform identity_matrix;
206 gfx::Size device_viewport_size =
207 gfx::Size(root_layer->bounds().width(), root_layer->bounds().height());
208 render_surface_layer_list_impl_.reset(new LayerImplList);
209
210 DCHECK(!root_layer->bounds().IsEmpty());
211 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs(
212 root_layer, device_viewport_size, render_surface_layer_list_impl_.get());
213 inputs.can_adjust_raster_scales = true;
214 inputs.can_render_to_separate_surface = false;
215
216 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs);
217 }
218
219 bool LayerTreeHostCommonTestBase::UpdateLayerListContains(int id) const {
220 for (size_t i = 0; i < update_layer_list_.size(); ++i) {
221 if (update_layer_list_[i]->id() == id)
222 return true;
223 }
224 return false;
225 }
226
227 LayerTreeHostCommonTest::LayerTreeHostCommonTest()
228 : LayerTreeHostCommonTestBase(LayerTreeHostCommonTestSettings()) {}
229
230 LayerTreeHostCommonTest::LayerTreeHostCommonTest(
231 const LayerTreeSettings& settings)
232 : LayerTreeHostCommonTestBase(settings) {}
233
234 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698