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

Side by Side Diff: chrome/browser/media/router/mojo/media_router_mojo_impl_unittest.cc

Issue 1826403002: [Media Router] Moves mojo-specific code into mojo/ folder (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Revert change to media_router.mojom to fix compile Created 4 years, 8 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 <stddef.h> 5 #include <stddef.h>
6 #include <stdint.h> 6 #include <stdint.h>
7 #include <string> 7 #include <string>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
11 #include "base/bind_helpers.h" 11 #include "base/bind_helpers.h"
12 #include "base/macros.h" 12 #include "base/macros.h"
13 #include "base/memory/ref_counted.h" 13 #include "base/memory/ref_counted.h"
14 #include "base/memory/scoped_ptr.h" 14 #include "base/memory/scoped_ptr.h"
15 #include "base/run_loop.h" 15 #include "base/run_loop.h"
16 #include "base/synchronization/waitable_event.h" 16 #include "base/synchronization/waitable_event.h"
17 #include "base/test/histogram_tester.h" 17 #include "base/test/histogram_tester.h"
18 #include "base/thread_task_runner_handle.h" 18 #include "base/thread_task_runner_handle.h"
19 #include "chrome/browser/media/router/issue.h" 19 #include "chrome/browser/media/router/issue.h"
20 #include "chrome/browser/media/router/media_route.h" 20 #include "chrome/browser/media/router/media_route.h"
21 #include "chrome/browser/media/router/media_router_metrics.h"
22 #include "chrome/browser/media/router/media_router_mojo_test.h"
23 #include "chrome/browser/media/router/media_router_type_converters.h"
24 #include "chrome/browser/media/router/mock_media_router.h" 21 #include "chrome/browser/media/router/mock_media_router.h"
22 #include "chrome/browser/media/router/mojo/media_router_mojo_metrics.h"
23 #include "chrome/browser/media/router/mojo/media_router_mojo_test.h"
24 #include "chrome/browser/media/router/mojo/media_router_type_converters.h"
25 #include "chrome/browser/media/router/presentation_session_messages_observer.h" 25 #include "chrome/browser/media/router/presentation_session_messages_observer.h"
26 #include "chrome/browser/media/router/test_helper.h" 26 #include "chrome/browser/media/router/test_helper.h"
27 #include "chrome/test/base/chrome_render_view_host_test_harness.h" 27 #include "chrome/test/base/chrome_render_view_host_test_harness.h"
28 #include "chrome/test/base/testing_browser_process.h" 28 #include "chrome/test/base/testing_browser_process.h"
29 #include "chrome/test/base/testing_profile.h" 29 #include "chrome/test/base/testing_profile.h"
30 #include "components/version_info/version_info.h" 30 #include "components/version_info/version_info.h"
31 #include "extensions/browser/extension_registry.h" 31 #include "extensions/browser/extension_registry.h"
32 #include "extensions/browser/process_manager.h" 32 #include "extensions/browser/process_manager.h"
33 #include "extensions/browser/process_manager_factory.h" 33 #include "extensions/browser/process_manager_factory.h"
34 #include "extensions/common/extension.h" 34 #include "extensions/common/extension.h"
(...skipping 529 matching lines...) Expand 10 before | Expand all | Expand 10 after
564 &RouteResponseCallbackHandler::Invoke, base::Unretained(&handler))); 564 &RouteResponseCallbackHandler::Invoke, base::Unretained(&handler)));
565 router()->ConnectRouteByRouteId( 565 router()->ConnectRouteByRouteId(
566 kSource, kRouteId, GURL(kOrigin), nullptr, route_response_callbacks, 566 kSource, kRouteId, GURL(kOrigin), nullptr, route_response_callbacks,
567 base::TimeDelta::FromMilliseconds(kTimeoutMillis), true); 567 base::TimeDelta::FromMilliseconds(kTimeoutMillis), true);
568 run_loop.Run(); 568 run_loop.Run();
569 } 569 }
570 570
571 TEST_F(MediaRouterMojoImplTest, DetachRoute) { 571 TEST_F(MediaRouterMojoImplTest, DetachRoute) {
572 base::RunLoop run_loop; 572 base::RunLoop run_loop;
573 EXPECT_CALL(mock_media_route_provider_, DetachRoute(mojo::String(kRouteId))) 573 EXPECT_CALL(mock_media_route_provider_, DetachRoute(mojo::String(kRouteId)))
574 .WillOnce(InvokeWithoutArgs([&run_loop]() { 574 .WillOnce(InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); }));
575 run_loop.Quit();
576 }));
577 router()->DetachRoute(kRouteId); 575 router()->DetachRoute(kRouteId);
578 run_loop.Run(); 576 run_loop.Run();
579 } 577 }
580 578
581 TEST_F(MediaRouterMojoImplTest, TerminateRoute) { 579 TEST_F(MediaRouterMojoImplTest, TerminateRoute) {
582 base::RunLoop run_loop; 580 base::RunLoop run_loop;
583 EXPECT_CALL(mock_media_route_provider_, 581 EXPECT_CALL(mock_media_route_provider_,
584 TerminateRoute(mojo::String(kRouteId))) 582 TerminateRoute(mojo::String(kRouteId)))
585 .WillOnce(InvokeWithoutArgs([&run_loop]() { 583 .WillOnce(InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); }));
586 run_loop.Quit();
587 }));
588 router()->TerminateRoute(kRouteId); 584 router()->TerminateRoute(kRouteId);
589 run_loop.Run(); 585 run_loop.Run();
590 } 586 }
591 587
592 TEST_F(MediaRouterMojoImplTest, HandleIssue) { 588 TEST_F(MediaRouterMojoImplTest, HandleIssue) {
593 MockIssuesObserver issue_observer1(router()); 589 MockIssuesObserver issue_observer1(router());
594 MockIssuesObserver issue_observer2(router()); 590 MockIssuesObserver issue_observer2(router());
595 issue_observer1.RegisterObserver(); 591 issue_observer1.RegisterObserver();
596 issue_observer2.RegisterObserver(); 592 issue_observer2.RegisterObserver();
597 593
598 interfaces::IssuePtr mojo_issue1 = CreateMojoIssue("title 1"); 594 interfaces::IssuePtr mojo_issue1 = CreateMojoIssue("title 1");
599 const Issue& expected_issue1 = mojo_issue1.To<Issue>(); 595 const Issue& expected_issue1 = mojo_issue1.To<Issue>();
600 596
601 const Issue* issue; 597 const Issue* issue;
602 EXPECT_CALL(issue_observer1, 598 EXPECT_CALL(issue_observer1,
603 OnIssueUpdated(Pointee(EqualsIssue(expected_issue1)))) 599 OnIssueUpdated(Pointee(EqualsIssue(expected_issue1))))
604 .WillOnce(SaveArg<0>(&issue)); 600 .WillOnce(SaveArg<0>(&issue));
605 base::RunLoop run_loop; 601 base::RunLoop run_loop;
606 EXPECT_CALL(issue_observer2, 602 EXPECT_CALL(issue_observer2,
607 OnIssueUpdated(Pointee(EqualsIssue(expected_issue1)))) 603 OnIssueUpdated(Pointee(EqualsIssue(expected_issue1))))
608 .WillOnce(InvokeWithoutArgs([&run_loop]() { 604 .WillOnce(InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); }));
609 run_loop.Quit();
610 }));
611 media_router_proxy_->OnIssue(std::move(mojo_issue1)); 605 media_router_proxy_->OnIssue(std::move(mojo_issue1));
612 run_loop.Run(); 606 run_loop.Run();
613 607
614 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&issue_observer1)); 608 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&issue_observer1));
615 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&issue_observer2)); 609 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&issue_observer2));
616 610
617 EXPECT_CALL(issue_observer1, OnIssueUpdated(nullptr)); 611 EXPECT_CALL(issue_observer1, OnIssueUpdated(nullptr));
618 EXPECT_CALL(issue_observer2, OnIssueUpdated(nullptr)); 612 EXPECT_CALL(issue_observer2, OnIssueUpdated(nullptr));
619 613
620 router()->ClearIssue(issue->id()); 614 router()->ClearIssue(issue->id());
621 615
622 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&issue_observer1)); 616 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&issue_observer1));
623 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&issue_observer2)); 617 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&issue_observer2));
624 router()->UnregisterIssuesObserver(&issue_observer1); 618 router()->UnregisterIssuesObserver(&issue_observer1);
625 interfaces::IssuePtr mojo_issue2 = CreateMojoIssue("title 2"); 619 interfaces::IssuePtr mojo_issue2 = CreateMojoIssue("title 2");
626 const Issue& expected_issue2 = mojo_issue2.To<Issue>(); 620 const Issue& expected_issue2 = mojo_issue2.To<Issue>();
627 621
628 EXPECT_CALL(issue_observer2, 622 EXPECT_CALL(issue_observer2,
629 OnIssueUpdated(Pointee(EqualsIssue(expected_issue2)))); 623 OnIssueUpdated(Pointee(EqualsIssue(expected_issue2))));
630 router()->AddIssue(expected_issue2); 624 router()->AddIssue(expected_issue2);
631 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&issue_observer2)); 625 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&issue_observer2));
632 626
633 EXPECT_CALL(issue_observer2, OnIssueUpdated(nullptr)); 627 EXPECT_CALL(issue_observer2, OnIssueUpdated(nullptr));
634 router()->ClearIssue(issue->id()); 628 router()->ClearIssue(issue->id());
635 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&issue_observer2)); 629 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&issue_observer2));
636 630
637 base::RunLoop run_loop2; 631 base::RunLoop run_loop2;
638 EXPECT_CALL(issue_observer2, 632 EXPECT_CALL(issue_observer2,
639 OnIssueUpdated(Pointee(EqualsIssue(expected_issue2)))) 633 OnIssueUpdated(Pointee(EqualsIssue(expected_issue2))))
640 .WillOnce(InvokeWithoutArgs([&run_loop2]() { 634 .WillOnce(InvokeWithoutArgs([&run_loop2]() { run_loop2.Quit(); }));
641 run_loop2.Quit();
642 }));
643 media_router_proxy_->OnIssue(std::move(mojo_issue2)); 635 media_router_proxy_->OnIssue(std::move(mojo_issue2));
644 run_loop2.Run(); 636 run_loop2.Run();
645 637
646 issue_observer1.UnregisterObserver(); 638 issue_observer1.UnregisterObserver();
647 issue_observer2.UnregisterObserver(); 639 issue_observer2.UnregisterObserver();
648 } 640 }
649 641
650 TEST_F(MediaRouterMojoImplTest, RegisterAndUnregisterMediaSinksObserver) { 642 TEST_F(MediaRouterMojoImplTest, RegisterAndUnregisterMediaSinksObserver) {
651 router()->OnSinkAvailabilityUpdated( 643 router()->OnSinkAvailabilityUpdated(
652 interfaces::MediaRouter::SinkAvailability::AVAILABLE); 644 interfaces::MediaRouter::SinkAvailability::AVAILABLE);
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
715 new MockMediaSinksObserver(router(), media_source, 707 new MockMediaSinksObserver(router(), media_source,
716 GURL("https://youtube.com"))); 708 GURL("https://youtube.com")));
717 EXPECT_CALL(*cached_sinks_observer2, OnSinksReceived(IsEmpty())); 709 EXPECT_CALL(*cached_sinks_observer2, OnSinksReceived(IsEmpty()));
718 EXPECT_TRUE(cached_sinks_observer2->Init()); 710 EXPECT_TRUE(cached_sinks_observer2->Init());
719 711
720 base::RunLoop run_loop2; 712 base::RunLoop run_loop2;
721 EXPECT_CALL(mock_media_route_provider_, 713 EXPECT_CALL(mock_media_route_provider_,
722 StopObservingMediaSinks(mojo::String(kSource))); 714 StopObservingMediaSinks(mojo::String(kSource)));
723 EXPECT_CALL(mock_media_route_provider_, 715 EXPECT_CALL(mock_media_route_provider_,
724 StopObservingMediaSinks(mojo::String(kSource2))) 716 StopObservingMediaSinks(mojo::String(kSource2)))
725 .WillOnce(InvokeWithoutArgs([&run_loop2]() { 717 .WillOnce(InvokeWithoutArgs([&run_loop2]() { run_loop2.Quit(); }));
726 run_loop2.Quit();
727 }));
728 sinks_observer.reset(); 718 sinks_observer.reset();
729 extra_sinks_observer.reset(); 719 extra_sinks_observer.reset();
730 unrelated_sinks_observer.reset(); 720 unrelated_sinks_observer.reset();
731 cached_sinks_observer.reset(); 721 cached_sinks_observer.reset();
732 cached_sinks_observer2.reset(); 722 cached_sinks_observer2.reset();
733 run_loop2.Run(); 723 run_loop2.Run();
734 } 724 }
735 725
736 TEST_F(MediaRouterMojoImplTest, 726 TEST_F(MediaRouterMojoImplTest,
737 RegisterMediaSinksObserverWithAvailabilityChange) { 727 RegisterMediaSinksObserverWithAvailabilityChange) {
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
803 StopObservingMediaSinks(mojo::String(kSource2))); 793 StopObservingMediaSinks(mojo::String(kSource2)));
804 sinks_observer2.reset(); 794 sinks_observer2.reset();
805 ProcessEventLoop(); 795 ProcessEventLoop();
806 } 796 }
807 797
808 TEST_F(MediaRouterMojoImplTest, RegisterAndUnregisterMediaRoutesObserver) { 798 TEST_F(MediaRouterMojoImplTest, RegisterAndUnregisterMediaRoutesObserver) {
809 MockMediaRouter mock_router; 799 MockMediaRouter mock_router;
810 MediaSource media_source(kSource); 800 MediaSource media_source(kSource);
811 MediaSource different_media_source(kSource2); 801 MediaSource different_media_source(kSource2);
812 EXPECT_CALL(mock_media_route_provider_, 802 EXPECT_CALL(mock_media_route_provider_,
813 StartObservingMediaRoutes(mojo::String(media_source.id()))).Times(2); 803 StartObservingMediaRoutes(mojo::String(media_source.id())))
814 EXPECT_CALL(mock_media_route_provider_, 804 .Times(2);
815 StartObservingMediaRoutes( 805 EXPECT_CALL(
816 mojo::String(different_media_source.id()))).Times(1); 806 mock_media_route_provider_,
807 StartObservingMediaRoutes(mojo::String(different_media_source.id())))
808 .Times(1);
817 809
818 MediaRoutesObserver* observer_captured; 810 MediaRoutesObserver* observer_captured;
819 EXPECT_CALL(mock_router, RegisterMediaRoutesObserver(_)) 811 EXPECT_CALL(mock_router, RegisterMediaRoutesObserver(_))
820 .Times(3) 812 .Times(3)
821 .WillRepeatedly(SaveArg<0>(&observer_captured)); 813 .WillRepeatedly(SaveArg<0>(&observer_captured));
822 MockMediaRoutesObserver routes_observer(&mock_router, media_source.id()); 814 MockMediaRoutesObserver routes_observer(&mock_router, media_source.id());
823 EXPECT_EQ(observer_captured, &routes_observer); 815 EXPECT_EQ(observer_captured, &routes_observer);
824 MockMediaRoutesObserver extra_routes_observer(&mock_router, 816 MockMediaRoutesObserver extra_routes_observer(&mock_router,
825 media_source.id()); 817 media_source.id());
826 EXPECT_EQ(observer_captured, &extra_routes_observer); 818 EXPECT_EQ(observer_captured, &extra_routes_observer);
827 MockMediaRoutesObserver different_routes_observer(&mock_router, 819 MockMediaRoutesObserver different_routes_observer(
828 different_media_source.id()); 820 &mock_router, different_media_source.id());
829 EXPECT_EQ(observer_captured, &different_routes_observer); 821 EXPECT_EQ(observer_captured, &different_routes_observer);
830 router()->RegisterMediaRoutesObserver(&routes_observer); 822 router()->RegisterMediaRoutesObserver(&routes_observer);
831 router()->RegisterMediaRoutesObserver(&extra_routes_observer); 823 router()->RegisterMediaRoutesObserver(&extra_routes_observer);
832 router()->RegisterMediaRoutesObserver(&different_routes_observer); 824 router()->RegisterMediaRoutesObserver(&different_routes_observer);
833 825
834 std::vector<MediaRoute> expected_routes; 826 std::vector<MediaRoute> expected_routes;
835 expected_routes.push_back(MediaRoute(kRouteId, media_source, kSinkId, 827 expected_routes.push_back(MediaRoute(kRouteId, media_source, kSinkId,
836 kDescription, false, "", false)); 828 kDescription, false, "", false));
837 MediaRoute incognito_expected_route(kRouteId2, media_source, kSinkId, 829 MediaRoute incognito_expected_route(kRouteId2, media_source, kSinkId,
838 kDescription, false, "", false); 830 kDescription, false, "", false);
(...skipping 16 matching lines...) Expand all
855 mojo_routes[0]->is_local = false; 847 mojo_routes[0]->is_local = false;
856 mojo_routes[0]->off_the_record = false; 848 mojo_routes[0]->off_the_record = false;
857 mojo_routes[1] = interfaces::MediaRoute::New(); 849 mojo_routes[1] = interfaces::MediaRoute::New();
858 mojo_routes[1]->media_route_id = kRouteId2; 850 mojo_routes[1]->media_route_id = kRouteId2;
859 mojo_routes[1]->media_source = kSource; 851 mojo_routes[1]->media_source = kSource;
860 mojo_routes[1]->media_sink_id = kSinkId; 852 mojo_routes[1]->media_sink_id = kSinkId;
861 mojo_routes[1]->description = kDescription; 853 mojo_routes[1]->description = kDescription;
862 mojo_routes[1]->is_local = false; 854 mojo_routes[1]->is_local = false;
863 mojo_routes[1]->off_the_record = true; 855 mojo_routes[1]->off_the_record = true;
864 856
865 EXPECT_CALL(routes_observer, 857 EXPECT_CALL(routes_observer, OnRoutesUpdated(SequenceEquals(expected_routes),
866 OnRoutesUpdated(SequenceEquals(expected_routes), 858 expected_joinable_route_ids));
867 expected_joinable_route_ids));
868 EXPECT_CALL(extra_routes_observer, 859 EXPECT_CALL(extra_routes_observer,
869 OnRoutesUpdated(SequenceEquals(expected_routes), 860 OnRoutesUpdated(SequenceEquals(expected_routes),
870 expected_joinable_route_ids)); 861 expected_joinable_route_ids));
871 EXPECT_CALL(different_routes_observer, 862 EXPECT_CALL(different_routes_observer,
872 OnRoutesUpdated(SequenceEquals(expected_routes), 863 OnRoutesUpdated(SequenceEquals(expected_routes),
873 expected_joinable_route_ids)).Times(0); 864 expected_joinable_route_ids))
865 .Times(0);
874 media_router_proxy_->OnRoutesUpdated(std::move(mojo_routes), 866 media_router_proxy_->OnRoutesUpdated(std::move(mojo_routes),
875 media_source.id(), 867 media_source.id(),
876 std::move(mojo_joinable_routes)); 868 std::move(mojo_joinable_routes));
877 ProcessEventLoop(); 869 ProcessEventLoop();
878 870
879 EXPECT_CALL(mock_router, UnregisterMediaRoutesObserver(&routes_observer)); 871 EXPECT_CALL(mock_router, UnregisterMediaRoutesObserver(&routes_observer));
880 EXPECT_CALL(mock_router, 872 EXPECT_CALL(mock_router,
881 UnregisterMediaRoutesObserver(&extra_routes_observer)); 873 UnregisterMediaRoutesObserver(&extra_routes_observer));
882 EXPECT_CALL(mock_router, 874 EXPECT_CALL(mock_router,
883 UnregisterMediaRoutesObserver(&different_routes_observer)); 875 UnregisterMediaRoutesObserver(&different_routes_observer));
884 router()->UnregisterMediaRoutesObserver(&routes_observer); 876 router()->UnregisterMediaRoutesObserver(&routes_observer);
885 router()->UnregisterMediaRoutesObserver(&extra_routes_observer); 877 router()->UnregisterMediaRoutesObserver(&extra_routes_observer);
886 router()->UnregisterMediaRoutesObserver(&different_routes_observer); 878 router()->UnregisterMediaRoutesObserver(&different_routes_observer);
887 EXPECT_CALL(mock_media_route_provider_, 879 EXPECT_CALL(mock_media_route_provider_,
888 StopObservingMediaRoutes( 880 StopObservingMediaRoutes(mojo::String(media_source.id())))
889 mojo::String(media_source.id()))).Times(1); 881 .Times(1);
890 EXPECT_CALL(mock_media_route_provider_, 882 EXPECT_CALL(
891 StopObservingMediaRoutes( 883 mock_media_route_provider_,
892 mojo::String(different_media_source.id()))); 884 StopObservingMediaRoutes(mojo::String(different_media_source.id())));
893 ProcessEventLoop(); 885 ProcessEventLoop();
894 } 886 }
895 887
896 TEST_F(MediaRouterMojoImplTest, SendRouteMessage) { 888 TEST_F(MediaRouterMojoImplTest, SendRouteMessage) {
897 EXPECT_CALL( 889 EXPECT_CALL(
898 mock_media_route_provider_, 890 mock_media_route_provider_,
899 SendRouteMessage(mojo::String(kRouteId), mojo::String(kMessage), _)) 891 SendRouteMessage(mojo::String(kRouteId), mojo::String(kMessage), _))
900 .WillOnce(Invoke([]( 892 .WillOnce(Invoke([](
901 const MediaRoute::Id& route_id, const std::string& message, 893 const MediaRoute::Id& route_id, const std::string& message,
902 const interfaces::MediaRouteProvider::SendRouteMessageCallback& cb) { 894 const interfaces::MediaRouteProvider::SendRouteMessageCallback& cb) {
903 cb.Run(true); 895 cb.Run(true);
904 })); 896 }));
905 897
906 base::RunLoop run_loop; 898 base::RunLoop run_loop;
907 SendMessageCallbackHandler handler; 899 SendMessageCallbackHandler handler;
908 EXPECT_CALL(handler, Invoke(true)) 900 EXPECT_CALL(handler, Invoke(true))
909 .WillOnce(InvokeWithoutArgs([&run_loop]() { 901 .WillOnce(InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); }));
910 run_loop.Quit();
911 }));
912 router()->SendRouteMessage(kRouteId, kMessage, 902 router()->SendRouteMessage(kRouteId, kMessage,
913 base::Bind(&SendMessageCallbackHandler::Invoke, 903 base::Bind(&SendMessageCallbackHandler::Invoke,
914 base::Unretained(&handler))); 904 base::Unretained(&handler)));
915 run_loop.Run(); 905 run_loop.Run();
916 } 906 }
917 907
918 TEST_F(MediaRouterMojoImplTest, SendRouteBinaryMessage) { 908 TEST_F(MediaRouterMojoImplTest, SendRouteBinaryMessage) {
919 scoped_ptr<std::vector<uint8_t>> expected_binary_data( 909 scoped_ptr<std::vector<uint8_t>> expected_binary_data(
920 new std::vector<uint8_t>(kBinaryMessage, 910 new std::vector<uint8_t>(kBinaryMessage,
921 kBinaryMessage + arraysize(kBinaryMessage))); 911 kBinaryMessage + arraysize(kBinaryMessage)));
922 912
923 EXPECT_CALL(mock_media_route_provider_, 913 EXPECT_CALL(mock_media_route_provider_,
924 SendRouteBinaryMessageInternal(mojo::String(kRouteId), _, _)) 914 SendRouteBinaryMessageInternal(mojo::String(kRouteId), _, _))
925 .WillOnce(Invoke([]( 915 .WillOnce(Invoke([](
926 const MediaRoute::Id& route_id, const std::vector<uint8_t>& data, 916 const MediaRoute::Id& route_id, const std::vector<uint8_t>& data,
927 const interfaces::MediaRouteProvider::SendRouteMessageCallback& cb) { 917 const interfaces::MediaRouteProvider::SendRouteMessageCallback& cb) {
928 EXPECT_EQ( 918 EXPECT_EQ(
929 0, memcmp(kBinaryMessage, &(data[0]), arraysize(kBinaryMessage))); 919 0, memcmp(kBinaryMessage, &(data[0]), arraysize(kBinaryMessage)));
930 cb.Run(true); 920 cb.Run(true);
931 })); 921 }));
932 922
933 base::RunLoop run_loop; 923 base::RunLoop run_loop;
934 SendMessageCallbackHandler handler; 924 SendMessageCallbackHandler handler;
935 EXPECT_CALL(handler, Invoke(true)) 925 EXPECT_CALL(handler, Invoke(true))
936 .WillOnce(InvokeWithoutArgs([&run_loop]() { 926 .WillOnce(InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); }));
937 run_loop.Quit();
938 }));
939 router()->SendRouteBinaryMessage( 927 router()->SendRouteBinaryMessage(
940 kRouteId, std::move(expected_binary_data), 928 kRouteId, std::move(expected_binary_data),
941 base::Bind(&SendMessageCallbackHandler::Invoke, 929 base::Bind(&SendMessageCallbackHandler::Invoke,
942 base::Unretained(&handler))); 930 base::Unretained(&handler)));
943 run_loop.Run(); 931 run_loop.Run();
944 } 932 }
945 933
946 TEST_F(MediaRouterMojoImplTest, PresentationSessionMessagesSingleObserver) { 934 TEST_F(MediaRouterMojoImplTest, PresentationSessionMessagesSingleObserver) {
947 mojo::Array<interfaces::RouteMessagePtr> mojo_messages(2); 935 mojo::Array<interfaces::RouteMessagePtr> mojo_messages(2);
948 mojo_messages[0] = interfaces::RouteMessage::New(); 936 mojo_messages[0] = interfaces::RouteMessage::New();
(...skipping 14 matching lines...) Expand all
963 content::PresentationMessageType::ARRAY_BUFFER)); 951 content::PresentationMessageType::ARRAY_BUFFER));
964 message->data.reset(new std::vector<uint8_t>(1, 1)); 952 message->data.reset(new std::vector<uint8_t>(1, 1));
965 expected_messages.push_back(std::move(message)); 953 expected_messages.push_back(std::move(message));
966 954
967 base::RunLoop run_loop; 955 base::RunLoop run_loop;
968 MediaRoute::Id expected_route_id("foo"); 956 MediaRoute::Id expected_route_id("foo");
969 interfaces::MediaRouteProvider::ListenForRouteMessagesCallback mojo_callback; 957 interfaces::MediaRouteProvider::ListenForRouteMessagesCallback mojo_callback;
970 EXPECT_CALL(mock_media_route_provider_, 958 EXPECT_CALL(mock_media_route_provider_,
971 ListenForRouteMessages(Eq(expected_route_id), _)) 959 ListenForRouteMessages(Eq(expected_route_id), _))
972 .WillOnce(DoAll(SaveArg<1>(&mojo_callback), 960 .WillOnce(DoAll(SaveArg<1>(&mojo_callback),
973 InvokeWithoutArgs([&run_loop]() { 961 InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); })));
974 run_loop.Quit();
975 })));
976 962
977 // |pass_ownership| param is "true" here because there is only one observer. 963 // |pass_ownership| param is "true" here because there is only one observer.
978 ListenForMessagesCallbackHandler handler(std::move(expected_messages), true); 964 ListenForMessagesCallbackHandler handler(std::move(expected_messages), true);
979 965
980 EXPECT_CALL(handler, InvokeObserver()); 966 EXPECT_CALL(handler, InvokeObserver());
981 // Creating PresentationSessionMessagesObserver will register itself to the 967 // Creating PresentationSessionMessagesObserver will register itself to the
982 // MediaRouter, which in turn will start listening for route messages. 968 // MediaRouter, which in turn will start listening for route messages.
983 scoped_ptr<PresentationSessionMessagesObserver> observer( 969 scoped_ptr<PresentationSessionMessagesObserver> observer(
984 new PresentationSessionMessagesObserver( 970 new PresentationSessionMessagesObserver(
985 base::Bind(&ListenForMessagesCallbackHandler::Invoke, 971 base::Bind(&ListenForMessagesCallbackHandler::Invoke,
986 base::Unretained(&handler)), 972 base::Unretained(&handler)),
987 expected_route_id, router())); 973 expected_route_id, router()));
988 run_loop.Run(); 974 run_loop.Run();
989 975
990 base::RunLoop run_loop2; 976 base::RunLoop run_loop2;
991 // Simulate messages by invoking the saved mojo callback. 977 // Simulate messages by invoking the saved mojo callback.
992 // We expect one more ListenForRouteMessages call since |observer| was 978 // We expect one more ListenForRouteMessages call since |observer| was
993 // still registered when the first set of messages arrived. 979 // still registered when the first set of messages arrived.
994 mojo_callback.Run(std::move(mojo_messages), false); 980 mojo_callback.Run(std::move(mojo_messages), false);
995 interfaces::MediaRouteProvider::ListenForRouteMessagesCallback 981 interfaces::MediaRouteProvider::ListenForRouteMessagesCallback
996 mojo_callback_2; 982 mojo_callback_2;
997 EXPECT_CALL(mock_media_route_provider_, ListenForRouteMessages(_, _)) 983 EXPECT_CALL(mock_media_route_provider_, ListenForRouteMessages(_, _))
998 .WillOnce(DoAll(SaveArg<1>(&mojo_callback_2), 984 .WillOnce(DoAll(SaveArg<1>(&mojo_callback_2),
999 InvokeWithoutArgs([&run_loop2]() { 985 InvokeWithoutArgs([&run_loop2]() { run_loop2.Quit(); })));
1000 run_loop2.Quit();
1001 })));
1002 run_loop2.Run(); 986 run_loop2.Run();
1003 987
1004 base::RunLoop run_loop3; 988 base::RunLoop run_loop3;
1005 // Stop listening for messages. In particular, MediaRouterMojoImpl will not 989 // Stop listening for messages. In particular, MediaRouterMojoImpl will not
1006 // call ListenForRouteMessages again when it sees there are no more observers. 990 // call ListenForRouteMessages again when it sees there are no more observers.
1007 mojo::Array<interfaces::RouteMessagePtr> mojo_messages_2(1); 991 mojo::Array<interfaces::RouteMessagePtr> mojo_messages_2(1);
1008 mojo_messages_2[0] = interfaces::RouteMessage::New(); 992 mojo_messages_2[0] = interfaces::RouteMessage::New();
1009 mojo_messages_2[0]->type = interfaces::RouteMessage::Type::TEXT; 993 mojo_messages_2[0]->type = interfaces::RouteMessage::Type::TEXT;
1010 mojo_messages_2[0]->message = "foo"; 994 mojo_messages_2[0]->message = "foo";
1011 observer.reset(); 995 observer.reset();
1012 mojo_callback_2.Run(std::move(mojo_messages_2), false); 996 mojo_callback_2.Run(std::move(mojo_messages_2), false);
1013 EXPECT_CALL(mock_media_route_provider_, StopListeningForRouteMessages(_)) 997 EXPECT_CALL(mock_media_route_provider_, StopListeningForRouteMessages(_))
1014 .WillOnce(InvokeWithoutArgs([&run_loop3]() { 998 .WillOnce(InvokeWithoutArgs([&run_loop3]() { run_loop3.Quit(); }));
1015 run_loop3.Quit();
1016 }));
1017 run_loop3.Run(); 999 run_loop3.Run();
1018 } 1000 }
1019 1001
1020 TEST_F(MediaRouterMojoImplTest, PresentationSessionMessagesMultipleObservers) { 1002 TEST_F(MediaRouterMojoImplTest, PresentationSessionMessagesMultipleObservers) {
1021 mojo::Array<interfaces::RouteMessagePtr> mojo_messages(2); 1003 mojo::Array<interfaces::RouteMessagePtr> mojo_messages(2);
1022 mojo_messages[0] = interfaces::RouteMessage::New(); 1004 mojo_messages[0] = interfaces::RouteMessage::New();
1023 mojo_messages[0]->type = interfaces::RouteMessage::Type::TEXT; 1005 mojo_messages[0]->type = interfaces::RouteMessage::Type::TEXT;
1024 mojo_messages[0]->message = "text"; 1006 mojo_messages[0]->message = "text";
1025 mojo_messages[1] = interfaces::RouteMessage::New(); 1007 mojo_messages[1] = interfaces::RouteMessage::New();
1026 mojo_messages[1]->type = interfaces::RouteMessage::Type::BINARY; 1008 mojo_messages[1]->type = interfaces::RouteMessage::Type::BINARY;
(...skipping 10 matching lines...) Expand all
1037 content::PresentationMessageType::ARRAY_BUFFER)); 1019 content::PresentationMessageType::ARRAY_BUFFER));
1038 message->data.reset(new std::vector<uint8_t>(1, 1)); 1020 message->data.reset(new std::vector<uint8_t>(1, 1));
1039 expected_messages.push_back(std::move(message)); 1021 expected_messages.push_back(std::move(message));
1040 1022
1041 base::RunLoop run_loop; 1023 base::RunLoop run_loop;
1042 MediaRoute::Id expected_route_id("foo"); 1024 MediaRoute::Id expected_route_id("foo");
1043 interfaces::MediaRouteProvider::ListenForRouteMessagesCallback mojo_callback; 1025 interfaces::MediaRouteProvider::ListenForRouteMessagesCallback mojo_callback;
1044 EXPECT_CALL(mock_media_route_provider_, 1026 EXPECT_CALL(mock_media_route_provider_,
1045 ListenForRouteMessages(Eq(expected_route_id), _)) 1027 ListenForRouteMessages(Eq(expected_route_id), _))
1046 .WillOnce(DoAll(SaveArg<1>(&mojo_callback), 1028 .WillOnce(DoAll(SaveArg<1>(&mojo_callback),
1047 InvokeWithoutArgs([&run_loop]() { 1029 InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); })));
1048 run_loop.Quit();
1049 })));
1050 1030
1051 // |pass_ownership| param is "false" here because there are more than one 1031 // |pass_ownership| param is "false" here because there are more than one
1052 // observers. 1032 // observers.
1053 ListenForMessagesCallbackHandler handler(std::move(expected_messages), false); 1033 ListenForMessagesCallbackHandler handler(std::move(expected_messages), false);
1054 1034
1055 EXPECT_CALL(handler, InvokeObserver()).Times(2); 1035 EXPECT_CALL(handler, InvokeObserver()).Times(2);
1056 // Creating PresentationSessionMessagesObserver will register itself to the 1036 // Creating PresentationSessionMessagesObserver will register itself to the
1057 // MediaRouter, which in turn will start listening for route messages. 1037 // MediaRouter, which in turn will start listening for route messages.
1058 scoped_ptr<PresentationSessionMessagesObserver> observer1( 1038 scoped_ptr<PresentationSessionMessagesObserver> observer1(
1059 new PresentationSessionMessagesObserver( 1039 new PresentationSessionMessagesObserver(
1060 base::Bind(&ListenForMessagesCallbackHandler::Invoke, 1040 base::Bind(&ListenForMessagesCallbackHandler::Invoke,
1061 base::Unretained(&handler)), 1041 base::Unretained(&handler)),
1062 expected_route_id, router())); 1042 expected_route_id, router()));
1063 scoped_ptr<PresentationSessionMessagesObserver> observer2( 1043 scoped_ptr<PresentationSessionMessagesObserver> observer2(
1064 new PresentationSessionMessagesObserver( 1044 new PresentationSessionMessagesObserver(
1065 base::Bind(&ListenForMessagesCallbackHandler::Invoke, 1045 base::Bind(&ListenForMessagesCallbackHandler::Invoke,
1066 base::Unretained(&handler)), 1046 base::Unretained(&handler)),
1067 expected_route_id, router())); 1047 expected_route_id, router()));
1068 run_loop.Run(); 1048 run_loop.Run();
1069 1049
1070 base::RunLoop run_loop2; 1050 base::RunLoop run_loop2;
1071 // Simulate messages by invoking the saved mojo callback. 1051 // Simulate messages by invoking the saved mojo callback.
1072 // We expect one more ListenForRouteMessages call since |observer| was 1052 // We expect one more ListenForRouteMessages call since |observer| was
1073 // still registered when the first set of messages arrived. 1053 // still registered when the first set of messages arrived.
1074 mojo_callback.Run(std::move(mojo_messages), false); 1054 mojo_callback.Run(std::move(mojo_messages), false);
1075 interfaces::MediaRouteProvider::ListenForRouteMessagesCallback 1055 interfaces::MediaRouteProvider::ListenForRouteMessagesCallback
1076 mojo_callback_2; 1056 mojo_callback_2;
1077 EXPECT_CALL(mock_media_route_provider_, ListenForRouteMessages(_, _)) 1057 EXPECT_CALL(mock_media_route_provider_, ListenForRouteMessages(_, _))
1078 .WillOnce(DoAll(SaveArg<1>(&mojo_callback_2), 1058 .WillOnce(DoAll(SaveArg<1>(&mojo_callback_2),
1079 InvokeWithoutArgs([&run_loop2]() { 1059 InvokeWithoutArgs([&run_loop2]() { run_loop2.Quit(); })));
1080 run_loop2.Quit();
1081 })));
1082 run_loop2.Run(); 1060 run_loop2.Run();
1083 1061
1084 base::RunLoop run_loop3; 1062 base::RunLoop run_loop3;
1085 // Stop listening for messages. In particular, MediaRouterMojoImpl will not 1063 // Stop listening for messages. In particular, MediaRouterMojoImpl will not
1086 // call ListenForRouteMessages again when it sees there are no more observers. 1064 // call ListenForRouteMessages again when it sees there are no more observers.
1087 mojo::Array<interfaces::RouteMessagePtr> mojo_messages_2(1); 1065 mojo::Array<interfaces::RouteMessagePtr> mojo_messages_2(1);
1088 mojo_messages_2[0] = interfaces::RouteMessage::New(); 1066 mojo_messages_2[0] = interfaces::RouteMessage::New();
1089 mojo_messages_2[0]->type = interfaces::RouteMessage::Type::TEXT; 1067 mojo_messages_2[0]->type = interfaces::RouteMessage::Type::TEXT;
1090 mojo_messages_2[0]->message = "foo"; 1068 mojo_messages_2[0]->message = "foo";
1091 observer1.reset(); 1069 observer1.reset();
1092 observer2.reset(); 1070 observer2.reset();
1093 mojo_callback_2.Run(std::move(mojo_messages_2), false); 1071 mojo_callback_2.Run(std::move(mojo_messages_2), false);
1094 EXPECT_CALL(mock_media_route_provider_, StopListeningForRouteMessages(_)) 1072 EXPECT_CALL(mock_media_route_provider_, StopListeningForRouteMessages(_))
1095 .WillOnce(InvokeWithoutArgs([&run_loop3]() { 1073 .WillOnce(InvokeWithoutArgs([&run_loop3]() { run_loop3.Quit(); }));
1096 run_loop3.Quit();
1097 }));
1098 run_loop3.Run(); 1074 run_loop3.Run();
1099 } 1075 }
1100 1076
1101 TEST_F(MediaRouterMojoImplTest, PresentationSessionMessagesError) { 1077 TEST_F(MediaRouterMojoImplTest, PresentationSessionMessagesError) {
1102 MediaRoute::Id expected_route_id("foo"); 1078 MediaRoute::Id expected_route_id("foo");
1103 interfaces::MediaRouteProvider::ListenForRouteMessagesCallback mojo_callback; 1079 interfaces::MediaRouteProvider::ListenForRouteMessagesCallback mojo_callback;
1104 base::RunLoop run_loop; 1080 base::RunLoop run_loop;
1105 EXPECT_CALL(mock_media_route_provider_, 1081 EXPECT_CALL(mock_media_route_provider_,
1106 ListenForRouteMessages(Eq(expected_route_id), _)) 1082 ListenForRouteMessages(Eq(expected_route_id), _))
1107 .WillOnce(DoAll(SaveArg<1>(&mojo_callback), 1083 .WillOnce(DoAll(SaveArg<1>(&mojo_callback),
1108 InvokeWithoutArgs([&run_loop]() { 1084 InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); })));
1109 run_loop.Quit();
1110 })));
1111 1085
1112 ListenForMessagesCallbackHandler handler( 1086 ListenForMessagesCallbackHandler handler(
1113 ScopedVector<content::PresentationSessionMessage>(), true); 1087 ScopedVector<content::PresentationSessionMessage>(), true);
1114 1088
1115 // Creating PresentationSessionMessagesObserver will register itself to the 1089 // Creating PresentationSessionMessagesObserver will register itself to the
1116 // MediaRouter, which in turn will start listening for route messages. 1090 // MediaRouter, which in turn will start listening for route messages.
1117 scoped_ptr<PresentationSessionMessagesObserver> observer1( 1091 scoped_ptr<PresentationSessionMessagesObserver> observer1(
1118 new PresentationSessionMessagesObserver( 1092 new PresentationSessionMessagesObserver(
1119 base::Bind(&ListenForMessagesCallbackHandler::Invoke, 1093 base::Bind(&ListenForMessagesCallbackHandler::Invoke,
1120 base::Unretained(&handler)), 1094 base::Unretained(&handler)),
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
1189 } 1163 }
1190 1164
1191 TEST_F(MediaRouterMojoImplTest, QueuedWhileAsleep) { 1165 TEST_F(MediaRouterMojoImplTest, QueuedWhileAsleep) {
1192 base::RunLoop run_loop; 1166 base::RunLoop run_loop;
1193 EXPECT_CALL(mock_event_page_tracker_, IsEventPageSuspended(extension_id())) 1167 EXPECT_CALL(mock_event_page_tracker_, IsEventPageSuspended(extension_id()))
1194 .Times(2) 1168 .Times(2)
1195 .WillRepeatedly(Return(true)); 1169 .WillRepeatedly(Return(true));
1196 EXPECT_CALL(mock_event_page_tracker_, WakeEventPage(extension_id(), _)) 1170 EXPECT_CALL(mock_event_page_tracker_, WakeEventPage(extension_id(), _))
1197 .Times(2) 1171 .Times(2)
1198 .WillOnce(Return(true)) 1172 .WillOnce(Return(true))
1199 .WillOnce(DoAll(InvokeWithoutArgs([&run_loop]() { 1173 .WillOnce(DoAll(InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); }),
1200 run_loop.Quit(); 1174 Return(true)));
1201 }), Return(true)));
1202 router()->DetachRoute(kRouteId); 1175 router()->DetachRoute(kRouteId);
1203 router()->DetachRoute(kRouteId2); 1176 router()->DetachRoute(kRouteId2);
1204 run_loop.Run(); 1177 run_loop.Run();
1205 EXPECT_CALL(mock_event_page_tracker_, IsEventPageSuspended(extension_id())) 1178 EXPECT_CALL(mock_event_page_tracker_, IsEventPageSuspended(extension_id()))
1206 .Times(1) 1179 .Times(1)
1207 .WillRepeatedly(Return(false)); 1180 .WillRepeatedly(Return(false));
1208 EXPECT_CALL(mock_media_route_provider_, DetachRoute(mojo::String(kRouteId))); 1181 EXPECT_CALL(mock_media_route_provider_, DetachRoute(mojo::String(kRouteId)));
1209 EXPECT_CALL(mock_media_route_provider_, DetachRoute(mojo::String(kRouteId2))); 1182 EXPECT_CALL(mock_media_route_provider_, DetachRoute(mojo::String(kRouteId2)));
1210 ConnectProviderManagerService(); 1183 ConnectProviderManagerService();
1211 ProcessEventLoop(); 1184 ProcessEventLoop();
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
1267 *extension_); 1240 *extension_);
1268 } 1241 }
1269 1242
1270 void RegisterMediaRouteProvider() { 1243 void RegisterMediaRouteProvider() {
1271 media_router_proxy_->RegisterMediaRouteProvider( 1244 media_router_proxy_->RegisterMediaRouteProvider(
1272 std::move(media_route_provider_proxy_), 1245 std::move(media_route_provider_proxy_),
1273 base::Bind(&RegisterMediaRouteProviderHandler::Invoke, 1246 base::Bind(&RegisterMediaRouteProviderHandler::Invoke,
1274 base::Unretained(&provide_handler_))); 1247 base::Unretained(&provide_handler_)));
1275 } 1248 }
1276 1249
1277 void ProcessEventLoop() { 1250 void ProcessEventLoop() { message_loop_.RunUntilIdle(); }
1278 message_loop_.RunUntilIdle();
1279 }
1280 1251
1281 void ExpectWakeReasonBucketCount(MediaRouteProviderWakeReason reason, 1252 void ExpectWakeReasonBucketCount(MediaRouteProviderWakeReason reason,
1282 int expected_count) { 1253 int expected_count) {
1283 histogram_tester_.ExpectBucketCount("MediaRouter.Provider.WakeReason", 1254 histogram_tester_.ExpectBucketCount("MediaRouter.Provider.WakeReason",
1284 static_cast<int>(reason), 1255 static_cast<int>(reason),
1285 expected_count); 1256 expected_count);
1286 } 1257 }
1287 1258
1288 void ExpectVersionBucketCount(MediaRouteProviderVersion version, 1259 void ExpectVersionBucketCount(MediaRouteProviderVersion version,
1289 int expected_count) { 1260 int expected_count) {
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
1322 media_router_->DetachRoute(kRouteId); 1293 media_router_->DetachRoute(kRouteId);
1323 1294
1324 BindMediaRouteProvider(); 1295 BindMediaRouteProvider();
1325 1296
1326 base::RunLoop run_loop, run_loop2; 1297 base::RunLoop run_loop, run_loop2;
1327 // |mojo_media_router| signals its readiness to the MR by registering 1298 // |mojo_media_router| signals its readiness to the MR by registering
1328 // itself via RegisterMediaRouteProvider(). 1299 // itself via RegisterMediaRouteProvider().
1329 // Now that the |media_router| and |mojo_media_router| are fully initialized, 1300 // Now that the |media_router| and |mojo_media_router| are fully initialized,
1330 // the queued DetachRoute() call should be executed. 1301 // the queued DetachRoute() call should be executed.
1331 EXPECT_CALL(provide_handler_, Invoke(testing::Not(""))) 1302 EXPECT_CALL(provide_handler_, Invoke(testing::Not("")))
1332 .WillOnce(InvokeWithoutArgs([&run_loop]() { 1303 .WillOnce(InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); }));
1333 run_loop.Quit();
1334 }));
1335 EXPECT_CALL(*process_manager_, IsEventPageSuspended(extension_->id())) 1304 EXPECT_CALL(*process_manager_, IsEventPageSuspended(extension_->id()))
1336 .WillOnce(Return(false)); 1305 .WillOnce(Return(false));
1337 EXPECT_CALL(mock_media_route_provider_, EnableMdnsDiscovery()) 1306 EXPECT_CALL(mock_media_route_provider_, EnableMdnsDiscovery())
1338 .Times(AtMost(1)); 1307 .Times(AtMost(1));
1339 EXPECT_CALL(mock_media_route_provider_, DetachRoute(mojo::String(kRouteId))) 1308 EXPECT_CALL(mock_media_route_provider_, DetachRoute(mojo::String(kRouteId)))
1340 .WillOnce(InvokeWithoutArgs([&run_loop2]() { 1309 .WillOnce(InvokeWithoutArgs([&run_loop2]() { run_loop2.Quit(); }));
1341 run_loop2.Quit();
1342 }));
1343 RegisterMediaRouteProvider(); 1310 RegisterMediaRouteProvider();
1344 run_loop.Run(); 1311 run_loop.Run();
1345 run_loop2.Run(); 1312 run_loop2.Run();
1346 1313
1347 base::RunLoop run_loop3; 1314 base::RunLoop run_loop3;
1348 // Extension is suspended and re-awoken. 1315 // Extension is suspended and re-awoken.
1349 ResetMediaRouteProvider(); 1316 ResetMediaRouteProvider();
1350 EXPECT_CALL(*process_manager_, IsEventPageSuspended(extension_->id())) 1317 EXPECT_CALL(*process_manager_, IsEventPageSuspended(extension_->id()))
1351 .WillOnce(Return(true)); 1318 .WillOnce(Return(true));
1352 EXPECT_CALL(*process_manager_, WakeEventPage(extension_->id(), _)) 1319 EXPECT_CALL(*process_manager_, WakeEventPage(extension_->id(), _))
1353 .WillOnce(testing::DoAll( 1320 .WillOnce(testing::DoAll(
1354 media::RunCallback<1>(true), 1321 media::RunCallback<1>(true),
1355 InvokeWithoutArgs([&run_loop3]() { run_loop3.Quit(); }), 1322 InvokeWithoutArgs([&run_loop3]() { run_loop3.Quit(); }),
1356 Return(true))); 1323 Return(true)));
1357 media_router_->DetachRoute(kRouteId2); 1324 media_router_->DetachRoute(kRouteId2);
1358 run_loop3.Run(); 1325 run_loop3.Run();
1359 1326
1360 base::RunLoop run_loop4, run_loop5; 1327 base::RunLoop run_loop4, run_loop5;
1361 // RegisterMediaRouteProvider() is called. 1328 // RegisterMediaRouteProvider() is called.
1362 // The queued DetachRoute(kRouteId2) call should be executed. 1329 // The queued DetachRoute(kRouteId2) call should be executed.
1363 EXPECT_CALL(provide_handler_, Invoke(testing::Not(""))) 1330 EXPECT_CALL(provide_handler_, Invoke(testing::Not("")))
1364 .WillOnce(InvokeWithoutArgs([&run_loop4]() { 1331 .WillOnce(InvokeWithoutArgs([&run_loop4]() { run_loop4.Quit(); }));
1365 run_loop4.Quit();
1366 }));
1367 EXPECT_CALL(*process_manager_, IsEventPageSuspended(extension_->id())) 1332 EXPECT_CALL(*process_manager_, IsEventPageSuspended(extension_->id()))
1368 .WillOnce(Return(false)); 1333 .WillOnce(Return(false));
1369 EXPECT_CALL(mock_media_route_provider_, EnableMdnsDiscovery()) 1334 EXPECT_CALL(mock_media_route_provider_, EnableMdnsDiscovery())
1370 .Times(AtMost(1)); 1335 .Times(AtMost(1));
1371 EXPECT_CALL(mock_media_route_provider_, DetachRoute(mojo::String(kRouteId2))) 1336 EXPECT_CALL(mock_media_route_provider_, DetachRoute(mojo::String(kRouteId2)))
1372 .WillOnce(InvokeWithoutArgs([&run_loop5]() { 1337 .WillOnce(InvokeWithoutArgs([&run_loop5]() { run_loop5.Quit(); }));
1373 run_loop5.Quit();
1374 }));
1375 BindMediaRouteProvider(); 1338 BindMediaRouteProvider();
1376 RegisterMediaRouteProvider(); 1339 RegisterMediaRouteProvider();
1377 run_loop4.Run(); 1340 run_loop4.Run();
1378 run_loop5.Run(); 1341 run_loop5.Run();
1379 ExpectWakeReasonBucketCount(MediaRouteProviderWakeReason::DETACH_ROUTE, 1); 1342 ExpectWakeReasonBucketCount(MediaRouteProviderWakeReason::DETACH_ROUTE, 1);
1380 ExpectWakeupBucketCount(MediaRouteProviderWakeup::SUCCESS, 1); 1343 ExpectWakeupBucketCount(MediaRouteProviderWakeup::SUCCESS, 1);
1381 ExpectVersionBucketCount(MediaRouteProviderVersion::SAME_VERSION_AS_CHROME, 1344 ExpectVersionBucketCount(MediaRouteProviderVersion::SAME_VERSION_AS_CHROME,
1382 1); 1345 1);
1383 } 1346 }
1384 1347
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
1468 1431
1469 // The request queue size should not exceed |kMaxPendingRequests|. 1432 // The request queue size should not exceed |kMaxPendingRequests|.
1470 EXPECT_EQ(kMaxPendingRequests, media_router_->pending_requests_.size()); 1433 EXPECT_EQ(kMaxPendingRequests, media_router_->pending_requests_.size());
1471 1434
1472 base::RunLoop run_loop, run_loop2; 1435 base::RunLoop run_loop, run_loop2;
1473 size_t count = 0; 1436 size_t count = 0;
1474 // The oldest request should have been dropped, so we don't expect to see 1437 // The oldest request should have been dropped, so we don't expect to see
1475 // DetachRoute(kRouteId) here. 1438 // DetachRoute(kRouteId) here.
1476 BindMediaRouteProvider(); 1439 BindMediaRouteProvider();
1477 EXPECT_CALL(provide_handler_, Invoke(testing::Not(""))) 1440 EXPECT_CALL(provide_handler_, Invoke(testing::Not("")))
1478 .WillOnce(InvokeWithoutArgs([&run_loop]() { 1441 .WillOnce(InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); }));
1479 run_loop.Quit();
1480 }));
1481 EXPECT_CALL(*process_manager_, IsEventPageSuspended(extension_->id())); 1442 EXPECT_CALL(*process_manager_, IsEventPageSuspended(extension_->id()));
1482 EXPECT_CALL(mock_media_route_provider_, EnableMdnsDiscovery()) 1443 EXPECT_CALL(mock_media_route_provider_, EnableMdnsDiscovery())
1483 .Times(AtMost(1)); 1444 .Times(AtMost(1));
1484 EXPECT_CALL(mock_media_route_provider_, DetachRoute(mojo::String(kRouteId2))) 1445 EXPECT_CALL(mock_media_route_provider_, DetachRoute(mojo::String(kRouteId2)))
1485 .Times(kMaxPendingRequests) 1446 .Times(kMaxPendingRequests)
1486 .WillRepeatedly(InvokeWithoutArgs([&run_loop2, &count]() { 1447 .WillRepeatedly(InvokeWithoutArgs([&run_loop2, &count]() {
1487 if (++count == MediaRouterMojoImpl::kMaxPendingRequests) 1448 if (++count == MediaRouterMojoImpl::kMaxPendingRequests)
1488 run_loop2.Quit(); 1449 run_loop2.Quit();
1489 })); 1450 }));
1490 RegisterMediaRouteProvider(); 1451 RegisterMediaRouteProvider();
1491 run_loop.Run(); 1452 run_loop.Run();
1492 run_loop2.Run(); 1453 run_loop2.Run();
1493 ExpectVersionBucketCount(MediaRouteProviderVersion::SAME_VERSION_AS_CHROME, 1454 ExpectVersionBucketCount(MediaRouteProviderVersion::SAME_VERSION_AS_CHROME,
1494 1); 1455 1);
1495 } 1456 }
1496 1457
1497 #if defined(OS_WIN) 1458 #if defined(OS_WIN)
1498 TEST_F(MediaRouterMojoExtensionTest, EnableMdnsAfterEachRegister) { 1459 TEST_F(MediaRouterMojoExtensionTest, EnableMdnsAfterEachRegister) {
1499 // This should be queued since no MRPM is registered yet. 1460 // This should be queued since no MRPM is registered yet.
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
1554 BindMediaRouteProvider(); 1515 BindMediaRouteProvider();
1555 RegisterMediaRouteProvider(); 1516 RegisterMediaRouteProvider();
1556 run_loop4.Run(); 1517 run_loop4.Run();
1557 run_loop5.Run(); 1518 run_loop5.Run();
1558 // Always a no-op at this point. 1519 // Always a no-op at this point.
1559 media_router_->OnUserGesture(); 1520 media_router_->OnUserGesture();
1560 } 1521 }
1561 #endif 1522 #endif
1562 1523
1563 } // namespace media_router 1524 } // namespace media_router
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698