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

Side by Side Diff: content/browser/presentation/presentation_service_impl_unittest.cc

Issue 1199933006: [MediaRouter] wireup send/receive messages. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Update presentation_service_impl_unittest Created 5 years, 5 months 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
OLDNEW
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 "base/location.h" 5 #include "base/location.h"
6 #include "base/memory/scoped_ptr.h" 6 #include "base/memory/scoped_ptr.h"
7 #include "base/run_loop.h" 7 #include "base/run_loop.h"
8 #include "base/single_thread_task_runner.h" 8 #include "base/single_thread_task_runner.h"
9 #include "base/test/test_timeouts.h" 9 #include "base/test/test_timeouts.h"
10 #include "base/thread_task_runner_handle.h" 10 #include "base/thread_task_runner_handle.h"
(...skipping 643 matching lines...) Expand 10 before | Expand all | Expand 10 after
654 message_request->type = presentation::PresentationMessageType:: 654 message_request->type = presentation::PresentationMessageType::
655 PRESENTATION_MESSAGE_TYPE_TEXT; 655 PRESENTATION_MESSAGE_TYPE_TEXT;
656 message_request->message = message; 656 message_request->message = message;
657 service_ptr_->SendSessionMessage( 657 service_ptr_->SendSessionMessage(
658 message_request.Pass(), 658 message_request.Pass(),
659 base::Bind( 659 base::Bind(
660 &PresentationServiceImplTest::ExpectSendMessageMojoCallback, 660 &PresentationServiceImplTest::ExpectSendMessageMojoCallback,
661 base::Unretained(this))); 661 base::Unretained(this)));
662 662
663 base::RunLoop run_loop; 663 base::RunLoop run_loop;
664 base::Closure send_message_cb; 664 base::Callback<void(bool)> send_message_cb;
665 PresentationSessionMessage* test_message = nullptr; 665 PresentationSessionMessage* test_message = nullptr;
666 EXPECT_CALL(mock_delegate_, SendMessageRawPtr( 666 EXPECT_CALL(mock_delegate_, SendMessageRawPtr(
667 _, _, _, _)) 667 _, _, _, _))
668 .WillOnce(DoAll( 668 .WillOnce(DoAll(
669 InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit), 669 InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit),
670 SaveArg<2>(&test_message), 670 SaveArg<2>(&test_message),
671 SaveArg<3>(&send_message_cb))); 671 SaveArg<3>(&send_message_cb)));
672 run_loop.Run(); 672 run_loop.Run();
673 673
674 EXPECT_TRUE(test_message); 674 EXPECT_TRUE(test_message);
675 EXPECT_EQ(kPresentationUrl, test_message->presentation_url); 675 EXPECT_EQ(kPresentationUrl, test_message->presentation_url);
676 EXPECT_EQ(kPresentationId, test_message->presentation_id); 676 EXPECT_EQ(kPresentationId, test_message->presentation_id);
677 EXPECT_FALSE(test_message->is_binary()); 677 EXPECT_FALSE(test_message->is_binary());
678 EXPECT_TRUE(test_message->message.get()->size() <= 678 EXPECT_TRUE(test_message->message.get()->size() <=
679 kMaxPresentationSessionMessageSize); 679 kMaxPresentationSessionMessageSize);
680 EXPECT_EQ(message, *(test_message->message.get())); 680 EXPECT_EQ(message, *(test_message->message.get()));
681 EXPECT_FALSE(test_message->data); 681 EXPECT_FALSE(test_message->data);
682 delete test_message; 682 delete test_message;
683 send_message_cb.Run(); 683 send_message_cb.Run(true);
684 SaveQuitClosureAndRunLoop(); 684 SaveQuitClosureAndRunLoop();
685 } 685 }
686 686
687 TEST_F(PresentationServiceImplTest, SendArrayBuffer) { 687 TEST_F(PresentationServiceImplTest, SendArrayBuffer) {
688 // Test Array buffer data. 688 // Test Array buffer data.
689 const uint8 buffer[] = {0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48}; 689 const uint8 buffer[] = {0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48};
690 std::vector<uint8> data; 690 std::vector<uint8> data;
691 data.assign(buffer, buffer + sizeof(buffer)); 691 data.assign(buffer, buffer + sizeof(buffer));
692 692
693 presentation::SessionMessagePtr message_request( 693 presentation::SessionMessagePtr message_request(
694 presentation::SessionMessage::New()); 694 presentation::SessionMessage::New());
695 message_request->presentation_url = kPresentationUrl; 695 message_request->presentation_url = kPresentationUrl;
696 message_request->presentation_id = kPresentationId; 696 message_request->presentation_id = kPresentationId;
697 message_request->type = presentation::PresentationMessageType:: 697 message_request->type = presentation::PresentationMessageType::
698 PRESENTATION_MESSAGE_TYPE_ARRAY_BUFFER; 698 PRESENTATION_MESSAGE_TYPE_ARRAY_BUFFER;
699 message_request->data = mojo::Array<uint8>::From(data); 699 message_request->data = mojo::Array<uint8>::From(data);
700 service_ptr_->SendSessionMessage( 700 service_ptr_->SendSessionMessage(
701 message_request.Pass(), 701 message_request.Pass(),
702 base::Bind( 702 base::Bind(
703 &PresentationServiceImplTest::ExpectSendMessageMojoCallback, 703 &PresentationServiceImplTest::ExpectSendMessageMojoCallback,
704 base::Unretained(this))); 704 base::Unretained(this)));
705 705
706 base::RunLoop run_loop; 706 base::RunLoop run_loop;
707 base::Closure send_message_cb; 707 base::Callback<void(bool)> send_message_cb;
708 PresentationSessionMessage* test_message = nullptr; 708 PresentationSessionMessage* test_message = nullptr;
709 EXPECT_CALL(mock_delegate_, SendMessageRawPtr( 709 EXPECT_CALL(mock_delegate_, SendMessageRawPtr(
710 _, _, _, _)) 710 _, _, _, _))
711 .WillOnce(DoAll( 711 .WillOnce(DoAll(
712 InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit), 712 InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit),
713 SaveArg<2>(&test_message), 713 SaveArg<2>(&test_message),
714 SaveArg<3>(&send_message_cb))); 714 SaveArg<3>(&send_message_cb)));
715 run_loop.Run(); 715 run_loop.Run();
716 716
717 EXPECT_TRUE(test_message); 717 EXPECT_TRUE(test_message);
718 EXPECT_EQ(kPresentationUrl, test_message->presentation_url); 718 EXPECT_EQ(kPresentationUrl, test_message->presentation_url);
719 EXPECT_EQ(kPresentationId, test_message->presentation_id); 719 EXPECT_EQ(kPresentationId, test_message->presentation_id);
720 EXPECT_TRUE(test_message->is_binary()); 720 EXPECT_TRUE(test_message->is_binary());
721 EXPECT_EQ(PresentationMessageType::ARRAY_BUFFER, test_message->type); 721 EXPECT_EQ(PresentationMessageType::ARRAY_BUFFER, test_message->type);
722 EXPECT_FALSE(test_message->message); 722 EXPECT_FALSE(test_message->message);
723 EXPECT_EQ(data.size(), test_message->data.get()->size()); 723 EXPECT_EQ(data.size(), test_message->data.get()->size());
724 EXPECT_TRUE(test_message->data.get()->size() <= 724 EXPECT_TRUE(test_message->data.get()->size() <=
725 kMaxPresentationSessionMessageSize); 725 kMaxPresentationSessionMessageSize);
726 EXPECT_EQ(0, memcmp(buffer, &(*test_message->data.get())[0], sizeof(buffer))); 726 EXPECT_EQ(0, memcmp(buffer, &(*test_message->data.get())[0], sizeof(buffer)));
727 delete test_message; 727 delete test_message;
728 send_message_cb.Run(); 728 send_message_cb.Run(true);
729 SaveQuitClosureAndRunLoop(); 729 SaveQuitClosureAndRunLoop();
730 } 730 }
731 731
732 TEST_F(PresentationServiceImplTest, SendArrayBufferWithExceedingLimit) { 732 TEST_F(PresentationServiceImplTest, SendArrayBufferWithExceedingLimit) {
733 // Create buffer with size exceeding the limit. 733 // Create buffer with size exceeding the limit.
734 // Use same size as in content::kMaxPresentationSessionMessageSize. 734 // Use same size as in content::kMaxPresentationSessionMessageSize.
735 const size_t kMaxBufferSizeInBytes = 64 * 1024; // 64 KB. 735 const size_t kMaxBufferSizeInBytes = 64 * 1024; // 64 KB.
736 uint8 buffer[kMaxBufferSizeInBytes+1]; 736 uint8 buffer[kMaxBufferSizeInBytes+1];
737 memset(buffer, 0, kMaxBufferSizeInBytes+1); 737 memset(buffer, 0, kMaxBufferSizeInBytes+1);
738 std::vector<uint8> data; 738 std::vector<uint8> data;
739 data.assign(buffer, buffer + sizeof(buffer)); 739 data.assign(buffer, buffer + sizeof(buffer));
740 740
741 presentation::SessionMessagePtr message_request( 741 presentation::SessionMessagePtr message_request(
742 presentation::SessionMessage::New()); 742 presentation::SessionMessage::New());
743 message_request->presentation_url = kPresentationUrl; 743 message_request->presentation_url = kPresentationUrl;
744 message_request->presentation_id = kPresentationId; 744 message_request->presentation_id = kPresentationId;
745 message_request->type = presentation::PresentationMessageType:: 745 message_request->type = presentation::PresentationMessageType::
746 PRESENTATION_MESSAGE_TYPE_ARRAY_BUFFER; 746 PRESENTATION_MESSAGE_TYPE_ARRAY_BUFFER;
747 message_request->data = mojo::Array<uint8>::From(data); 747 message_request->data = mojo::Array<uint8>::From(data);
748 service_ptr_->SendSessionMessage( 748 service_ptr_->SendSessionMessage(
749 message_request.Pass(), 749 message_request.Pass(),
750 base::Bind( 750 base::Bind(
751 &PresentationServiceImplTest::ExpectSendMessageMojoCallback, 751 &PresentationServiceImplTest::ExpectSendMessageMojoCallback,
752 base::Unretained(this))); 752 base::Unretained(this)));
753 753
754 base::RunLoop run_loop; 754 base::RunLoop run_loop;
755 base::Closure send_message_cb; 755 base::Callback<void(bool)> send_message_cb;
756 PresentationSessionMessage* test_message = nullptr; 756 PresentationSessionMessage* test_message = nullptr;
757 EXPECT_CALL(mock_delegate_, SendMessageRawPtr( 757 EXPECT_CALL(mock_delegate_, SendMessageRawPtr(
758 _, _, _, _)) 758 _, _, _, _))
759 .WillOnce(DoAll( 759 .WillOnce(DoAll(
760 InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit), 760 InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit),
761 SaveArg<2>(&test_message), 761 SaveArg<2>(&test_message),
762 SaveArg<3>(&send_message_cb))); 762 SaveArg<3>(&send_message_cb)));
763 run_loop.Run(); 763 run_loop.Run();
764 764
765 EXPECT_FALSE(test_message); 765 EXPECT_FALSE(test_message);
766 send_message_cb.Run(); 766 send_message_cb.Run(true);
767 SaveQuitClosureAndRunLoop(); 767 SaveQuitClosureAndRunLoop();
768 } 768 }
769 769
770 TEST_F(PresentationServiceImplTest, SendBlobData) { 770 TEST_F(PresentationServiceImplTest, SendBlobData) {
771 const uint8 buffer[] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07}; 771 const uint8 buffer[] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07};
772 std::vector<uint8> data; 772 std::vector<uint8> data;
773 data.assign(buffer, buffer + sizeof(buffer)); 773 data.assign(buffer, buffer + sizeof(buffer));
774 774
775 presentation::SessionMessagePtr message_request( 775 presentation::SessionMessagePtr message_request(
776 presentation::SessionMessage::New()); 776 presentation::SessionMessage::New());
777 message_request->presentation_url = kPresentationUrl; 777 message_request->presentation_url = kPresentationUrl;
778 message_request->presentation_id = kPresentationId; 778 message_request->presentation_id = kPresentationId;
779 message_request->type = 779 message_request->type =
780 presentation::PresentationMessageType::PRESENTATION_MESSAGE_TYPE_BLOB; 780 presentation::PresentationMessageType::PRESENTATION_MESSAGE_TYPE_BLOB;
781 message_request->data = mojo::Array<uint8>::From(data); 781 message_request->data = mojo::Array<uint8>::From(data);
782 service_ptr_->SendSessionMessage( 782 service_ptr_->SendSessionMessage(
783 message_request.Pass(), 783 message_request.Pass(),
784 base::Bind(&PresentationServiceImplTest::ExpectSendMessageMojoCallback, 784 base::Bind(&PresentationServiceImplTest::ExpectSendMessageMojoCallback,
785 base::Unretained(this))); 785 base::Unretained(this)));
786 786
787 base::RunLoop run_loop; 787 base::RunLoop run_loop;
788 base::Closure send_message_cb; 788 base::Callback<void(bool)> send_message_cb;
789 PresentationSessionMessage* test_message = nullptr; 789 PresentationSessionMessage* test_message = nullptr;
790 EXPECT_CALL(mock_delegate_, SendMessageRawPtr(_, _, _, _)) 790 EXPECT_CALL(mock_delegate_, SendMessageRawPtr(_, _, _, _))
791 .WillOnce(DoAll( 791 .WillOnce(DoAll(
792 InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit), 792 InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit),
793 SaveArg<2>(&test_message), 793 SaveArg<2>(&test_message),
794 SaveArg<3>(&send_message_cb))); 794 SaveArg<3>(&send_message_cb)));
795 run_loop.Run(); 795 run_loop.Run();
796 796
797 EXPECT_TRUE(test_message); 797 EXPECT_TRUE(test_message);
798 EXPECT_EQ(kPresentationUrl, test_message->presentation_url); 798 EXPECT_EQ(kPresentationUrl, test_message->presentation_url);
799 EXPECT_EQ(kPresentationId, test_message->presentation_id); 799 EXPECT_EQ(kPresentationId, test_message->presentation_id);
800 EXPECT_TRUE(test_message->is_binary()); 800 EXPECT_TRUE(test_message->is_binary());
801 EXPECT_EQ(PresentationMessageType::BLOB, test_message->type); 801 EXPECT_EQ(PresentationMessageType::BLOB, test_message->type);
802 EXPECT_FALSE(test_message->message); 802 EXPECT_FALSE(test_message->message);
803 EXPECT_EQ(data.size(), test_message->data.get()->size()); 803 EXPECT_EQ(data.size(), test_message->data.get()->size());
804 EXPECT_TRUE(test_message->data.get()->size() <= 804 EXPECT_TRUE(test_message->data.get()->size() <=
805 kMaxPresentationSessionMessageSize); 805 kMaxPresentationSessionMessageSize);
806 EXPECT_EQ(0, memcmp(buffer, &(*test_message->data.get())[0], sizeof(buffer))); 806 EXPECT_EQ(0, memcmp(buffer, &(*test_message->data.get())[0], sizeof(buffer)));
807 delete test_message; 807 delete test_message;
808 send_message_cb.Run(); 808 send_message_cb.Run(true);
809 SaveQuitClosureAndRunLoop(); 809 SaveQuitClosureAndRunLoop();
810 } 810 }
811 811
812 TEST_F(PresentationServiceImplTest, MaxPendingJoinSessionRequests) { 812 TEST_F(PresentationServiceImplTest, MaxPendingJoinSessionRequests) {
813 const char* presentation_url = "http://fooUrl%d"; 813 const char* presentation_url = "http://fooUrl%d";
814 const char* presentation_id = "presentationId%d"; 814 const char* presentation_id = "presentationId%d";
815 int num_requests = PresentationServiceImpl::kMaxNumQueuedSessionRequests; 815 int num_requests = PresentationServiceImpl::kMaxNumQueuedSessionRequests;
816 int i = 0; 816 int i = 0;
817 EXPECT_CALL(mock_delegate_, JoinSession(_, _, _, _, _, _)) 817 EXPECT_CALL(mock_delegate_, JoinSession(_, _, _, _, _, _))
818 .Times(num_requests); 818 .Times(num_requests);
819 for (; i < num_requests; ++i) { 819 for (; i < num_requests; ++i) {
820 service_ptr_->JoinSession( 820 service_ptr_->JoinSession(
821 base::StringPrintf(presentation_url, i), 821 base::StringPrintf(presentation_url, i),
822 base::StringPrintf(presentation_id, i), 822 base::StringPrintf(presentation_id, i),
823 base::Bind(&DoNothing)); 823 base::Bind(&DoNothing));
824 } 824 }
825 825
826 // Exceeded maximum queue size, should invoke mojo callback with error. 826 // Exceeded maximum queue size, should invoke mojo callback with error.
827 service_ptr_->JoinSession( 827 service_ptr_->JoinSession(
828 base::StringPrintf(presentation_url, i), 828 base::StringPrintf(presentation_url, i),
829 base::StringPrintf(presentation_id, i), 829 base::StringPrintf(presentation_id, i),
830 base::Bind( 830 base::Bind(
831 &PresentationServiceImplTest::ExpectNewSessionMojoCallbackError, 831 &PresentationServiceImplTest::ExpectNewSessionMojoCallbackError,
832 base::Unretained(this))); 832 base::Unretained(this)));
833 SaveQuitClosureAndRunLoop(); 833 SaveQuitClosureAndRunLoop();
834 } 834 }
835 835
836 } // namespace content 836 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/presentation/presentation_service_impl.cc ('k') | content/public/browser/presentation_service_delegate.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698