Chromium Code Reviews| Index: cc/ipc/struct_traits_unittest.cc |
| diff --git a/cc/ipc/struct_traits_unittest.cc b/cc/ipc/struct_traits_unittest.cc |
| index f958558e2b86acfb3f5e6a2979a5e6a70af45752..b3b7b3df82cbcc084fead4b7ad63dbe8cd1776e9 100644 |
| --- a/cc/ipc/struct_traits_unittest.cc |
| +++ b/cc/ipc/struct_traits_unittest.cc |
| @@ -11,6 +11,7 @@ |
| #include "cc/quads/render_pass_id.h" |
| #include "cc/quads/solid_color_draw_quad.h" |
| #include "cc/quads/surface_draw_quad.h" |
| +#include "cc/quads/texture_draw_quad.h" |
| #include "cc/quads/yuv_video_draw_quad.h" |
| #include "mojo/public/cpp/bindings/binding_set.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| @@ -60,6 +61,11 @@ class StructTraitsTest : public testing::Test, public mojom::TraitsTestService { |
| callback.Run(q); |
| } |
| + void EchoRenderPass(const std::unique_ptr<RenderPass>& r, |
| + const EchoRenderPassCallback& callback) override { |
| + callback.Run(r); |
| + } |
| + |
| void EchoRenderPassId(const RenderPassId& r, |
| const EchoRenderPassIdCallback& callback) override { |
| callback.Run(r); |
| @@ -283,14 +289,17 @@ TEST_F(StructTraitsTest, QuadListBasic) { |
| const DrawQuad::Material material2 = DrawQuad::SOLID_COLOR; |
| const DrawQuad::Material material3 = DrawQuad::SURFACE_CONTENT; |
| const DrawQuad::Material material4 = DrawQuad::RENDER_PASS; |
| + const DrawQuad::Material material5 = DrawQuad::TEXTURE_CONTENT; |
| const gfx::Rect rect1(1234, 4321, 1357, 7531); |
| const gfx::Rect rect2(2468, 8642, 4321, 1234); |
| const gfx::Rect rect3(1029, 3847, 5610, 2938); |
| const gfx::Rect rect4(1234, 5678, 9101112, 13141516); |
| + const gfx::Rect rect5(123, 567, 91011, 131415); |
| const int32_t width1 = 1337; |
| const uint32_t color2 = 0xffffffff; |
| const SurfaceId surface_id(1234, 5678, 2468); |
| const RenderPassId render_pass_id(1234, 5678); |
| + const float vertex_opacity[4] = {1.f, 2.f, 3.f, 4.f}; |
| QuadList input; |
| DebugBorderDrawQuad* debug_quad = |
| @@ -316,6 +325,15 @@ TEST_F(StructTraitsTest, QuadListBasic) { |
| render_pass_quad->rect = rect4; |
| render_pass_quad->render_pass_id = render_pass_id; |
| + TextureDrawQuad* texture_draw_quad = |
| + input.AllocateAndConstruct<TextureDrawQuad>(); |
| + texture_draw_quad->material = material5; |
|
danakj
2016/06/22 00:05:09
You should be calling TextureDrawQuad::SetNew() or
Fady Samuel
2016/06/22 20:08:14
We don't serialize SharedQuadState here, and so at
|
| + texture_draw_quad->rect = rect5; |
| + texture_draw_quad->vertex_opacity[0] = vertex_opacity[0]; |
| + texture_draw_quad->vertex_opacity[1] = vertex_opacity[1]; |
| + texture_draw_quad->vertex_opacity[2] = vertex_opacity[2]; |
| + texture_draw_quad->vertex_opacity[3] = vertex_opacity[3]; |
| + |
| mojom::TraitsTestServicePtr proxy = GetTraitsTestProxy(); |
| QuadList output; |
| proxy->EchoQuadList(input, &output); |
| @@ -342,6 +360,69 @@ TEST_F(StructTraitsTest, QuadListBasic) { |
| EXPECT_EQ( |
| render_pass_id, |
| static_cast<RenderPassDrawQuad*>(output.ElementAt(3))->render_pass_id); |
| + |
| + ASSERT_EQ(material5, output.ElementAt(4)->material); |
| + EXPECT_EQ(rect5, output.ElementAt(4)->rect); |
| + EXPECT_EQ( |
| + vertex_opacity[0], |
| + static_cast<TextureDrawQuad*>(output.ElementAt(4))->vertex_opacity[0]); |
| + EXPECT_EQ( |
| + vertex_opacity[1], |
| + static_cast<TextureDrawQuad*>(output.ElementAt(4))->vertex_opacity[1]); |
| + EXPECT_EQ( |
| + vertex_opacity[2], |
| + static_cast<TextureDrawQuad*>(output.ElementAt(4))->vertex_opacity[2]); |
| + EXPECT_EQ( |
| + vertex_opacity[3], |
| + static_cast<TextureDrawQuad*>(output.ElementAt(4))->vertex_opacity[3]); |
| +} |
| + |
| +TEST_F(StructTraitsTest, RenderPass) { |
| + const RenderPassId id(3, 2); |
| + const gfx::Rect output_rect(45, 22, 120, 13); |
| + const gfx::Transform transform_to_root = |
| + gfx::Transform(1.0, 0.5, 0.5, -0.5, -1.0, 0.0); |
| + const gfx::Rect damage_rect(56, 123, 19, 43); |
| + const bool has_transparent_background = true; |
| + std::unique_ptr<RenderPass> input = RenderPass::Create(); |
| + input->SetAll(id, output_rect, damage_rect, transform_to_root, |
| + has_transparent_background); |
| + |
| + SharedQuadState* shared_state = input->CreateAndAppendSharedQuadState(); |
| + shared_state->SetAll(gfx::Transform(), gfx::Size(), gfx::Rect(), gfx::Rect(), |
|
danakj
2016/06/22 00:05:09
how about using some non-0/false stuff, its easy t
Fady Samuel
2016/06/22 20:08:14
Done.
|
| + false, 1, SkXfermode::kSrcOver_Mode, 0); |
| + |
| + SolidColorDrawQuad* color_quad = |
| + input->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); |
| + color_quad->SetNew(input->shared_quad_state_list.back(), gfx::Rect(), |
| + gfx::Rect(), SkColor(), false); |
|
danakj
2016/06/22 00:05:09
dittos
Fady Samuel
2016/06/22 20:08:14
Done.
|
| + std::unique_ptr<RenderPass> output; |
| + mojom::TraitsTestServicePtr proxy = GetTraitsTestProxy(); |
| + proxy->EchoRenderPass(input, &output); |
| + |
| + EXPECT_EQ(input->quad_list.size(), output->quad_list.size()); |
| + EXPECT_EQ(input->shared_quad_state_list.size(), |
| + output->shared_quad_state_list.size()); |
| + EXPECT_EQ(id, output->id); |
| + EXPECT_EQ(output_rect, output->output_rect); |
| + EXPECT_EQ(damage_rect, output->damage_rect); |
| + EXPECT_EQ(transform_to_root, output->transform_to_root_target); |
| + EXPECT_EQ(has_transparent_background, output->has_transparent_background); |
| + |
| + SharedQuadState* out_sqs = output->shared_quad_state_list.ElementAt(0); |
| + EXPECT_EQ(shared_state->quad_to_target_transform, |
| + out_sqs->quad_to_target_transform); |
| + EXPECT_EQ(shared_state->quad_layer_bounds, out_sqs->quad_layer_bounds); |
| + EXPECT_EQ(shared_state->visible_quad_layer_rect, |
| + out_sqs->visible_quad_layer_rect); |
| + EXPECT_EQ(shared_state->clip_rect, out_sqs->clip_rect); |
| + EXPECT_EQ(shared_state->is_clipped, out_sqs->is_clipped); |
| + EXPECT_EQ(shared_state->opacity, out_sqs->opacity); |
| + EXPECT_EQ(shared_state->blend_mode, out_sqs->blend_mode); |
| + EXPECT_EQ(shared_state->sorting_context_id, out_sqs->sorting_context_id); |
| + |
| + DrawQuad* out_draw_quad = output->quad_list.ElementAt(0); |
|
danakj
2016/06/22 00:05:09
Can you test with multiple quads in 1 SQS, and mul
Fady Samuel
2016/06/22 20:08:14
Done.
|
| + EXPECT_EQ(out_draw_quad->shared_quad_state, out_sqs); |
| } |
| TEST_F(StructTraitsTest, RenderPassId) { |