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

Side by Side Diff: content/common/cc_messages_unittest.cc

Issue 11308306: cc: Add CompositorFrame class with IPC param traits for it (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years 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 | Annotate | Revision Log
« content/common/cc_messages.cc ('K') | « content/common/cc_messages.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
OLDNEW
« content/common/cc_messages.cc ('K') | « content/common/cc_messages.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698