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

Side by Side Diff: cc/ipc/struct_traits_unittest.cc

Issue 2092843002: Implement CompositorFrame Struct Traits (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed dcheng's comments Created 4 years, 5 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
« no previous file with comments | « cc/ipc/compositor_frame_struct_traits.cc ('k') | cc/ipc/traits_test_service.mojom » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/message_loop/message_loop.h" 5 #include "base/message_loop/message_loop.h"
6 #include "cc/input/selection.h" 6 #include "cc/input/selection.h"
7 #include "cc/ipc/traits_test_service.mojom.h" 7 #include "cc/ipc/traits_test_service.mojom.h"
8 #include "cc/quads/debug_border_draw_quad.h" 8 #include "cc/quads/debug_border_draw_quad.h"
9 #include "cc/quads/render_pass.h" 9 #include "cc/quads/render_pass.h"
10 #include "cc/quads/render_pass_draw_quad.h" 10 #include "cc/quads/render_pass_draw_quad.h"
(...skipping 20 matching lines...) Expand all
31 return traits_test_bindings_.CreateInterfacePtrAndBind(this); 31 return traits_test_bindings_.CreateInterfacePtrAndBind(this);
32 } 32 }
33 33
34 private: 34 private:
35 // TraitsTestService: 35 // TraitsTestService:
36 void EchoBeginFrameArgs(const BeginFrameArgs& b, 36 void EchoBeginFrameArgs(const BeginFrameArgs& b,
37 const EchoBeginFrameArgsCallback& callback) override { 37 const EchoBeginFrameArgsCallback& callback) override {
38 callback.Run(b); 38 callback.Run(b);
39 } 39 }
40 40
41 void EchoCompositorFrame(
42 CompositorFrame c,
43 const EchoCompositorFrameCallback& callback) override {
44 callback.Run(std::move(c));
45 }
46
41 void EchoCompositorFrameMetadata( 47 void EchoCompositorFrameMetadata(
42 const CompositorFrameMetadata& c, 48 const CompositorFrameMetadata& c,
43 const EchoCompositorFrameMetadataCallback& callback) override { 49 const EchoCompositorFrameMetadataCallback& callback) override {
44 callback.Run(c); 50 callback.Run(c);
45 } 51 }
46 52
47 void EchoFilterOperation( 53 void EchoFilterOperation(
48 const FilterOperation& f, 54 const FilterOperation& f,
49 const EchoFilterOperationCallback& callback) override { 55 const EchoFilterOperationCallback& callback) override {
50 callback.Run(f); 56 callback.Run(f);
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
126 mojom::TraitsTestServicePtr proxy = GetTraitsTestProxy(); 132 mojom::TraitsTestServicePtr proxy = GetTraitsTestProxy();
127 BeginFrameArgs output; 133 BeginFrameArgs output;
128 proxy->EchoBeginFrameArgs(input, &output); 134 proxy->EchoBeginFrameArgs(input, &output);
129 EXPECT_EQ(frame_time, output.frame_time); 135 EXPECT_EQ(frame_time, output.frame_time);
130 EXPECT_EQ(deadline, output.deadline); 136 EXPECT_EQ(deadline, output.deadline);
131 EXPECT_EQ(interval, output.interval); 137 EXPECT_EQ(interval, output.interval);
132 EXPECT_EQ(type, output.type); 138 EXPECT_EQ(type, output.type);
133 EXPECT_EQ(on_critical_path, output.on_critical_path); 139 EXPECT_EQ(on_critical_path, output.on_critical_path);
134 } 140 }
135 141
142 // Note that this is a fairly trivial test of CompositorFrame serialization as
143 // most of the heavy lifting has already been done by CompositorFrameMetadata,
144 // RenderPass, and QuadListBasic unit tests.
145 TEST_F(StructTraitsTest, CompositorFrame) {
146 std::unique_ptr<RenderPass> render_pass = RenderPass::Create();
147
148 // SharedQuadState.
149 const gfx::Transform sqs_quad_to_target_transform(
150 1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, 8.f, 9.f, 10.f, 11.f, 12.f, 13.f, 14.f,
151 15.f, 16.f);
152 const gfx::Size sqs_layer_bounds(1234, 5678);
153 const gfx::Rect sqs_visible_layer_rect(12, 34, 56, 78);
154 const gfx::Rect sqs_clip_rect(123, 456, 789, 101112);
155 const bool sqs_is_clipped = true;
156 const float sqs_opacity = 0.9f;
157 const SkXfermode::Mode sqs_blend_mode = SkXfermode::kSrcOver_Mode;
158 const int sqs_sorting_context_id = 1337;
159 SharedQuadState* sqs = render_pass->CreateAndAppendSharedQuadState();
160 sqs->SetAll(sqs_quad_to_target_transform, sqs_layer_bounds,
161 sqs_visible_layer_rect, sqs_clip_rect, sqs_is_clipped,
162 sqs_opacity, sqs_blend_mode, sqs_sorting_context_id);
163
164 // DebugBorderDrawQuad.
165 const gfx::Rect rect1(1234, 4321, 1357, 7531);
166 const SkColor color1 = SK_ColorRED;
167 const int32_t width1 = 1337;
168 DebugBorderDrawQuad* debug_quad =
169 render_pass->CreateAndAppendDrawQuad<DebugBorderDrawQuad>();
170 debug_quad->SetNew(sqs, rect1, rect1, color1, width1);
171
172 // SolidColorDrawQuad.
173 const gfx::Rect rect2(2468, 8642, 4321, 1234);
174 const uint32_t color2 = 0xffffffff;
175 const bool force_anti_aliasing_off = true;
176 SolidColorDrawQuad* solid_quad =
177 render_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>();
178 solid_quad->SetNew(sqs, rect2, rect2, color2, force_anti_aliasing_off);
179
180 // TransferableResource constants.
181 const uint32_t tr_id = 1337;
182 const ResourceFormat tr_format = ALPHA_8;
183 const uint32_t tr_filter = 1234;
184 const gfx::Size tr_size(1234, 5678);
185 TransferableResource resource;
186 resource.id = tr_id;
187 resource.format = tr_format;
188 resource.filter = tr_filter;
189 resource.size = tr_size;
190
191 // CompositorFrameMetadata constants.
192 const float device_scale_factor = 2.6f;
193 const gfx::Vector2dF root_scroll_offset(1234.5f, 6789.1f);
194 const float page_scale_factor = 1337.5f;
195 const gfx::SizeF scrollable_viewport_size(1337.7f, 1234.5f);
196
197 CompositorFrame input;
198 input.metadata.device_scale_factor = device_scale_factor;
199 input.metadata.root_scroll_offset = root_scroll_offset;
200 input.metadata.page_scale_factor = page_scale_factor;
201 input.metadata.scrollable_viewport_size = scrollable_viewport_size;
202 input.delegated_frame_data.reset(new DelegatedFrameData);
203 input.delegated_frame_data->render_pass_list.push_back(
204 std::move(render_pass));
205 input.delegated_frame_data->resource_list.push_back(resource);
206
207 mojom::TraitsTestServicePtr proxy = GetTraitsTestProxy();
208 CompositorFrame output;
209 proxy->EchoCompositorFrame(std::move(input), &output);
210
211 EXPECT_EQ(device_scale_factor, output.metadata.device_scale_factor);
212 EXPECT_EQ(root_scroll_offset, output.metadata.root_scroll_offset);
213 EXPECT_EQ(page_scale_factor, output.metadata.page_scale_factor);
214 EXPECT_EQ(scrollable_viewport_size, output.metadata.scrollable_viewport_size);
215
216 EXPECT_NE(nullptr, output.delegated_frame_data);
217 ASSERT_EQ(1u, output.delegated_frame_data->resource_list.size());
218 TransferableResource out_resource =
219 output.delegated_frame_data->resource_list[0];
220 EXPECT_EQ(tr_id, out_resource.id);
221 EXPECT_EQ(tr_format, out_resource.format);
222 EXPECT_EQ(tr_filter, out_resource.filter);
223 EXPECT_EQ(tr_size, out_resource.size);
224
225 EXPECT_EQ(1u, output.delegated_frame_data->render_pass_list.size());
226 const RenderPass* out_render_pass =
227 output.delegated_frame_data->render_pass_list[0].get();
228 ASSERT_EQ(2u, out_render_pass->quad_list.size());
229 ASSERT_EQ(1u, out_render_pass->shared_quad_state_list.size());
230
231 const SharedQuadState* out_sqs =
232 out_render_pass->shared_quad_state_list.ElementAt(0);
233 EXPECT_EQ(sqs_quad_to_target_transform, out_sqs->quad_to_target_transform);
234 EXPECT_EQ(sqs_layer_bounds, out_sqs->quad_layer_bounds);
235 EXPECT_EQ(sqs_visible_layer_rect, out_sqs->visible_quad_layer_rect);
236 EXPECT_EQ(sqs_clip_rect, out_sqs->clip_rect);
237 EXPECT_EQ(sqs_is_clipped, out_sqs->is_clipped);
238 EXPECT_EQ(sqs_opacity, out_sqs->opacity);
239 EXPECT_EQ(sqs_blend_mode, out_sqs->blend_mode);
240 EXPECT_EQ(sqs_sorting_context_id, out_sqs->sorting_context_id);
241
242 const DebugBorderDrawQuad* out_debug_border_draw_quad =
243 DebugBorderDrawQuad::MaterialCast(
244 out_render_pass->quad_list.ElementAt(0));
245 EXPECT_EQ(rect1, out_debug_border_draw_quad->rect);
246 EXPECT_EQ(rect1, out_debug_border_draw_quad->visible_rect);
247 EXPECT_EQ(color1, out_debug_border_draw_quad->color);
248 EXPECT_EQ(width1, out_debug_border_draw_quad->width);
249
250 const SolidColorDrawQuad* out_solid_color_draw_quad =
251 SolidColorDrawQuad::MaterialCast(out_render_pass->quad_list.ElementAt(1));
252 EXPECT_EQ(rect2, out_solid_color_draw_quad->rect);
253 EXPECT_EQ(rect2, out_solid_color_draw_quad->visible_rect);
254 EXPECT_EQ(color2, out_solid_color_draw_quad->color);
255 EXPECT_EQ(force_anti_aliasing_off,
256 out_solid_color_draw_quad->force_anti_aliasing_off);
257 }
258
136 TEST_F(StructTraitsTest, CompositorFrameMetadata) { 259 TEST_F(StructTraitsTest, CompositorFrameMetadata) {
137 const float device_scale_factor = 2.6f; 260 const float device_scale_factor = 2.6f;
138 const gfx::Vector2dF root_scroll_offset(1234.5f, 6789.1f); 261 const gfx::Vector2dF root_scroll_offset(1234.5f, 6789.1f);
139 const float page_scale_factor = 1337.5f; 262 const float page_scale_factor = 1337.5f;
140 const gfx::SizeF scrollable_viewport_size(1337.7f, 1234.5f); 263 const gfx::SizeF scrollable_viewport_size(1337.7f, 1234.5f);
141 const gfx::SizeF root_layer_size(1234.5f, 5432.1f); 264 const gfx::SizeF root_layer_size(1234.5f, 5432.1f);
142 const float min_page_scale_factor = 3.5f; 265 const float min_page_scale_factor = 3.5f;
143 const float max_page_scale_factor = 4.6f; 266 const float max_page_scale_factor = 4.6f;
144 const bool root_overflow_x_hidden = true; 267 const bool root_overflow_x_hidden = true;
145 const bool root_overflow_y_hidden = true; 268 const bool root_overflow_y_hidden = true;
(...skipping 581 matching lines...) Expand 10 before | Expand all | Expand 10 after
727 EXPECT_EQ(y_plane_resource_id, out_quad->y_plane_resource_id()); 850 EXPECT_EQ(y_plane_resource_id, out_quad->y_plane_resource_id());
728 EXPECT_EQ(u_plane_resource_id, out_quad->u_plane_resource_id()); 851 EXPECT_EQ(u_plane_resource_id, out_quad->u_plane_resource_id());
729 EXPECT_EQ(v_plane_resource_id, out_quad->v_plane_resource_id()); 852 EXPECT_EQ(v_plane_resource_id, out_quad->v_plane_resource_id());
730 EXPECT_EQ(a_plane_resource_id, out_quad->a_plane_resource_id()); 853 EXPECT_EQ(a_plane_resource_id, out_quad->a_plane_resource_id());
731 EXPECT_EQ(color_space, out_quad->color_space); 854 EXPECT_EQ(color_space, out_quad->color_space);
732 EXPECT_EQ(resource_offset, out_quad->resource_offset); 855 EXPECT_EQ(resource_offset, out_quad->resource_offset);
733 EXPECT_EQ(resource_multiplier, out_quad->resource_multiplier); 856 EXPECT_EQ(resource_multiplier, out_quad->resource_multiplier);
734 } 857 }
735 858
736 } // namespace cc 859 } // namespace cc
OLDNEW
« no previous file with comments | « cc/ipc/compositor_frame_struct_traits.cc ('k') | cc/ipc/traits_test_service.mojom » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698