| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 <stddef.h> |
| 6 #include <stdint.h> |
| 7 |
| 5 #include <string> | 8 #include <string> |
| 6 #include <vector> | 9 #include <vector> |
| 7 | 10 |
| 8 #include "base/location.h" | 11 #include "base/location.h" |
| 9 #include "base/memory/scoped_ptr.h" | 12 #include "base/memory/scoped_ptr.h" |
| 10 #include "base/run_loop.h" | 13 #include "base/run_loop.h" |
| 11 #include "base/single_thread_task_runner.h" | 14 #include "base/single_thread_task_runner.h" |
| 12 #include "base/test/test_timeouts.h" | 15 #include "base/test/test_timeouts.h" |
| 13 #include "base/thread_task_runner_handle.h" | 16 #include "base/thread_task_runner_handle.h" |
| 14 #include "content/browser/presentation/presentation_service_impl.h" | 17 #include "content/browser/presentation/presentation_service_impl.h" |
| (...skipping 639 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 654 EXPECT_FALSE(test_message->is_binary()); | 657 EXPECT_FALSE(test_message->is_binary()); |
| 655 EXPECT_LE(test_message->message.size(), kMaxPresentationSessionMessageSize); | 658 EXPECT_LE(test_message->message.size(), kMaxPresentationSessionMessageSize); |
| 656 EXPECT_EQ(message, test_message->message); | 659 EXPECT_EQ(message, test_message->message); |
| 657 ASSERT_FALSE(test_message->data); | 660 ASSERT_FALSE(test_message->data); |
| 658 send_message_cb.Run(true); | 661 send_message_cb.Run(true); |
| 659 SaveQuitClosureAndRunLoop(); | 662 SaveQuitClosureAndRunLoop(); |
| 660 } | 663 } |
| 661 | 664 |
| 662 TEST_F(PresentationServiceImplTest, SendArrayBuffer) { | 665 TEST_F(PresentationServiceImplTest, SendArrayBuffer) { |
| 663 // Test Array buffer data. | 666 // Test Array buffer data. |
| 664 const uint8 buffer[] = {0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48}; | 667 const uint8_t buffer[] = {0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48}; |
| 665 std::vector<uint8> data; | 668 std::vector<uint8_t> data; |
| 666 data.assign(buffer, buffer + sizeof(buffer)); | 669 data.assign(buffer, buffer + sizeof(buffer)); |
| 667 | 670 |
| 668 presentation::PresentationSessionInfoPtr session( | 671 presentation::PresentationSessionInfoPtr session( |
| 669 presentation::PresentationSessionInfo::New()); | 672 presentation::PresentationSessionInfo::New()); |
| 670 session->url = kPresentationUrl; | 673 session->url = kPresentationUrl; |
| 671 session->id = kPresentationId; | 674 session->id = kPresentationId; |
| 672 presentation::SessionMessagePtr message_request( | 675 presentation::SessionMessagePtr message_request( |
| 673 presentation::SessionMessage::New()); | 676 presentation::SessionMessage::New()); |
| 674 message_request->type = presentation::PresentationMessageType:: | 677 message_request->type = presentation::PresentationMessageType:: |
| 675 PRESENTATION_MESSAGE_TYPE_ARRAY_BUFFER; | 678 PRESENTATION_MESSAGE_TYPE_ARRAY_BUFFER; |
| 676 message_request->data = mojo::Array<uint8>::From(data); | 679 message_request->data = mojo::Array<uint8_t>::From(data); |
| 677 service_ptr_->SendSessionMessage( | 680 service_ptr_->SendSessionMessage( |
| 678 session.Pass(), message_request.Pass(), | 681 session.Pass(), message_request.Pass(), |
| 679 base::Bind(&PresentationServiceImplTest::ExpectSendMessageMojoCallback, | 682 base::Bind(&PresentationServiceImplTest::ExpectSendMessageMojoCallback, |
| 680 base::Unretained(this))); | 683 base::Unretained(this))); |
| 681 | 684 |
| 682 base::RunLoop run_loop; | 685 base::RunLoop run_loop; |
| 683 base::Callback<void(bool)> send_message_cb; | 686 base::Callback<void(bool)> send_message_cb; |
| 684 PresentationSessionMessage* test_message = nullptr; | 687 PresentationSessionMessage* test_message = nullptr; |
| 685 EXPECT_CALL(mock_delegate_, SendMessageRawPtr(_, _, _, _, _)) | 688 EXPECT_CALL(mock_delegate_, SendMessageRawPtr(_, _, _, _, _)) |
| 686 .WillOnce(DoAll(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit), | 689 .WillOnce(DoAll(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit), |
| (...skipping 11 matching lines...) Expand all Loading... |
| 698 EXPECT_LE(test_message->data->size(), kMaxPresentationSessionMessageSize); | 701 EXPECT_LE(test_message->data->size(), kMaxPresentationSessionMessageSize); |
| 699 EXPECT_EQ(0, memcmp(buffer, &(*test_message->data)[0], sizeof(buffer))); | 702 EXPECT_EQ(0, memcmp(buffer, &(*test_message->data)[0], sizeof(buffer))); |
| 700 send_message_cb.Run(true); | 703 send_message_cb.Run(true); |
| 701 SaveQuitClosureAndRunLoop(); | 704 SaveQuitClosureAndRunLoop(); |
| 702 } | 705 } |
| 703 | 706 |
| 704 TEST_F(PresentationServiceImplTest, SendArrayBufferWithExceedingLimit) { | 707 TEST_F(PresentationServiceImplTest, SendArrayBufferWithExceedingLimit) { |
| 705 // Create buffer with size exceeding the limit. | 708 // Create buffer with size exceeding the limit. |
| 706 // Use same size as in content::kMaxPresentationSessionMessageSize. | 709 // Use same size as in content::kMaxPresentationSessionMessageSize. |
| 707 const size_t kMaxBufferSizeInBytes = 64 * 1024; // 64 KB. | 710 const size_t kMaxBufferSizeInBytes = 64 * 1024; // 64 KB. |
| 708 uint8 buffer[kMaxBufferSizeInBytes+1]; | 711 uint8_t buffer[kMaxBufferSizeInBytes + 1]; |
| 709 memset(buffer, 0, kMaxBufferSizeInBytes+1); | 712 memset(buffer, 0, kMaxBufferSizeInBytes+1); |
| 710 std::vector<uint8> data; | 713 std::vector<uint8_t> data; |
| 711 data.assign(buffer, buffer + sizeof(buffer)); | 714 data.assign(buffer, buffer + sizeof(buffer)); |
| 712 | 715 |
| 713 presentation::PresentationSessionInfoPtr session( | 716 presentation::PresentationSessionInfoPtr session( |
| 714 presentation::PresentationSessionInfo::New()); | 717 presentation::PresentationSessionInfo::New()); |
| 715 session->url = kPresentationUrl; | 718 session->url = kPresentationUrl; |
| 716 session->id = kPresentationId; | 719 session->id = kPresentationId; |
| 717 presentation::SessionMessagePtr message_request( | 720 presentation::SessionMessagePtr message_request( |
| 718 presentation::SessionMessage::New()); | 721 presentation::SessionMessage::New()); |
| 719 message_request->type = presentation::PresentationMessageType:: | 722 message_request->type = presentation::PresentationMessageType:: |
| 720 PRESENTATION_MESSAGE_TYPE_ARRAY_BUFFER; | 723 PRESENTATION_MESSAGE_TYPE_ARRAY_BUFFER; |
| 721 message_request->data = mojo::Array<uint8>::From(data); | 724 message_request->data = mojo::Array<uint8_t>::From(data); |
| 722 service_ptr_->SendSessionMessage( | 725 service_ptr_->SendSessionMessage( |
| 723 session.Pass(), message_request.Pass(), | 726 session.Pass(), message_request.Pass(), |
| 724 base::Bind(&PresentationServiceImplTest::ExpectSendMessageMojoCallback, | 727 base::Bind(&PresentationServiceImplTest::ExpectSendMessageMojoCallback, |
| 725 base::Unretained(this))); | 728 base::Unretained(this))); |
| 726 | 729 |
| 727 base::RunLoop run_loop; | 730 base::RunLoop run_loop; |
| 728 base::Callback<void(bool)> send_message_cb; | 731 base::Callback<void(bool)> send_message_cb; |
| 729 PresentationSessionMessage* test_message = nullptr; | 732 PresentationSessionMessage* test_message = nullptr; |
| 730 EXPECT_CALL(mock_delegate_, SendMessageRawPtr(_, _, _, _, _)) | 733 EXPECT_CALL(mock_delegate_, SendMessageRawPtr(_, _, _, _, _)) |
| 731 .WillOnce(DoAll(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit), | 734 .WillOnce(DoAll(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit), |
| 732 SaveArg<3>(&test_message), SaveArg<4>(&send_message_cb))); | 735 SaveArg<3>(&test_message), SaveArg<4>(&send_message_cb))); |
| 733 run_loop.Run(); | 736 run_loop.Run(); |
| 734 | 737 |
| 735 EXPECT_FALSE(test_message); | 738 EXPECT_FALSE(test_message); |
| 736 send_message_cb.Run(true); | 739 send_message_cb.Run(true); |
| 737 SaveQuitClosureAndRunLoop(); | 740 SaveQuitClosureAndRunLoop(); |
| 738 } | 741 } |
| 739 | 742 |
| 740 TEST_F(PresentationServiceImplTest, SendBlobData) { | 743 TEST_F(PresentationServiceImplTest, SendBlobData) { |
| 741 const uint8 buffer[] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07}; | 744 const uint8_t buffer[] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07}; |
| 742 std::vector<uint8> data; | 745 std::vector<uint8_t> data; |
| 743 data.assign(buffer, buffer + sizeof(buffer)); | 746 data.assign(buffer, buffer + sizeof(buffer)); |
| 744 | 747 |
| 745 presentation::PresentationSessionInfoPtr session( | 748 presentation::PresentationSessionInfoPtr session( |
| 746 presentation::PresentationSessionInfo::New()); | 749 presentation::PresentationSessionInfo::New()); |
| 747 session->url = kPresentationUrl; | 750 session->url = kPresentationUrl; |
| 748 session->id = kPresentationId; | 751 session->id = kPresentationId; |
| 749 presentation::SessionMessagePtr message_request( | 752 presentation::SessionMessagePtr message_request( |
| 750 presentation::SessionMessage::New()); | 753 presentation::SessionMessage::New()); |
| 751 message_request->type = | 754 message_request->type = |
| 752 presentation::PresentationMessageType::PRESENTATION_MESSAGE_TYPE_BLOB; | 755 presentation::PresentationMessageType::PRESENTATION_MESSAGE_TYPE_BLOB; |
| 753 message_request->data = mojo::Array<uint8>::From(data); | 756 message_request->data = mojo::Array<uint8_t>::From(data); |
| 754 service_ptr_->SendSessionMessage( | 757 service_ptr_->SendSessionMessage( |
| 755 session.Pass(), message_request.Pass(), | 758 session.Pass(), message_request.Pass(), |
| 756 base::Bind(&PresentationServiceImplTest::ExpectSendMessageMojoCallback, | 759 base::Bind(&PresentationServiceImplTest::ExpectSendMessageMojoCallback, |
| 757 base::Unretained(this))); | 760 base::Unretained(this))); |
| 758 | 761 |
| 759 base::RunLoop run_loop; | 762 base::RunLoop run_loop; |
| 760 base::Callback<void(bool)> send_message_cb; | 763 base::Callback<void(bool)> send_message_cb; |
| 761 PresentationSessionMessage* test_message = nullptr; | 764 PresentationSessionMessage* test_message = nullptr; |
| 762 EXPECT_CALL(mock_delegate_, SendMessageRawPtr(_, _, _, _, _)) | 765 EXPECT_CALL(mock_delegate_, SendMessageRawPtr(_, _, _, _, _)) |
| 763 .WillOnce(DoAll(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit), | 766 .WillOnce(DoAll(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit), |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 804 | 807 |
| 805 TEST_F(PresentationServiceImplTest, ScreenAvailabilityNotSupported) { | 808 TEST_F(PresentationServiceImplTest, ScreenAvailabilityNotSupported) { |
| 806 mock_delegate_.set_screen_availability_listening_supported(false); | 809 mock_delegate_.set_screen_availability_listening_supported(false); |
| 807 EXPECT_CALL(mock_client_, | 810 EXPECT_CALL(mock_client_, |
| 808 OnScreenAvailabilityNotSupported(Eq(kPresentationUrl))); | 811 OnScreenAvailabilityNotSupported(Eq(kPresentationUrl))); |
| 809 | 812 |
| 810 ListenForScreenAvailabilityAndWait(kPresentationUrl, false); | 813 ListenForScreenAvailabilityAndWait(kPresentationUrl, false); |
| 811 } | 814 } |
| 812 | 815 |
| 813 } // namespace content | 816 } // namespace content |
| OLD | NEW |