OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |