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> | 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" |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
76 | 76 |
77 return expected->is_binary() ? *expected->data == *actual->data | 77 return expected->is_binary() ? *expected->data == *actual->data |
78 : expected->message == actual->message; | 78 : expected->message == actual->message; |
79 } | 79 } |
80 | 80 |
81 interfaces::IssuePtr CreateMojoIssue(const std::string& title) { | 81 interfaces::IssuePtr CreateMojoIssue(const std::string& title) { |
82 interfaces::IssuePtr mojoIssue = interfaces::Issue::New(); | 82 interfaces::IssuePtr mojoIssue = interfaces::Issue::New(); |
83 mojoIssue->title = title; | 83 mojoIssue->title = title; |
84 mojoIssue->message = "msg"; | 84 mojoIssue->message = "msg"; |
85 mojoIssue->route_id = ""; | 85 mojoIssue->route_id = ""; |
86 mojoIssue->default_action = | 86 mojoIssue->default_action = interfaces::Issue::ActionType::DISMISS; |
87 interfaces::Issue::ActionType::ACTION_TYPE_DISMISS; | |
88 mojoIssue->secondary_actions = | 87 mojoIssue->secondary_actions = |
89 mojo::Array<interfaces::Issue::ActionType>::New(0); | 88 mojo::Array<interfaces::Issue::ActionType>::New(0); |
90 mojoIssue->severity = interfaces::Issue::Severity::SEVERITY_WARNING; | 89 mojoIssue->severity = interfaces::Issue::Severity::WARNING; |
91 mojoIssue->is_blocking = false; | 90 mojoIssue->is_blocking = false; |
92 mojoIssue->help_url = ""; | 91 mojoIssue->help_url = ""; |
93 return mojoIssue; | 92 return mojoIssue; |
94 } | 93 } |
95 | 94 |
96 } // namespace | 95 } // namespace |
97 | 96 |
98 class RouteResponseCallbackHandler { | 97 class RouteResponseCallbackHandler { |
99 public: | 98 public: |
100 MOCK_METHOD3(Invoke, | 99 MOCK_METHOD3(Invoke, |
(...skipping 359 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
460 })); | 459 })); |
461 media_router_proxy_->OnIssue(std::move(mojo_issue2)); | 460 media_router_proxy_->OnIssue(std::move(mojo_issue2)); |
462 run_loop2.Run(); | 461 run_loop2.Run(); |
463 | 462 |
464 issue_observer1.UnregisterObserver(); | 463 issue_observer1.UnregisterObserver(); |
465 issue_observer2.UnregisterObserver(); | 464 issue_observer2.UnregisterObserver(); |
466 } | 465 } |
467 | 466 |
468 TEST_F(MediaRouterMojoImplTest, RegisterAndUnregisterMediaSinksObserver) { | 467 TEST_F(MediaRouterMojoImplTest, RegisterAndUnregisterMediaSinksObserver) { |
469 router()->OnSinkAvailabilityUpdated( | 468 router()->OnSinkAvailabilityUpdated( |
470 interfaces::MediaRouter::SINK_AVAILABILITY_AVAILABLE); | 469 interfaces::MediaRouter::SinkAvailability::AVAILABLE); |
471 MediaSource media_source(kSource); | 470 MediaSource media_source(kSource); |
472 | 471 |
473 // These should only be called once even if there is more than one observer | 472 // These should only be called once even if there is more than one observer |
474 // for a given source. | 473 // for a given source. |
475 EXPECT_CALL(mock_media_route_provider_, | 474 EXPECT_CALL(mock_media_route_provider_, |
476 StartObservingMediaSinks(mojo::String(kSource))); | 475 StartObservingMediaSinks(mojo::String(kSource))); |
477 EXPECT_CALL(mock_media_route_provider_, | 476 EXPECT_CALL(mock_media_route_provider_, |
478 StartObservingMediaSinks(mojo::String(kSource2))); | 477 StartObservingMediaSinks(mojo::String(kSource2))); |
479 | 478 |
480 scoped_ptr<MockMediaSinksObserver> sinks_observer( | 479 scoped_ptr<MockMediaSinksObserver> sinks_observer( |
(...skipping 11 matching lines...) Expand all Loading... |
492 expected_sinks.push_back( | 491 expected_sinks.push_back( |
493 MediaSink(kSinkId, kSinkName, MediaSink::IconType::CAST)); | 492 MediaSink(kSinkId, kSinkName, MediaSink::IconType::CAST)); |
494 expected_sinks.push_back( | 493 expected_sinks.push_back( |
495 MediaSink(kSinkId2, kSinkName, MediaSink::IconType::CAST)); | 494 MediaSink(kSinkId2, kSinkName, MediaSink::IconType::CAST)); |
496 | 495 |
497 mojo::Array<interfaces::MediaSinkPtr> mojo_sinks(2); | 496 mojo::Array<interfaces::MediaSinkPtr> mojo_sinks(2); |
498 mojo_sinks[0] = interfaces::MediaSink::New(); | 497 mojo_sinks[0] = interfaces::MediaSink::New(); |
499 mojo_sinks[0]->sink_id = kSinkId; | 498 mojo_sinks[0]->sink_id = kSinkId; |
500 mojo_sinks[0]->name = kSinkName; | 499 mojo_sinks[0]->name = kSinkName; |
501 mojo_sinks[0]->icon_type = | 500 mojo_sinks[0]->icon_type = |
502 media_router::interfaces::MediaSink::IconType::ICON_TYPE_CAST; | 501 media_router::interfaces::MediaSink::IconType::CAST; |
503 mojo_sinks[1] = interfaces::MediaSink::New(); | 502 mojo_sinks[1] = interfaces::MediaSink::New(); |
504 mojo_sinks[1]->sink_id = kSinkId2; | 503 mojo_sinks[1]->sink_id = kSinkId2; |
505 mojo_sinks[1]->name = kSinkName; | 504 mojo_sinks[1]->name = kSinkName; |
506 mojo_sinks[1]->icon_type = | 505 mojo_sinks[1]->icon_type = |
507 media_router::interfaces::MediaSink::IconType::ICON_TYPE_CAST; | 506 media_router::interfaces::MediaSink::IconType::CAST; |
508 | 507 |
509 base::RunLoop run_loop; | 508 base::RunLoop run_loop; |
510 EXPECT_CALL(*sinks_observer, OnSinksReceived(SequenceEquals(expected_sinks))); | 509 EXPECT_CALL(*sinks_observer, OnSinksReceived(SequenceEquals(expected_sinks))); |
511 EXPECT_CALL(*extra_sinks_observer, | 510 EXPECT_CALL(*extra_sinks_observer, |
512 OnSinksReceived(SequenceEquals(expected_sinks))) | 511 OnSinksReceived(SequenceEquals(expected_sinks))) |
513 .WillOnce(InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); })); | 512 .WillOnce(InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); })); |
514 media_router_proxy_->OnSinksReceived(media_source.id(), | 513 media_router_proxy_->OnSinksReceived(media_source.id(), |
515 std::move(mojo_sinks)); | 514 std::move(mojo_sinks)); |
516 run_loop.Run(); | 515 run_loop.Run(); |
517 | 516 |
(...skipping 18 matching lines...) Expand all Loading... |
536 extra_sinks_observer.reset(); | 535 extra_sinks_observer.reset(); |
537 unrelated_sinks_observer.reset(); | 536 unrelated_sinks_observer.reset(); |
538 cached_sinks_observer.reset(); | 537 cached_sinks_observer.reset(); |
539 run_loop2.Run(); | 538 run_loop2.Run(); |
540 } | 539 } |
541 | 540 |
542 TEST_F(MediaRouterMojoImplTest, | 541 TEST_F(MediaRouterMojoImplTest, |
543 RegisterMediaSinksObserverWithAvailabilityChange) { | 542 RegisterMediaSinksObserverWithAvailabilityChange) { |
544 // When availability is UNAVAILABLE, no calls should be made to MRPM. | 543 // When availability is UNAVAILABLE, no calls should be made to MRPM. |
545 router()->OnSinkAvailabilityUpdated( | 544 router()->OnSinkAvailabilityUpdated( |
546 interfaces::MediaRouter::SINK_AVAILABILITY_UNAVAILABLE); | 545 interfaces::MediaRouter::SinkAvailability::UNAVAILABLE); |
547 MediaSource media_source(kSource); | 546 MediaSource media_source(kSource); |
548 scoped_ptr<MockMediaSinksObserver> sinks_observer( | 547 scoped_ptr<MockMediaSinksObserver> sinks_observer( |
549 new MockMediaSinksObserver(router(), media_source)); | 548 new MockMediaSinksObserver(router(), media_source)); |
550 EXPECT_CALL(*sinks_observer, OnSinksReceived(IsEmpty())); | 549 EXPECT_CALL(*sinks_observer, OnSinksReceived(IsEmpty())); |
551 EXPECT_TRUE(sinks_observer->Init()); | 550 EXPECT_TRUE(sinks_observer->Init()); |
552 MediaSource media_source2(kSource2); | 551 MediaSource media_source2(kSource2); |
553 scoped_ptr<MockMediaSinksObserver> sinks_observer2( | 552 scoped_ptr<MockMediaSinksObserver> sinks_observer2( |
554 new MockMediaSinksObserver(router(), media_source2)); | 553 new MockMediaSinksObserver(router(), media_source2)); |
555 EXPECT_CALL(*sinks_observer2, OnSinksReceived(IsEmpty())); | 554 EXPECT_CALL(*sinks_observer2, OnSinksReceived(IsEmpty())); |
556 EXPECT_TRUE(sinks_observer2->Init()); | 555 EXPECT_TRUE(sinks_observer2->Init()); |
557 EXPECT_CALL(mock_media_route_provider_, | 556 EXPECT_CALL(mock_media_route_provider_, |
558 StartObservingMediaSinks(mojo::String(kSource))) | 557 StartObservingMediaSinks(mojo::String(kSource))) |
559 .Times(0); | 558 .Times(0); |
560 EXPECT_CALL(mock_media_route_provider_, | 559 EXPECT_CALL(mock_media_route_provider_, |
561 StartObservingMediaSinks(mojo::String(kSource2))) | 560 StartObservingMediaSinks(mojo::String(kSource2))) |
562 .Times(0); | 561 .Times(0); |
563 ProcessEventLoop(); | 562 ProcessEventLoop(); |
564 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&mock_media_route_provider_)); | 563 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&mock_media_route_provider_)); |
565 | 564 |
566 // When availability transitions AVAILABLE, existing sink queries should be | 565 // When availability transitions AVAILABLE, existing sink queries should be |
567 // sent to MRPM. | 566 // sent to MRPM. |
568 router()->OnSinkAvailabilityUpdated( | 567 router()->OnSinkAvailabilityUpdated( |
569 interfaces::MediaRouter::SINK_AVAILABILITY_AVAILABLE); | 568 interfaces::MediaRouter::SinkAvailability::AVAILABLE); |
570 EXPECT_CALL(mock_media_route_provider_, | 569 EXPECT_CALL(mock_media_route_provider_, |
571 StartObservingMediaSinks(mojo::String(kSource))) | 570 StartObservingMediaSinks(mojo::String(kSource))) |
572 .Times(1); | 571 .Times(1); |
573 EXPECT_CALL(mock_media_route_provider_, | 572 EXPECT_CALL(mock_media_route_provider_, |
574 StartObservingMediaSinks(mojo::String(kSource2))) | 573 StartObservingMediaSinks(mojo::String(kSource2))) |
575 .Times(1); | 574 .Times(1); |
576 ProcessEventLoop(); | 575 ProcessEventLoop(); |
577 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&mock_media_route_provider_)); | 576 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&mock_media_route_provider_)); |
578 | 577 |
579 // No change in availability status; no calls should be made to MRPM. | 578 // No change in availability status; no calls should be made to MRPM. |
580 router()->OnSinkAvailabilityUpdated( | 579 router()->OnSinkAvailabilityUpdated( |
581 interfaces::MediaRouter::SINK_AVAILABILITY_AVAILABLE); | 580 interfaces::MediaRouter::SinkAvailability::AVAILABLE); |
582 EXPECT_CALL(mock_media_route_provider_, | 581 EXPECT_CALL(mock_media_route_provider_, |
583 StartObservingMediaSinks(mojo::String(kSource))) | 582 StartObservingMediaSinks(mojo::String(kSource))) |
584 .Times(0); | 583 .Times(0); |
585 EXPECT_CALL(mock_media_route_provider_, | 584 EXPECT_CALL(mock_media_route_provider_, |
586 StartObservingMediaSinks(mojo::String(kSource2))) | 585 StartObservingMediaSinks(mojo::String(kSource2))) |
587 .Times(0); | 586 .Times(0); |
588 ProcessEventLoop(); | 587 ProcessEventLoop(); |
589 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&mock_media_route_provider_)); | 588 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&mock_media_route_provider_)); |
590 | 589 |
591 // When availability is UNAVAILABLE, queries are already removed from MRPM. | 590 // When availability is UNAVAILABLE, queries are already removed from MRPM. |
592 // Unregistering observer won't result in call to MRPM to remove query. | 591 // Unregistering observer won't result in call to MRPM to remove query. |
593 router()->OnSinkAvailabilityUpdated( | 592 router()->OnSinkAvailabilityUpdated( |
594 interfaces::MediaRouter::SINK_AVAILABILITY_UNAVAILABLE); | 593 interfaces::MediaRouter::SinkAvailability::UNAVAILABLE); |
595 EXPECT_CALL(mock_media_route_provider_, | 594 EXPECT_CALL(mock_media_route_provider_, |
596 StopObservingMediaSinks(mojo::String(kSource))) | 595 StopObservingMediaSinks(mojo::String(kSource))) |
597 .Times(0); | 596 .Times(0); |
598 sinks_observer.reset(); | 597 sinks_observer.reset(); |
599 ProcessEventLoop(); | 598 ProcessEventLoop(); |
600 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&mock_media_route_provider_)); | 599 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&mock_media_route_provider_)); |
601 | 600 |
602 // When availability is AVAILABLE, call is made to MRPM to remove query when | 601 // When availability is AVAILABLE, call is made to MRPM to remove query when |
603 // observer is unregistered. | 602 // observer is unregistered. |
604 router()->OnSinkAvailabilityUpdated( | 603 router()->OnSinkAvailabilityUpdated( |
605 interfaces::MediaRouter::SINK_AVAILABILITY_AVAILABLE); | 604 interfaces::MediaRouter::SinkAvailability::AVAILABLE); |
606 EXPECT_CALL(mock_media_route_provider_, | 605 EXPECT_CALL(mock_media_route_provider_, |
607 StopObservingMediaSinks(mojo::String(kSource2))); | 606 StopObservingMediaSinks(mojo::String(kSource2))); |
608 sinks_observer2.reset(); | 607 sinks_observer2.reset(); |
609 ProcessEventLoop(); | 608 ProcessEventLoop(); |
610 } | 609 } |
611 | 610 |
612 TEST_F(MediaRouterMojoImplTest, RegisterAndUnregisterMediaRoutesObserver) { | 611 TEST_F(MediaRouterMojoImplTest, RegisterAndUnregisterMediaRoutesObserver) { |
613 MockMediaRouter mock_router; | 612 MockMediaRouter mock_router; |
614 MediaSource media_source(kSource); | 613 MediaSource media_source(kSource); |
615 MediaSource different_media_source(kSource2); | 614 MediaSource different_media_source(kSource2); |
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
739 router()->SendRouteBinaryMessage( | 738 router()->SendRouteBinaryMessage( |
740 kRouteId, std::move(expected_binary_data), | 739 kRouteId, std::move(expected_binary_data), |
741 base::Bind(&SendMessageCallbackHandler::Invoke, | 740 base::Bind(&SendMessageCallbackHandler::Invoke, |
742 base::Unretained(&handler))); | 741 base::Unretained(&handler))); |
743 run_loop.Run(); | 742 run_loop.Run(); |
744 } | 743 } |
745 | 744 |
746 TEST_F(MediaRouterMojoImplTest, PresentationSessionMessagesSingleObserver) { | 745 TEST_F(MediaRouterMojoImplTest, PresentationSessionMessagesSingleObserver) { |
747 mojo::Array<interfaces::RouteMessagePtr> mojo_messages(2); | 746 mojo::Array<interfaces::RouteMessagePtr> mojo_messages(2); |
748 mojo_messages[0] = interfaces::RouteMessage::New(); | 747 mojo_messages[0] = interfaces::RouteMessage::New(); |
749 mojo_messages[0]->type = interfaces::RouteMessage::Type::TYPE_TEXT; | 748 mojo_messages[0]->type = interfaces::RouteMessage::Type::TEXT; |
750 mojo_messages[0]->message = "text"; | 749 mojo_messages[0]->message = "text"; |
751 mojo_messages[1] = interfaces::RouteMessage::New(); | 750 mojo_messages[1] = interfaces::RouteMessage::New(); |
752 mojo_messages[1]->type = interfaces::RouteMessage::Type::TYPE_BINARY; | 751 mojo_messages[1]->type = interfaces::RouteMessage::Type::BINARY; |
753 mojo_messages[1]->data.push_back(1); | 752 mojo_messages[1]->data.push_back(1); |
754 | 753 |
755 ScopedVector<content::PresentationSessionMessage> expected_messages; | 754 ScopedVector<content::PresentationSessionMessage> expected_messages; |
756 scoped_ptr<content::PresentationSessionMessage> message; | 755 scoped_ptr<content::PresentationSessionMessage> message; |
757 message.reset(new content::PresentationSessionMessage( | 756 message.reset(new content::PresentationSessionMessage( |
758 content::PresentationMessageType::TEXT)); | 757 content::PresentationMessageType::TEXT)); |
759 message->message = "text"; | 758 message->message = "text"; |
760 expected_messages.push_back(std::move(message)); | 759 expected_messages.push_back(std::move(message)); |
761 | 760 |
762 message.reset(new content::PresentationSessionMessage( | 761 message.reset(new content::PresentationSessionMessage( |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
799 InvokeWithoutArgs([&run_loop2]() { | 798 InvokeWithoutArgs([&run_loop2]() { |
800 run_loop2.Quit(); | 799 run_loop2.Quit(); |
801 }))); | 800 }))); |
802 run_loop2.Run(); | 801 run_loop2.Run(); |
803 | 802 |
804 base::RunLoop run_loop3; | 803 base::RunLoop run_loop3; |
805 // Stop listening for messages. In particular, MediaRouterMojoImpl will not | 804 // Stop listening for messages. In particular, MediaRouterMojoImpl will not |
806 // call ListenForRouteMessages again when it sees there are no more observers. | 805 // call ListenForRouteMessages again when it sees there are no more observers. |
807 mojo::Array<interfaces::RouteMessagePtr> mojo_messages_2(1); | 806 mojo::Array<interfaces::RouteMessagePtr> mojo_messages_2(1); |
808 mojo_messages_2[0] = interfaces::RouteMessage::New(); | 807 mojo_messages_2[0] = interfaces::RouteMessage::New(); |
809 mojo_messages_2[0]->type = interfaces::RouteMessage::Type::TYPE_TEXT; | 808 mojo_messages_2[0]->type = interfaces::RouteMessage::Type::TEXT; |
810 mojo_messages_2[0]->message = "foo"; | 809 mojo_messages_2[0]->message = "foo"; |
811 observer.reset(); | 810 observer.reset(); |
812 mojo_callback_2.Run(std::move(mojo_messages_2), false); | 811 mojo_callback_2.Run(std::move(mojo_messages_2), false); |
813 EXPECT_CALL(mock_media_route_provider_, StopListeningForRouteMessages(_)) | 812 EXPECT_CALL(mock_media_route_provider_, StopListeningForRouteMessages(_)) |
814 .WillOnce(InvokeWithoutArgs([&run_loop3]() { | 813 .WillOnce(InvokeWithoutArgs([&run_loop3]() { |
815 run_loop3.Quit(); | 814 run_loop3.Quit(); |
816 })); | 815 })); |
817 run_loop3.Run(); | 816 run_loop3.Run(); |
818 } | 817 } |
819 | 818 |
820 TEST_F(MediaRouterMojoImplTest, PresentationSessionMessagesMultipleObservers) { | 819 TEST_F(MediaRouterMojoImplTest, PresentationSessionMessagesMultipleObservers) { |
821 mojo::Array<interfaces::RouteMessagePtr> mojo_messages(2); | 820 mojo::Array<interfaces::RouteMessagePtr> mojo_messages(2); |
822 mojo_messages[0] = interfaces::RouteMessage::New(); | 821 mojo_messages[0] = interfaces::RouteMessage::New(); |
823 mojo_messages[0]->type = interfaces::RouteMessage::Type::TYPE_TEXT; | 822 mojo_messages[0]->type = interfaces::RouteMessage::Type::TEXT; |
824 mojo_messages[0]->message = "text"; | 823 mojo_messages[0]->message = "text"; |
825 mojo_messages[1] = interfaces::RouteMessage::New(); | 824 mojo_messages[1] = interfaces::RouteMessage::New(); |
826 mojo_messages[1]->type = interfaces::RouteMessage::Type::TYPE_BINARY; | 825 mojo_messages[1]->type = interfaces::RouteMessage::Type::BINARY; |
827 mojo_messages[1]->data.push_back(1); | 826 mojo_messages[1]->data.push_back(1); |
828 | 827 |
829 ScopedVector<content::PresentationSessionMessage> expected_messages; | 828 ScopedVector<content::PresentationSessionMessage> expected_messages; |
830 scoped_ptr<content::PresentationSessionMessage> message; | 829 scoped_ptr<content::PresentationSessionMessage> message; |
831 message.reset(new content::PresentationSessionMessage( | 830 message.reset(new content::PresentationSessionMessage( |
832 content::PresentationMessageType::TEXT)); | 831 content::PresentationMessageType::TEXT)); |
833 message->message = "text"; | 832 message->message = "text"; |
834 expected_messages.push_back(std::move(message)); | 833 expected_messages.push_back(std::move(message)); |
835 | 834 |
836 message.reset(new content::PresentationSessionMessage( | 835 message.reset(new content::PresentationSessionMessage( |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
879 InvokeWithoutArgs([&run_loop2]() { | 878 InvokeWithoutArgs([&run_loop2]() { |
880 run_loop2.Quit(); | 879 run_loop2.Quit(); |
881 }))); | 880 }))); |
882 run_loop2.Run(); | 881 run_loop2.Run(); |
883 | 882 |
884 base::RunLoop run_loop3; | 883 base::RunLoop run_loop3; |
885 // Stop listening for messages. In particular, MediaRouterMojoImpl will not | 884 // Stop listening for messages. In particular, MediaRouterMojoImpl will not |
886 // call ListenForRouteMessages again when it sees there are no more observers. | 885 // call ListenForRouteMessages again when it sees there are no more observers. |
887 mojo::Array<interfaces::RouteMessagePtr> mojo_messages_2(1); | 886 mojo::Array<interfaces::RouteMessagePtr> mojo_messages_2(1); |
888 mojo_messages_2[0] = interfaces::RouteMessage::New(); | 887 mojo_messages_2[0] = interfaces::RouteMessage::New(); |
889 mojo_messages_2[0]->type = interfaces::RouteMessage::Type::TYPE_TEXT; | 888 mojo_messages_2[0]->type = interfaces::RouteMessage::Type::TEXT; |
890 mojo_messages_2[0]->message = "foo"; | 889 mojo_messages_2[0]->message = "foo"; |
891 observer1.reset(); | 890 observer1.reset(); |
892 observer2.reset(); | 891 observer2.reset(); |
893 mojo_callback_2.Run(std::move(mojo_messages_2), false); | 892 mojo_callback_2.Run(std::move(mojo_messages_2), false); |
894 EXPECT_CALL(mock_media_route_provider_, StopListeningForRouteMessages(_)) | 893 EXPECT_CALL(mock_media_route_provider_, StopListeningForRouteMessages(_)) |
895 .WillOnce(InvokeWithoutArgs([&run_loop3]() { | 894 .WillOnce(InvokeWithoutArgs([&run_loop3]() { |
896 run_loop3.Quit(); | 895 run_loop3.Quit(); |
897 })); | 896 })); |
898 run_loop3.Run(); | 897 run_loop3.Run(); |
899 } | 898 } |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
940 route_id, | 939 route_id, |
941 base::Bind(&MockPresentationConnectionStateChangedCallback::Run, | 940 base::Bind(&MockPresentationConnectionStateChangedCallback::Run, |
942 base::Unretained(&callback))); | 941 base::Unretained(&callback))); |
943 | 942 |
944 base::RunLoop run_loop; | 943 base::RunLoop run_loop; |
945 EXPECT_CALL(callback, Run(content::PRESENTATION_CONNECTION_STATE_CLOSED)) | 944 EXPECT_CALL(callback, Run(content::PRESENTATION_CONNECTION_STATE_CLOSED)) |
946 .WillOnce(InvokeWithoutArgs([&run_loop]() { | 945 .WillOnce(InvokeWithoutArgs([&run_loop]() { |
947 run_loop.Quit(); | 946 run_loop.Quit(); |
948 })); | 947 })); |
949 media_router_proxy_->OnPresentationConnectionStateChanged( | 948 media_router_proxy_->OnPresentationConnectionStateChanged( |
950 route_id, | 949 route_id, PresentationConnectionState::CLOSED); |
951 PresentationConnectionState::PRESENTATION_CONNECTION_STATE_CLOSED); | |
952 run_loop.Run(); | 950 run_loop.Run(); |
953 | 951 |
954 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&callback)); | 952 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&callback)); |
955 | 953 |
956 base::RunLoop run_loop2; | 954 base::RunLoop run_loop2; |
957 // Right now we don't keep track of previous state so the callback will be | 955 // Right now we don't keep track of previous state so the callback will be |
958 // invoked with the same state again. | 956 // invoked with the same state again. |
959 EXPECT_CALL(callback, Run(content::PRESENTATION_CONNECTION_STATE_CLOSED)) | 957 EXPECT_CALL(callback, Run(content::PRESENTATION_CONNECTION_STATE_CLOSED)) |
960 .WillOnce(InvokeWithoutArgs([&run_loop2]() { | 958 .WillOnce(InvokeWithoutArgs([&run_loop2]() { |
961 run_loop2.Quit(); | 959 run_loop2.Quit(); |
962 })); | 960 })); |
963 media_router_proxy_->OnPresentationConnectionStateChanged( | 961 media_router_proxy_->OnPresentationConnectionStateChanged( |
964 route_id, | 962 route_id, PresentationConnectionState::CLOSED); |
965 PresentationConnectionState::PRESENTATION_CONNECTION_STATE_CLOSED); | |
966 run_loop2.Run(); | 963 run_loop2.Run(); |
967 | 964 |
968 // Callback has been removed, so we don't expect it to be called anymore. | 965 // Callback has been removed, so we don't expect it to be called anymore. |
969 subscription.reset(); | 966 subscription.reset(); |
970 EXPECT_TRUE(router()->presentation_connection_state_callbacks_.empty()); | 967 EXPECT_TRUE(router()->presentation_connection_state_callbacks_.empty()); |
971 | 968 |
972 EXPECT_CALL(callback, Run(content::PRESENTATION_CONNECTION_STATE_CLOSED)) | 969 EXPECT_CALL(callback, Run(content::PRESENTATION_CONNECTION_STATE_CLOSED)) |
973 .Times(0); | 970 .Times(0); |
974 media_router_proxy_->OnPresentationConnectionStateChanged( | 971 media_router_proxy_->OnPresentationConnectionStateChanged( |
975 route_id, | 972 route_id, PresentationConnectionState::CLOSED); |
976 PresentationConnectionState::PRESENTATION_CONNECTION_STATE_CLOSED); | |
977 ProcessEventLoop(); | 973 ProcessEventLoop(); |
978 } | 974 } |
979 | 975 |
980 TEST_F(MediaRouterMojoImplTest, HasLocalRoute) { | 976 TEST_F(MediaRouterMojoImplTest, HasLocalRoute) { |
981 EXPECT_FALSE(router()->HasLocalDisplayRoute()); | 977 EXPECT_FALSE(router()->HasLocalDisplayRoute()); |
982 interfaces::MediaRoutePtr mojo_route1 = interfaces::MediaRoute::New(); | 978 interfaces::MediaRoutePtr mojo_route1 = interfaces::MediaRoute::New(); |
983 mojo_route1->media_route_id = "routeId1"; | 979 mojo_route1->media_route_id = "routeId1"; |
984 mojo_route1->media_sink_id = "sinkId"; | 980 mojo_route1->media_sink_id = "sinkId"; |
985 mojo_route1->is_local = false; | 981 mojo_route1->is_local = false; |
986 mojo_route1->for_display = false; | 982 mojo_route1->for_display = false; |
(...skipping 294 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1281 .WillRepeatedly(InvokeWithoutArgs([&run_loop2, &count]() { | 1277 .WillRepeatedly(InvokeWithoutArgs([&run_loop2, &count]() { |
1282 if (++count == MediaRouterMojoImpl::kMaxPendingRequests) | 1278 if (++count == MediaRouterMojoImpl::kMaxPendingRequests) |
1283 run_loop2.Quit(); | 1279 run_loop2.Quit(); |
1284 })); | 1280 })); |
1285 RegisterMediaRouteProvider(); | 1281 RegisterMediaRouteProvider(); |
1286 run_loop.Run(); | 1282 run_loop.Run(); |
1287 run_loop2.Run(); | 1283 run_loop2.Run(); |
1288 } | 1284 } |
1289 | 1285 |
1290 } // namespace media_router | 1286 } // namespace media_router |
OLD | NEW |