| 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 |