OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "content/common/cc_messages.h" | 5 #include "content/common/cc_messages.h" |
6 | 6 |
7 #include <string.h> | 7 #include <string.h> |
8 | 8 |
| 9 #include "cc/compositor_frame.h" |
9 #include "ipc/ipc_message.h" | 10 #include "ipc/ipc_message.h" |
10 #include "testing/gtest/include/gtest/gtest.h" | 11 #include "testing/gtest/include/gtest/gtest.h" |
11 | 12 |
12 using cc::CheckerboardDrawQuad; | 13 using cc::CheckerboardDrawQuad; |
| 14 using cc::CompositorFrame; |
13 using cc::DebugBorderDrawQuad; | 15 using cc::DebugBorderDrawQuad; |
14 using cc::DrawQuad; | 16 using cc::DrawQuad; |
15 using cc::IOSurfaceDrawQuad; | 17 using cc::IOSurfaceDrawQuad; |
16 using cc::RenderPass; | 18 using cc::RenderPass; |
17 using cc::RenderPassDrawQuad; | 19 using cc::RenderPassDrawQuad; |
18 using cc::ResourceProvider; | 20 using cc::ResourceProvider; |
19 using cc::SharedQuadState; | 21 using cc::SharedQuadState; |
20 using cc::SolidColorDrawQuad; | 22 using cc::SolidColorDrawQuad; |
21 using cc::TextureDrawQuad; | 23 using cc::TextureDrawQuad; |
22 using cc::TileDrawQuad; | 24 using cc::TileDrawQuad; |
| 25 using cc::TransferableResource; |
23 using cc::StreamVideoDrawQuad; | 26 using cc::StreamVideoDrawQuad; |
24 using cc::VideoLayerImpl; | 27 using cc::VideoLayerImpl; |
25 using cc::YUVVideoDrawQuad; | 28 using cc::YUVVideoDrawQuad; |
26 using gfx::Transform; | 29 using gfx::Transform; |
27 using WebKit::WebFilterOperation; | 30 using WebKit::WebFilterOperation; |
28 using WebKit::WebFilterOperations; | 31 using WebKit::WebFilterOperations; |
29 | 32 |
| 33 namespace content { |
| 34 namespace { |
| 35 |
30 class CCMessagesTest : public testing::Test { | 36 class CCMessagesTest : public testing::Test { |
31 protected: | 37 protected: |
32 void Compare(const RenderPass* a, const RenderPass* b) { | 38 void Compare(const RenderPass* a, const RenderPass* b) { |
33 EXPECT_EQ(a->id, b->id); | 39 EXPECT_EQ(a->id, b->id); |
34 EXPECT_EQ(a->output_rect.ToString(), b->output_rect.ToString()); | 40 EXPECT_EQ(a->output_rect.ToString(), b->output_rect.ToString()); |
35 EXPECT_EQ(a->damage_rect.ToString(), b->damage_rect.ToString()); | 41 EXPECT_EQ(a->damage_rect.ToString(), b->damage_rect.ToString()); |
36 EXPECT_EQ(a->transform_to_root_target, b->transform_to_root_target); | 42 EXPECT_EQ(a->transform_to_root_target, b->transform_to_root_target); |
37 EXPECT_EQ(a->has_transparent_background, b->has_transparent_background); | 43 EXPECT_EQ(a->has_transparent_background, b->has_transparent_background); |
38 EXPECT_EQ(a->has_occlusion_from_outside_target_surface, | 44 EXPECT_EQ(a->has_occlusion_from_outside_target_surface, |
39 b->has_occlusion_from_outside_target_surface); | 45 b->has_occlusion_from_outside_target_surface); |
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
161 EXPECT_EQ(a->y_plane.resourceId, b->y_plane.resourceId); | 167 EXPECT_EQ(a->y_plane.resourceId, b->y_plane.resourceId); |
162 EXPECT_EQ(a->y_plane.size.ToString(), b->y_plane.size.ToString()); | 168 EXPECT_EQ(a->y_plane.size.ToString(), b->y_plane.size.ToString()); |
163 EXPECT_EQ(a->y_plane.format, b->y_plane.format); | 169 EXPECT_EQ(a->y_plane.format, b->y_plane.format); |
164 EXPECT_EQ(a->u_plane.resourceId, b->u_plane.resourceId); | 170 EXPECT_EQ(a->u_plane.resourceId, b->u_plane.resourceId); |
165 EXPECT_EQ(a->u_plane.size.ToString(), b->u_plane.size.ToString()); | 171 EXPECT_EQ(a->u_plane.size.ToString(), b->u_plane.size.ToString()); |
166 EXPECT_EQ(a->u_plane.format, b->u_plane.format); | 172 EXPECT_EQ(a->u_plane.format, b->u_plane.format); |
167 EXPECT_EQ(a->v_plane.resourceId, b->v_plane.resourceId); | 173 EXPECT_EQ(a->v_plane.resourceId, b->v_plane.resourceId); |
168 EXPECT_EQ(a->v_plane.size.ToString(), b->v_plane.size.ToString()); | 174 EXPECT_EQ(a->v_plane.size.ToString(), b->v_plane.size.ToString()); |
169 EXPECT_EQ(a->v_plane.format, b->v_plane.format); | 175 EXPECT_EQ(a->v_plane.format, b->v_plane.format); |
170 } | 176 } |
| 177 |
| 178 void Compare(const TransferableResource& a, const TransferableResource& b) { |
| 179 EXPECT_EQ(a.id, b.id); |
| 180 EXPECT_EQ(a.format, b.format); |
| 181 EXPECT_EQ(a.size.ToString(), b.size.ToString()); |
| 182 for (size_t i = 0; i < arraysize(a.mailbox.name); ++i) |
| 183 EXPECT_EQ(a.mailbox.name[i], b.mailbox.name[i]); |
| 184 } |
171 }; | 185 }; |
172 | 186 |
173 TEST_F(CCMessagesTest, AllQuads) { | 187 TEST_F(CCMessagesTest, AllQuads) { |
174 IPC::Message msg(1, 2, IPC::Message::PRIORITY_NORMAL); | 188 IPC::Message msg(1, 2, IPC::Message::PRIORITY_NORMAL); |
175 | 189 |
176 Transform arbitrary_matrix; | 190 Transform arbitrary_matrix; |
177 arbitrary_matrix.Scale(3, 3); | 191 arbitrary_matrix.Scale(3, 3); |
178 arbitrary_matrix.Translate(-5, 20); | 192 arbitrary_matrix.Translate(-5, 20); |
179 arbitrary_matrix.Rotate(15); | 193 arbitrary_matrix.Rotate(15); |
180 gfx::Rect arbitrary_rect1(-5, 9, 3, 15); | 194 gfx::Rect arbitrary_rect1(-5, 9, 3, 15); |
(...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
396 for (size_t i = 1; i < 7; ++i) { | 410 for (size_t i = 1; i < 7; ++i) { |
397 bool same_shared_quad_state_cmp = | 411 bool same_shared_quad_state_cmp = |
398 pass_cmp->quad_list[i]->shared_quad_state == | 412 pass_cmp->quad_list[i]->shared_quad_state == |
399 pass_cmp->quad_list[i - 1]->shared_quad_state; | 413 pass_cmp->quad_list[i - 1]->shared_quad_state; |
400 bool same_shared_quad_state_in = | 414 bool same_shared_quad_state_in = |
401 pass_in->quad_list[i]->shared_quad_state == | 415 pass_in->quad_list[i]->shared_quad_state == |
402 pass_in->quad_list[i - 1]->shared_quad_state; | 416 pass_in->quad_list[i - 1]->shared_quad_state; |
403 EXPECT_EQ(same_shared_quad_state_cmp, same_shared_quad_state_in); | 417 EXPECT_EQ(same_shared_quad_state_cmp, same_shared_quad_state_in); |
404 } | 418 } |
405 | 419 |
406 IPC::ParamTraits<RenderPass>::Write(&msg, *pass_in); | 420 CompositorFrame frame_in; |
| 421 frame_in.size = arbitrary_size1; |
| 422 frame_in.render_pass_list.append(pass_in.Pass()); |
407 | 423 |
408 scoped_ptr<RenderPass> pass_out = RenderPass::Create(); | 424 IPC::ParamTraits<CompositorFrame>::Write(&msg, frame_in); |
| 425 |
| 426 CompositorFrame frame_out; |
409 PickleIterator iter(msg); | 427 PickleIterator iter(msg); |
410 EXPECT_TRUE(IPC::ParamTraits<RenderPass>::Read(&msg, &iter, pass_out.get())); | 428 EXPECT_TRUE(IPC::ParamTraits<CompositorFrame>::Read(&msg, &iter, &frame_out)); |
| 429 |
| 430 EXPECT_EQ(arbitrary_size1, frame_out.size); |
411 | 431 |
412 // Make sure the out and cmp RenderPasses match. | 432 // Make sure the out and cmp RenderPasses match. |
| 433 scoped_ptr<RenderPass> pass_out = frame_out.render_pass_list.take(0); |
413 Compare(pass_cmp.get(), pass_out.get()); | 434 Compare(pass_cmp.get(), pass_out.get()); |
414 ASSERT_EQ(3u, pass_out->shared_quad_state_list.size()); | 435 ASSERT_EQ(3u, pass_out->shared_quad_state_list.size()); |
415 ASSERT_EQ(7u, pass_out->quad_list.size()); | 436 ASSERT_EQ(7u, pass_out->quad_list.size()); |
416 for (size_t i = 0; i < 3; ++i) { | 437 for (size_t i = 0; i < 3; ++i) { |
417 Compare(pass_cmp->shared_quad_state_list[i], | 438 Compare(pass_cmp->shared_quad_state_list[i], |
418 pass_out->shared_quad_state_list[i]); | 439 pass_out->shared_quad_state_list[i]); |
419 } | 440 } |
420 for (size_t i = 0; i < 7; ++i) | 441 for (size_t i = 0; i < 7; ++i) |
421 Compare(pass_cmp->quad_list[i], pass_out->quad_list[i]); | 442 Compare(pass_cmp->quad_list[i], pass_out->quad_list[i]); |
422 for (size_t i = 1; i < 7; ++i) { | 443 for (size_t i = 1; i < 7; ++i) { |
423 bool same_shared_quad_state_cmp = | 444 bool same_shared_quad_state_cmp = |
424 pass_cmp->quad_list[i]->shared_quad_state == | 445 pass_cmp->quad_list[i]->shared_quad_state == |
425 pass_cmp->quad_list[i - 1]->shared_quad_state; | 446 pass_cmp->quad_list[i - 1]->shared_quad_state; |
426 bool same_shared_quad_state_out = | 447 bool same_shared_quad_state_out = |
427 pass_out->quad_list[i]->shared_quad_state == | 448 pass_out->quad_list[i]->shared_quad_state == |
428 pass_out->quad_list[i - 1]->shared_quad_state; | 449 pass_out->quad_list[i - 1]->shared_quad_state; |
429 EXPECT_EQ(same_shared_quad_state_cmp, same_shared_quad_state_out); | 450 EXPECT_EQ(same_shared_quad_state_cmp, same_shared_quad_state_out); |
430 } | 451 } |
431 } | 452 } |
| 453 |
| 454 TEST_F(CCMessagesTest, Resources) { |
| 455 IPC::Message msg(1, 2, IPC::Message::PRIORITY_NORMAL); |
| 456 gfx::Size arbitrary_size(757, 1281); |
| 457 unsigned int arbitrary_uint = 71234838; |
| 458 |
| 459 GLbyte arbitrary_mailbox1[64] = { |
| 460 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, |
| 461 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, |
| 462 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, |
| 463 1, 2, 3, 4 |
| 464 }; |
| 465 |
| 466 GLbyte arbitrary_mailbox2[64] = { |
| 467 0, 9, 8, 7, 6, 5, 4, 3, 2, 1, 9, 7, 5, 3, 1, 2, 4, 6, 8, 0, |
| 468 0, 9, 8, 7, 6, 5, 4, 3, 2, 1, 9, 7, 5, 3, 1, 2, 4, 6, 8, 0, |
| 469 0, 9, 8, 7, 6, 5, 4, 3, 2, 1, 9, 7, 5, 3, 1, 2, 4, 6, 8, 0, |
| 470 0, 9, 8, 7 |
| 471 }; |
| 472 |
| 473 TransferableResource arbitrary_resource1; |
| 474 arbitrary_resource1.id = 2178312; |
| 475 arbitrary_resource1.format = 7; |
| 476 arbitrary_resource1.size = gfx::Size(37189, 123123); |
| 477 arbitrary_resource1.mailbox.setName(arbitrary_mailbox1); |
| 478 |
| 479 TransferableResource arbitrary_resource2; |
| 480 arbitrary_resource2.id = 789132; |
| 481 arbitrary_resource2.format = 30; |
| 482 arbitrary_resource2.size = gfx::Size(89123, 23789); |
| 483 arbitrary_resource2.mailbox.setName(arbitrary_mailbox2); |
| 484 |
| 485 CompositorFrame frame_in; |
| 486 frame_in.size = arbitrary_size; |
| 487 |
| 488 frame_in.resource_list.sync_point = arbitrary_uint; |
| 489 frame_in.resource_list.resources.push_back(arbitrary_resource1); |
| 490 frame_in.resource_list.resources.push_back(arbitrary_resource2); |
| 491 |
| 492 IPC::ParamTraits<CompositorFrame>::Write(&msg, frame_in); |
| 493 |
| 494 CompositorFrame frame_out; |
| 495 PickleIterator iter(msg); |
| 496 EXPECT_TRUE(IPC::ParamTraits<CompositorFrame>::Read(&msg, &iter, &frame_out)); |
| 497 |
| 498 EXPECT_EQ(arbitrary_size.ToString(), frame_out.size.ToString()); |
| 499 EXPECT_EQ(arbitrary_uint, frame_out.resource_list.sync_point); |
| 500 |
| 501 EXPECT_EQ(2u, frame_out.resource_list.resources.size()); |
| 502 Compare(arbitrary_resource1, frame_out.resource_list.resources[0]); |
| 503 Compare(arbitrary_resource2, frame_out.resource_list.resources[1]); |
| 504 } |
| 505 |
| 506 } // namespace |
| 507 } // namespace content |
OLD | NEW |