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 <algorithm> | 9 #include <algorithm> |
10 | 10 |
(...skipping 477 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
488 EXPECT_EQ(same_shared_quad_state_cmp, same_shared_quad_state_in); | 488 EXPECT_EQ(same_shared_quad_state_cmp, same_shared_quad_state_in); |
489 } | 489 } |
490 | 490 |
491 DelegatedFrameData frame_in; | 491 DelegatedFrameData frame_in; |
492 frame_in.render_pass_list.push_back(child_pass_in.Pass()); | 492 frame_in.render_pass_list.push_back(child_pass_in.Pass()); |
493 frame_in.render_pass_list.push_back(pass_in.Pass()); | 493 frame_in.render_pass_list.push_back(pass_in.Pass()); |
494 | 494 |
495 IPC::ParamTraits<DelegatedFrameData>::Write(&msg, frame_in); | 495 IPC::ParamTraits<DelegatedFrameData>::Write(&msg, frame_in); |
496 | 496 |
497 DelegatedFrameData frame_out; | 497 DelegatedFrameData frame_out; |
498 PickleIterator iter(msg); | 498 base::PickleIterator iter(msg); |
499 EXPECT_TRUE(IPC::ParamTraits<DelegatedFrameData>::Read(&msg, | 499 EXPECT_TRUE(IPC::ParamTraits<DelegatedFrameData>::Read(&msg, |
500 &iter, &frame_out)); | 500 &iter, &frame_out)); |
501 | 501 |
502 // Make sure the out and cmp RenderPasses match. | 502 // Make sure the out and cmp RenderPasses match. |
503 scoped_ptr<RenderPass> child_pass_out = | 503 scoped_ptr<RenderPass> child_pass_out = |
504 frame_out.render_pass_list.take(frame_out.render_pass_list.begin()); | 504 frame_out.render_pass_list.take(frame_out.render_pass_list.begin()); |
505 Compare(child_pass_cmp.get(), child_pass_out.get()); | 505 Compare(child_pass_cmp.get(), child_pass_out.get()); |
506 ASSERT_EQ(0u, child_pass_out->shared_quad_state_list.size()); | 506 ASSERT_EQ(0u, child_pass_out->shared_quad_state_list.size()); |
507 ASSERT_EQ(0u, child_pass_out->quad_list.size()); | 507 ASSERT_EQ(0u, child_pass_out->quad_list.size()); |
508 scoped_ptr<RenderPass> pass_out = | 508 scoped_ptr<RenderPass> pass_out = |
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
610 ASSERT_EQ(5u, pass_in->shared_quad_state_list.size()); | 610 ASSERT_EQ(5u, pass_in->shared_quad_state_list.size()); |
611 ASSERT_EQ(2u, pass_in->quad_list.size()); | 611 ASSERT_EQ(2u, pass_in->quad_list.size()); |
612 | 612 |
613 DelegatedFrameData frame_in; | 613 DelegatedFrameData frame_in; |
614 frame_in.render_pass_list.push_back(pass_in.Pass()); | 614 frame_in.render_pass_list.push_back(pass_in.Pass()); |
615 | 615 |
616 IPC::Message msg(1, 2, IPC::Message::PRIORITY_NORMAL); | 616 IPC::Message msg(1, 2, IPC::Message::PRIORITY_NORMAL); |
617 IPC::ParamTraits<DelegatedFrameData>::Write(&msg, frame_in); | 617 IPC::ParamTraits<DelegatedFrameData>::Write(&msg, frame_in); |
618 | 618 |
619 DelegatedFrameData frame_out; | 619 DelegatedFrameData frame_out; |
620 PickleIterator iter(msg); | 620 base::PickleIterator iter(msg); |
621 EXPECT_TRUE( | 621 EXPECT_TRUE( |
622 IPC::ParamTraits<DelegatedFrameData>::Read(&msg, &iter, &frame_out)); | 622 IPC::ParamTraits<DelegatedFrameData>::Read(&msg, &iter, &frame_out)); |
623 | 623 |
624 scoped_ptr<RenderPass> pass_out = | 624 scoped_ptr<RenderPass> pass_out = |
625 frame_out.render_pass_list.take(frame_out.render_pass_list.begin()); | 625 frame_out.render_pass_list.take(frame_out.render_pass_list.begin()); |
626 | 626 |
627 // 2 SharedQuadStates come out. The first and fourth SharedQuadStates were | 627 // 2 SharedQuadStates come out. The first and fourth SharedQuadStates were |
628 // used by quads, and so serialized. Others were not. | 628 // used by quads, and so serialized. Others were not. |
629 ASSERT_EQ(2u, pass_out->shared_quad_state_list.size()); | 629 ASSERT_EQ(2u, pass_out->shared_quad_state_list.size()); |
630 ASSERT_EQ(2u, pass_out->quad_list.size()); | 630 ASSERT_EQ(2u, pass_out->quad_list.size()); |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
678 RenderPassId(1, 1), gfx::Rect(), gfx::Rect(), gfx::Transform()); | 678 RenderPassId(1, 1), gfx::Rect(), gfx::Rect(), gfx::Transform()); |
679 | 679 |
680 DelegatedFrameData frame_in; | 680 DelegatedFrameData frame_in; |
681 frame_in.resource_list.push_back(arbitrary_resource1); | 681 frame_in.resource_list.push_back(arbitrary_resource1); |
682 frame_in.resource_list.push_back(arbitrary_resource2); | 682 frame_in.resource_list.push_back(arbitrary_resource2); |
683 frame_in.render_pass_list.push_back(renderpass_in.Pass()); | 683 frame_in.render_pass_list.push_back(renderpass_in.Pass()); |
684 | 684 |
685 IPC::ParamTraits<DelegatedFrameData>::Write(&msg, frame_in); | 685 IPC::ParamTraits<DelegatedFrameData>::Write(&msg, frame_in); |
686 | 686 |
687 DelegatedFrameData frame_out; | 687 DelegatedFrameData frame_out; |
688 PickleIterator iter(msg); | 688 base::PickleIterator iter(msg); |
689 EXPECT_TRUE(IPC::ParamTraits<DelegatedFrameData>::Read(&msg, | 689 EXPECT_TRUE(IPC::ParamTraits<DelegatedFrameData>::Read(&msg, |
690 &iter, &frame_out)); | 690 &iter, &frame_out)); |
691 | 691 |
692 ASSERT_EQ(2u, frame_out.resource_list.size()); | 692 ASSERT_EQ(2u, frame_out.resource_list.size()); |
693 Compare(arbitrary_resource1, frame_out.resource_list[0]); | 693 Compare(arbitrary_resource1, frame_out.resource_list[0]); |
694 Compare(arbitrary_resource2, frame_out.resource_list[1]); | 694 Compare(arbitrary_resource2, frame_out.resource_list[1]); |
695 } | 695 } |
696 | 696 |
697 TEST_F(CCMessagesTest, SoftwareFrameData) { | 697 TEST_F(CCMessagesTest, SoftwareFrameData) { |
698 cc::SoftwareFrameData frame_in; | 698 cc::SoftwareFrameData frame_in; |
699 frame_in.id = 3; | 699 frame_in.id = 3; |
700 frame_in.size = gfx::Size(40, 20); | 700 frame_in.size = gfx::Size(40, 20); |
701 frame_in.damage_rect = gfx::Rect(5, 18, 31, 44); | 701 frame_in.damage_rect = gfx::Rect(5, 18, 31, 44); |
702 frame_in.bitmap_id = cc::SharedBitmap::GenerateId(); | 702 frame_in.bitmap_id = cc::SharedBitmap::GenerateId(); |
703 | 703 |
704 // Write the frame. | 704 // Write the frame. |
705 IPC::Message msg(1, 2, IPC::Message::PRIORITY_NORMAL); | 705 IPC::Message msg(1, 2, IPC::Message::PRIORITY_NORMAL); |
706 IPC::ParamTraits<cc::SoftwareFrameData>::Write(&msg, frame_in); | 706 IPC::ParamTraits<cc::SoftwareFrameData>::Write(&msg, frame_in); |
707 | 707 |
708 // Read the frame. | 708 // Read the frame. |
709 cc::SoftwareFrameData frame_out; | 709 cc::SoftwareFrameData frame_out; |
710 PickleIterator iter(msg); | 710 base::PickleIterator iter(msg); |
711 EXPECT_TRUE( | 711 EXPECT_TRUE( |
712 IPC::ParamTraits<SoftwareFrameData>::Read(&msg, &iter, &frame_out)); | 712 IPC::ParamTraits<SoftwareFrameData>::Read(&msg, &iter, &frame_out)); |
713 EXPECT_EQ(frame_in.id, frame_out.id); | 713 EXPECT_EQ(frame_in.id, frame_out.id); |
714 EXPECT_EQ(frame_in.size.ToString(), frame_out.size.ToString()); | 714 EXPECT_EQ(frame_in.size.ToString(), frame_out.size.ToString()); |
715 EXPECT_EQ(frame_in.damage_rect.ToString(), frame_out.damage_rect.ToString()); | 715 EXPECT_EQ(frame_in.damage_rect.ToString(), frame_out.damage_rect.ToString()); |
716 EXPECT_EQ(frame_in.bitmap_id, frame_out.bitmap_id); | 716 EXPECT_EQ(frame_in.bitmap_id, frame_out.bitmap_id); |
717 } | 717 } |
718 | 718 |
719 TEST_F(CCMessagesTest, SoftwareFrameDataMaxInt) { | 719 TEST_F(CCMessagesTest, SoftwareFrameDataMaxInt) { |
720 SoftwareFrameData frame_in; | 720 SoftwareFrameData frame_in; |
721 frame_in.id = 3; | 721 frame_in.id = 3; |
722 frame_in.size = gfx::Size(40, 20); | 722 frame_in.size = gfx::Size(40, 20); |
723 frame_in.damage_rect = gfx::Rect(5, 18, 31, 44); | 723 frame_in.damage_rect = gfx::Rect(5, 18, 31, 44); |
724 frame_in.bitmap_id = cc::SharedBitmap::GenerateId(); | 724 frame_in.bitmap_id = cc::SharedBitmap::GenerateId(); |
725 | 725 |
726 // Write the SoftwareFrameData by hand, make sure it works. | 726 // Write the SoftwareFrameData by hand, make sure it works. |
727 { | 727 { |
728 IPC::Message msg(1, 2, IPC::Message::PRIORITY_NORMAL); | 728 IPC::Message msg(1, 2, IPC::Message::PRIORITY_NORMAL); |
729 IPC::WriteParam(&msg, frame_in.id); | 729 IPC::WriteParam(&msg, frame_in.id); |
730 IPC::WriteParam(&msg, frame_in.size); | 730 IPC::WriteParam(&msg, frame_in.size); |
731 IPC::WriteParam(&msg, frame_in.damage_rect); | 731 IPC::WriteParam(&msg, frame_in.damage_rect); |
732 IPC::WriteParam(&msg, frame_in.bitmap_id); | 732 IPC::WriteParam(&msg, frame_in.bitmap_id); |
733 SoftwareFrameData frame_out; | 733 SoftwareFrameData frame_out; |
734 PickleIterator iter(msg); | 734 base::PickleIterator iter(msg); |
735 EXPECT_TRUE( | 735 EXPECT_TRUE( |
736 IPC::ParamTraits<SoftwareFrameData>::Read(&msg, &iter, &frame_out)); | 736 IPC::ParamTraits<SoftwareFrameData>::Read(&msg, &iter, &frame_out)); |
737 } | 737 } |
738 | 738 |
739 // The size of the frame may overflow when multiplied together. | 739 // The size of the frame may overflow when multiplied together. |
740 int max = std::numeric_limits<int>::max(); | 740 int max = std::numeric_limits<int>::max(); |
741 frame_in.size = gfx::Size(max, max); | 741 frame_in.size = gfx::Size(max, max); |
742 | 742 |
743 // If size_t is larger than int, then int*int*4 can always fit in size_t. | 743 // If size_t is larger than int, then int*int*4 can always fit in size_t. |
744 bool expect_read = sizeof(size_t) >= sizeof(int) * 2; | 744 bool expect_read = sizeof(size_t) >= sizeof(int) * 2; |
745 | 745 |
746 // Write the SoftwareFrameData with the MaxInt size, if it causes overflow it | 746 // Write the SoftwareFrameData with the MaxInt size, if it causes overflow it |
747 // should fail. | 747 // should fail. |
748 { | 748 { |
749 IPC::Message msg(1, 2, IPC::Message::PRIORITY_NORMAL); | 749 IPC::Message msg(1, 2, IPC::Message::PRIORITY_NORMAL); |
750 IPC::WriteParam(&msg, frame_in.id); | 750 IPC::WriteParam(&msg, frame_in.id); |
751 IPC::WriteParam(&msg, frame_in.size); | 751 IPC::WriteParam(&msg, frame_in.size); |
752 IPC::WriteParam(&msg, frame_in.damage_rect); | 752 IPC::WriteParam(&msg, frame_in.damage_rect); |
753 IPC::WriteParam(&msg, frame_in.bitmap_id); | 753 IPC::WriteParam(&msg, frame_in.bitmap_id); |
754 SoftwareFrameData frame_out; | 754 SoftwareFrameData frame_out; |
755 PickleIterator iter(msg); | 755 base::PickleIterator iter(msg); |
756 EXPECT_EQ( | 756 EXPECT_EQ( |
757 expect_read, | 757 expect_read, |
758 IPC::ParamTraits<SoftwareFrameData>::Read(&msg, &iter, &frame_out)); | 758 IPC::ParamTraits<SoftwareFrameData>::Read(&msg, &iter, &frame_out)); |
759 } | 759 } |
760 } | 760 } |
761 | 761 |
762 } // namespace | 762 } // namespace |
763 } // namespace content | 763 } // namespace content |
OLD | NEW |