| Index: cc/ipc/struct_traits_unittest.cc
|
| diff --git a/cc/ipc/struct_traits_unittest.cc b/cc/ipc/struct_traits_unittest.cc
|
| index 07e8e2b4105a06f8681162534bf1c422d84f63bb..0b5d5dddb301b0c47448bfaa33e2727599f5f3aa 100644
|
| --- a/cc/ipc/struct_traits_unittest.cc
|
| +++ b/cc/ipc/struct_traits_unittest.cc
|
| @@ -38,6 +38,12 @@ class StructTraitsTest : public testing::Test, public mojom::TraitsTestService {
|
| callback.Run(b);
|
| }
|
|
|
| + void EchoCompositorFrame(
|
| + CompositorFrame c,
|
| + const EchoCompositorFrameCallback& callback) override {
|
| + callback.Run(std::move(c));
|
| + }
|
| +
|
| void EchoCompositorFrameMetadata(
|
| const CompositorFrameMetadata& c,
|
| const EchoCompositorFrameMetadataCallback& callback) override {
|
| @@ -133,6 +139,123 @@ TEST_F(StructTraitsTest, BeginFrameArgs) {
|
| EXPECT_EQ(on_critical_path, output.on_critical_path);
|
| }
|
|
|
| +// Note that this is a fairly trivial test of CompositorFrame serialization as
|
| +// most of the heavy lifting has already been done by CompositorFrameMetadata,
|
| +// RenderPass, and QuadListBasic unit tests.
|
| +TEST_F(StructTraitsTest, CompositorFrame) {
|
| + std::unique_ptr<RenderPass> render_pass = RenderPass::Create();
|
| +
|
| + // SharedQuadState.
|
| + const gfx::Transform sqs_quad_to_target_transform(
|
| + 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,
|
| + 15.f, 16.f);
|
| + const gfx::Size sqs_layer_bounds(1234, 5678);
|
| + const gfx::Rect sqs_visible_layer_rect(12, 34, 56, 78);
|
| + const gfx::Rect sqs_clip_rect(123, 456, 789, 101112);
|
| + const bool sqs_is_clipped = true;
|
| + const float sqs_opacity = 0.9f;
|
| + const SkXfermode::Mode sqs_blend_mode = SkXfermode::kSrcOver_Mode;
|
| + const int sqs_sorting_context_id = 1337;
|
| + SharedQuadState* sqs = render_pass->CreateAndAppendSharedQuadState();
|
| + sqs->SetAll(sqs_quad_to_target_transform, sqs_layer_bounds,
|
| + sqs_visible_layer_rect, sqs_clip_rect, sqs_is_clipped,
|
| + sqs_opacity, sqs_blend_mode, sqs_sorting_context_id);
|
| +
|
| + // DebugBorderDrawQuad.
|
| + const gfx::Rect rect1(1234, 4321, 1357, 7531);
|
| + const SkColor color1 = SK_ColorRED;
|
| + const int32_t width1 = 1337;
|
| + DebugBorderDrawQuad* debug_quad =
|
| + render_pass->CreateAndAppendDrawQuad<DebugBorderDrawQuad>();
|
| + debug_quad->SetNew(sqs, rect1, rect1, color1, width1);
|
| +
|
| + // SolidColorDrawQuad.
|
| + const gfx::Rect rect2(2468, 8642, 4321, 1234);
|
| + const uint32_t color2 = 0xffffffff;
|
| + const bool force_anti_aliasing_off = true;
|
| + SolidColorDrawQuad* solid_quad =
|
| + render_pass->CreateAndAppendDrawQuad<SolidColorDrawQuad>();
|
| + solid_quad->SetNew(sqs, rect2, rect2, color2, force_anti_aliasing_off);
|
| +
|
| + // TransferableResource constants.
|
| + const uint32_t tr_id = 1337;
|
| + const ResourceFormat tr_format = ALPHA_8;
|
| + const uint32_t tr_filter = 1234;
|
| + const gfx::Size tr_size(1234, 5678);
|
| + TransferableResource resource;
|
| + resource.id = tr_id;
|
| + resource.format = tr_format;
|
| + resource.filter = tr_filter;
|
| + resource.size = tr_size;
|
| +
|
| + // CompositorFrameMetadata constants.
|
| + const float device_scale_factor = 2.6f;
|
| + const gfx::Vector2dF root_scroll_offset(1234.5f, 6789.1f);
|
| + const float page_scale_factor = 1337.5f;
|
| + const gfx::SizeF scrollable_viewport_size(1337.7f, 1234.5f);
|
| +
|
| + CompositorFrame input;
|
| + input.metadata.device_scale_factor = device_scale_factor;
|
| + input.metadata.root_scroll_offset = root_scroll_offset;
|
| + input.metadata.page_scale_factor = page_scale_factor;
|
| + input.metadata.scrollable_viewport_size = scrollable_viewport_size;
|
| + input.delegated_frame_data.reset(new DelegatedFrameData);
|
| + input.delegated_frame_data->render_pass_list.push_back(
|
| + std::move(render_pass));
|
| + input.delegated_frame_data->resource_list.push_back(resource);
|
| +
|
| + mojom::TraitsTestServicePtr proxy = GetTraitsTestProxy();
|
| + CompositorFrame output;
|
| + proxy->EchoCompositorFrame(std::move(input), &output);
|
| +
|
| + EXPECT_EQ(device_scale_factor, output.metadata.device_scale_factor);
|
| + EXPECT_EQ(root_scroll_offset, output.metadata.root_scroll_offset);
|
| + EXPECT_EQ(page_scale_factor, output.metadata.page_scale_factor);
|
| + EXPECT_EQ(scrollable_viewport_size, output.metadata.scrollable_viewport_size);
|
| +
|
| + EXPECT_NE(nullptr, output.delegated_frame_data);
|
| + ASSERT_EQ(1u, output.delegated_frame_data->resource_list.size());
|
| + TransferableResource out_resource =
|
| + output.delegated_frame_data->resource_list[0];
|
| + EXPECT_EQ(tr_id, out_resource.id);
|
| + EXPECT_EQ(tr_format, out_resource.format);
|
| + EXPECT_EQ(tr_filter, out_resource.filter);
|
| + EXPECT_EQ(tr_size, out_resource.size);
|
| +
|
| + EXPECT_EQ(1u, output.delegated_frame_data->render_pass_list.size());
|
| + const RenderPass* out_render_pass =
|
| + output.delegated_frame_data->render_pass_list[0].get();
|
| + ASSERT_EQ(2u, out_render_pass->quad_list.size());
|
| + ASSERT_EQ(1u, out_render_pass->shared_quad_state_list.size());
|
| +
|
| + const SharedQuadState* out_sqs =
|
| + out_render_pass->shared_quad_state_list.ElementAt(0);
|
| + EXPECT_EQ(sqs_quad_to_target_transform, out_sqs->quad_to_target_transform);
|
| + EXPECT_EQ(sqs_layer_bounds, out_sqs->quad_layer_bounds);
|
| + EXPECT_EQ(sqs_visible_layer_rect, out_sqs->visible_quad_layer_rect);
|
| + EXPECT_EQ(sqs_clip_rect, out_sqs->clip_rect);
|
| + EXPECT_EQ(sqs_is_clipped, out_sqs->is_clipped);
|
| + EXPECT_EQ(sqs_opacity, out_sqs->opacity);
|
| + EXPECT_EQ(sqs_blend_mode, out_sqs->blend_mode);
|
| + EXPECT_EQ(sqs_sorting_context_id, out_sqs->sorting_context_id);
|
| +
|
| + const DebugBorderDrawQuad* out_debug_border_draw_quad =
|
| + DebugBorderDrawQuad::MaterialCast(
|
| + out_render_pass->quad_list.ElementAt(0));
|
| + EXPECT_EQ(rect1, out_debug_border_draw_quad->rect);
|
| + EXPECT_EQ(rect1, out_debug_border_draw_quad->visible_rect);
|
| + EXPECT_EQ(color1, out_debug_border_draw_quad->color);
|
| + EXPECT_EQ(width1, out_debug_border_draw_quad->width);
|
| +
|
| + const SolidColorDrawQuad* out_solid_color_draw_quad =
|
| + SolidColorDrawQuad::MaterialCast(out_render_pass->quad_list.ElementAt(1));
|
| + EXPECT_EQ(rect2, out_solid_color_draw_quad->rect);
|
| + EXPECT_EQ(rect2, out_solid_color_draw_quad->visible_rect);
|
| + EXPECT_EQ(color2, out_solid_color_draw_quad->color);
|
| + EXPECT_EQ(force_anti_aliasing_off,
|
| + out_solid_color_draw_quad->force_anti_aliasing_off);
|
| +}
|
| +
|
| TEST_F(StructTraitsTest, CompositorFrameMetadata) {
|
| const float device_scale_factor = 2.6f;
|
| const gfx::Vector2dF root_scroll_offset(1234.5f, 6789.1f);
|
|
|