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 454 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
465 issue_observer2.UnregisterObserver(); | 465 issue_observer2.UnregisterObserver(); |
466 } | 466 } |
467 | 467 |
468 TEST_F(MediaRouterMojoImplTest, RegisterAndUnregisterMediaSinksObserver) { | 468 TEST_F(MediaRouterMojoImplTest, RegisterAndUnregisterMediaSinksObserver) { |
469 router()->OnSinkAvailabilityUpdated( | 469 router()->OnSinkAvailabilityUpdated( |
470 interfaces::MediaRouter::SINK_AVAILABILITY_AVAILABLE); | 470 interfaces::MediaRouter::SINK_AVAILABILITY_AVAILABLE); |
471 MediaSource media_source(kSource); | 471 MediaSource media_source(kSource); |
472 | 472 |
473 // These should only be called once even if there is more than one observer | 473 // These should only be called once even if there is more than one observer |
474 // for a given source. | 474 // for a given source. |
| 475 base::RunLoop run_loop; |
475 EXPECT_CALL(mock_media_route_provider_, | 476 EXPECT_CALL(mock_media_route_provider_, |
476 StartObservingMediaSinks(mojo::String(kSource))); | 477 StartObservingMediaSinks(mojo::String(kSource))); |
477 EXPECT_CALL(mock_media_route_provider_, | 478 EXPECT_CALL(mock_media_route_provider_, |
478 StartObservingMediaSinks(mojo::String(kSource2))); | 479 StartObservingMediaSinks(mojo::String(kSource2))) |
| 480 .WillOnce(InvokeWithoutArgs([&run_loop]() { |
| 481 run_loop.Quit(); |
| 482 })); |
479 | 483 |
480 scoped_ptr<MockMediaSinksObserver> sinks_observer( | 484 scoped_ptr<MockMediaSinksObserver> sinks_observer( |
481 new MockMediaSinksObserver(router(), media_source)); | 485 new MockMediaSinksObserver(router(), media_source)); |
482 EXPECT_TRUE(sinks_observer->Init()); | 486 EXPECT_TRUE(sinks_observer->Init()); |
483 scoped_ptr<MockMediaSinksObserver> extra_sinks_observer( | 487 scoped_ptr<MockMediaSinksObserver> extra_sinks_observer( |
484 new MockMediaSinksObserver(router(), media_source)); | 488 new MockMediaSinksObserver(router(), media_source)); |
485 EXPECT_TRUE(extra_sinks_observer->Init()); | 489 EXPECT_TRUE(extra_sinks_observer->Init()); |
486 scoped_ptr<MockMediaSinksObserver> unrelated_sinks_observer( | 490 scoped_ptr<MockMediaSinksObserver> unrelated_sinks_observer( |
487 new MockMediaSinksObserver(router(), MediaSource(kSource2))); | 491 new MockMediaSinksObserver(router(), MediaSource(kSource2))); |
488 EXPECT_TRUE(unrelated_sinks_observer->Init()); | 492 EXPECT_TRUE(unrelated_sinks_observer->Init()); |
489 ProcessEventLoop(); | 493 run_loop.Run(); |
490 | 494 |
491 std::vector<MediaSink> expected_sinks; | 495 std::vector<MediaSink> expected_sinks; |
492 expected_sinks.push_back( | 496 expected_sinks.push_back( |
493 MediaSink(kSinkId, kSinkName, MediaSink::IconType::CAST)); | 497 MediaSink(kSinkId, kSinkName, MediaSink::IconType::CAST)); |
494 expected_sinks.push_back( | 498 expected_sinks.push_back( |
495 MediaSink(kSinkId2, kSinkName, MediaSink::IconType::CAST)); | 499 MediaSink(kSinkId2, kSinkName, MediaSink::IconType::CAST)); |
496 | 500 |
497 mojo::Array<interfaces::MediaSinkPtr> mojo_sinks(2); | 501 mojo::Array<interfaces::MediaSinkPtr> mojo_sinks(2); |
498 mojo_sinks[0] = interfaces::MediaSink::New(); | 502 mojo_sinks[0] = interfaces::MediaSink::New(); |
499 mojo_sinks[0]->sink_id = kSinkId; | 503 mojo_sinks[0]->sink_id = kSinkId; |
500 mojo_sinks[0]->name = kSinkName; | 504 mojo_sinks[0]->name = kSinkName; |
501 mojo_sinks[0]->icon_type = | 505 mojo_sinks[0]->icon_type = |
502 media_router::interfaces::MediaSink::IconType::ICON_TYPE_CAST; | 506 media_router::interfaces::MediaSink::IconType::ICON_TYPE_CAST; |
503 mojo_sinks[1] = interfaces::MediaSink::New(); | 507 mojo_sinks[1] = interfaces::MediaSink::New(); |
504 mojo_sinks[1]->sink_id = kSinkId2; | 508 mojo_sinks[1]->sink_id = kSinkId2; |
505 mojo_sinks[1]->name = kSinkName; | 509 mojo_sinks[1]->name = kSinkName; |
506 mojo_sinks[1]->icon_type = | 510 mojo_sinks[1]->icon_type = |
507 media_router::interfaces::MediaSink::IconType::ICON_TYPE_CAST; | 511 media_router::interfaces::MediaSink::IconType::ICON_TYPE_CAST; |
508 | 512 |
509 base::RunLoop run_loop; | 513 base::RunLoop run_loop2; |
510 EXPECT_CALL(*sinks_observer, OnSinksReceived(SequenceEquals(expected_sinks))); | 514 EXPECT_CALL(*sinks_observer, OnSinksReceived(SequenceEquals(expected_sinks))); |
511 EXPECT_CALL(*extra_sinks_observer, | 515 EXPECT_CALL(*extra_sinks_observer, |
512 OnSinksReceived(SequenceEquals(expected_sinks))) | 516 OnSinksReceived(SequenceEquals(expected_sinks))) |
513 .WillOnce(InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); })); | 517 .WillOnce(InvokeWithoutArgs([&run_loop2]() { run_loop2.Quit(); })); |
514 media_router_proxy_->OnSinksReceived(media_source.id(), | 518 media_router_proxy_->OnSinksReceived(media_source.id(), |
515 std::move(mojo_sinks)); | 519 std::move(mojo_sinks)); |
516 run_loop.Run(); | 520 run_loop2.Run(); |
517 | 521 |
518 // Since the MediaRouterMojoImpl has already received results for | 522 // Since the MediaRouterMojoImpl has already received results for |
519 // |media_source|, return cached results to observers that are subsequently | 523 // |media_source|, return cached results to observers that are subsequently |
520 // registered. | 524 // registered. |
521 scoped_ptr<MockMediaSinksObserver> cached_sinks_observer( | 525 scoped_ptr<MockMediaSinksObserver> cached_sinks_observer( |
522 new MockMediaSinksObserver(router(), media_source)); | 526 new MockMediaSinksObserver(router(), media_source)); |
523 EXPECT_CALL(*cached_sinks_observer, | 527 EXPECT_CALL(*cached_sinks_observer, |
524 OnSinksReceived(SequenceEquals(expected_sinks))); | 528 OnSinksReceived(SequenceEquals(expected_sinks))); |
525 EXPECT_TRUE(cached_sinks_observer->Init()); | 529 EXPECT_TRUE(cached_sinks_observer->Init()); |
526 | 530 |
527 base::RunLoop run_loop2; | 531 base::RunLoop run_loop3, run_loop4; |
528 EXPECT_CALL(mock_media_route_provider_, | 532 EXPECT_CALL(mock_media_route_provider_, |
529 StopObservingMediaSinks(mojo::String(kSource))); | 533 StopObservingMediaSinks(mojo::String(kSource))) |
| 534 .WillOnce(InvokeWithoutArgs([&run_loop3]() { |
| 535 run_loop3.Quit(); |
| 536 })); |
530 EXPECT_CALL(mock_media_route_provider_, | 537 EXPECT_CALL(mock_media_route_provider_, |
531 StopObservingMediaSinks(mojo::String(kSource2))) | 538 StopObservingMediaSinks(mojo::String(kSource2))) |
532 .WillOnce(InvokeWithoutArgs([&run_loop2]() { | 539 .WillOnce(InvokeWithoutArgs([&run_loop4]() { |
533 run_loop2.Quit(); | 540 run_loop4.Quit(); |
534 })); | 541 })); |
535 sinks_observer.reset(); | 542 sinks_observer.reset(); |
536 extra_sinks_observer.reset(); | 543 extra_sinks_observer.reset(); |
537 unrelated_sinks_observer.reset(); | 544 unrelated_sinks_observer.reset(); |
538 cached_sinks_observer.reset(); | 545 cached_sinks_observer.reset(); |
539 run_loop2.Run(); | 546 run_loop3.Run(); |
| 547 run_loop4.Run(); |
540 } | 548 } |
541 | 549 |
542 TEST_F(MediaRouterMojoImplTest, | 550 TEST_F(MediaRouterMojoImplTest, |
543 RegisterMediaSinksObserverWithAvailabilityChange) { | 551 RegisterMediaSinksObserverWithAvailabilityChange) { |
544 // When availability is UNAVAILABLE, no calls should be made to MRPM. | 552 // When availability is UNAVAILABLE, no calls should be made to MRPM. |
545 router()->OnSinkAvailabilityUpdated( | 553 router()->OnSinkAvailabilityUpdated( |
546 interfaces::MediaRouter::SINK_AVAILABILITY_UNAVAILABLE); | 554 interfaces::MediaRouter::SINK_AVAILABILITY_UNAVAILABLE); |
547 MediaSource media_source(kSource); | 555 MediaSource media_source(kSource); |
548 scoped_ptr<MockMediaSinksObserver> sinks_observer( | 556 scoped_ptr<MockMediaSinksObserver> sinks_observer( |
549 new MockMediaSinksObserver(router(), media_source)); | 557 new MockMediaSinksObserver(router(), media_source)); |
550 EXPECT_CALL(*sinks_observer, OnSinksReceived(IsEmpty())); | 558 EXPECT_CALL(*sinks_observer, OnSinksReceived(IsEmpty())); |
551 EXPECT_TRUE(sinks_observer->Init()); | 559 EXPECT_TRUE(sinks_observer->Init()); |
552 MediaSource media_source2(kSource2); | 560 MediaSource media_source2(kSource2); |
553 scoped_ptr<MockMediaSinksObserver> sinks_observer2( | 561 scoped_ptr<MockMediaSinksObserver> sinks_observer2( |
554 new MockMediaSinksObserver(router(), media_source2)); | 562 new MockMediaSinksObserver(router(), media_source2)); |
555 EXPECT_CALL(*sinks_observer2, OnSinksReceived(IsEmpty())); | 563 base::RunLoop run_loop; |
| 564 EXPECT_CALL(*sinks_observer2, OnSinksReceived(IsEmpty())) |
| 565 .WillOnce(InvokeWithoutArgs([&run_loop]() { |
| 566 run_loop.Quit(); |
| 567 })); |
556 EXPECT_TRUE(sinks_observer2->Init()); | 568 EXPECT_TRUE(sinks_observer2->Init()); |
557 EXPECT_CALL(mock_media_route_provider_, | 569 EXPECT_CALL(mock_media_route_provider_, |
558 StartObservingMediaSinks(mojo::String(kSource))) | 570 StartObservingMediaSinks(mojo::String(kSource))) |
559 .Times(0); | 571 .Times(0); |
560 EXPECT_CALL(mock_media_route_provider_, | 572 EXPECT_CALL(mock_media_route_provider_, |
561 StartObservingMediaSinks(mojo::String(kSource2))) | 573 StartObservingMediaSinks(mojo::String(kSource2))) |
562 .Times(0); | 574 .Times(0); |
563 ProcessEventLoop(); | 575 run_loop.Run(); |
| 576 base::RunLoop run_loop2; |
564 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&mock_media_route_provider_)); | 577 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&mock_media_route_provider_)); |
565 | 578 |
566 // When availability transitions AVAILABLE, existing sink queries should be | 579 // When availability transitions AVAILABLE, existing sink queries should be |
567 // sent to MRPM. | 580 // sent to MRPM. |
568 router()->OnSinkAvailabilityUpdated( | 581 router()->OnSinkAvailabilityUpdated( |
569 interfaces::MediaRouter::SINK_AVAILABILITY_AVAILABLE); | 582 interfaces::MediaRouter::SINK_AVAILABILITY_AVAILABLE); |
570 EXPECT_CALL(mock_media_route_provider_, | 583 EXPECT_CALL(mock_media_route_provider_, |
571 StartObservingMediaSinks(mojo::String(kSource))) | 584 StartObservingMediaSinks(mojo::String(kSource))) |
572 .Times(1); | 585 .Times(1); |
573 EXPECT_CALL(mock_media_route_provider_, | 586 EXPECT_CALL(mock_media_route_provider_, |
574 StartObservingMediaSinks(mojo::String(kSource2))) | 587 StartObservingMediaSinks(mojo::String(kSource2))) |
575 .Times(1); | 588 .Times(1) |
576 ProcessEventLoop(); | 589 .WillOnce(InvokeWithoutArgs([&run_loop2]() { |
| 590 run_loop2.Quit(); |
| 591 })); |
| 592 run_loop2.Run(); |
577 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&mock_media_route_provider_)); | 593 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&mock_media_route_provider_)); |
578 | 594 |
579 // No change in availability status; no calls should be made to MRPM. | 595 // No change in availability status; no calls should be made to MRPM. |
580 router()->OnSinkAvailabilityUpdated( | 596 router()->OnSinkAvailabilityUpdated( |
581 interfaces::MediaRouter::SINK_AVAILABILITY_AVAILABLE); | 597 interfaces::MediaRouter::SINK_AVAILABILITY_AVAILABLE); |
582 EXPECT_CALL(mock_media_route_provider_, | 598 EXPECT_CALL(mock_media_route_provider_, |
583 StartObservingMediaSinks(mojo::String(kSource))) | 599 StartObservingMediaSinks(mojo::String(kSource))) |
584 .Times(0); | 600 .Times(0); |
585 EXPECT_CALL(mock_media_route_provider_, | 601 EXPECT_CALL(mock_media_route_provider_, |
586 StartObservingMediaSinks(mojo::String(kSource2))) | 602 StartObservingMediaSinks(mojo::String(kSource2))) |
587 .Times(0); | 603 .Times(0); |
588 ProcessEventLoop(); | 604 ProcessEventLoop(); |
589 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&mock_media_route_provider_)); | 605 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&mock_media_route_provider_)); |
590 | 606 |
591 // When availability is UNAVAILABLE, queries are already removed from MRPM. | 607 // When availability is UNAVAILABLE, queries are already removed from MRPM. |
592 // Unregistering observer won't result in call to MRPM to remove query. | 608 // Unregistering observer won't result in call to MRPM to remove query. |
593 router()->OnSinkAvailabilityUpdated( | 609 router()->OnSinkAvailabilityUpdated( |
594 interfaces::MediaRouter::SINK_AVAILABILITY_UNAVAILABLE); | 610 interfaces::MediaRouter::SINK_AVAILABILITY_UNAVAILABLE); |
595 EXPECT_CALL(mock_media_route_provider_, | 611 EXPECT_CALL(mock_media_route_provider_, |
596 StopObservingMediaSinks(mojo::String(kSource))) | 612 StopObservingMediaSinks(mojo::String(kSource))) |
597 .Times(0); | 613 .Times(0); |
598 sinks_observer.reset(); | 614 sinks_observer.reset(); |
599 ProcessEventLoop(); | 615 ProcessEventLoop(); |
600 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&mock_media_route_provider_)); | 616 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&mock_media_route_provider_)); |
601 | 617 |
602 // When availability is AVAILABLE, call is made to MRPM to remove query when | 618 // When availability is AVAILABLE, call is made to MRPM to remove query when |
603 // observer is unregistered. | 619 // observer is unregistered. |
604 router()->OnSinkAvailabilityUpdated( | 620 router()->OnSinkAvailabilityUpdated( |
605 interfaces::MediaRouter::SINK_AVAILABILITY_AVAILABLE); | 621 interfaces::MediaRouter::SINK_AVAILABILITY_AVAILABLE); |
| 622 base::RunLoop run_loop3; |
606 EXPECT_CALL(mock_media_route_provider_, | 623 EXPECT_CALL(mock_media_route_provider_, |
607 StopObservingMediaSinks(mojo::String(kSource2))); | 624 StopObservingMediaSinks(mojo::String(kSource2))) |
| 625 .WillOnce(InvokeWithoutArgs([&run_loop3]() { |
| 626 run_loop3.Quit(); |
| 627 })); |
608 sinks_observer2.reset(); | 628 sinks_observer2.reset(); |
609 ProcessEventLoop(); | 629 run_loop3.Run(); |
610 } | 630 } |
611 | 631 |
612 TEST_F(MediaRouterMojoImplTest, RegisterAndUnregisterMediaRoutesObserver) { | 632 TEST_F(MediaRouterMojoImplTest, RegisterAndUnregisterMediaRoutesObserver) { |
613 MockMediaRouter mock_router; | 633 MockMediaRouter mock_router; |
614 MediaSource media_source(kSource); | 634 MediaSource media_source(kSource); |
615 MediaSource different_media_source(kSource2); | 635 MediaSource different_media_source(kSource2); |
616 EXPECT_CALL(mock_media_route_provider_, | 636 EXPECT_CALL(mock_media_route_provider_, |
617 StartObservingMediaRoutes(mojo::String(media_source.id()))).Times(2); | 637 StartObservingMediaRoutes(mojo::String(media_source.id()))).Times(2); |
618 EXPECT_CALL(mock_media_route_provider_, | 638 EXPECT_CALL(mock_media_route_provider_, |
619 StartObservingMediaRoutes( | 639 StartObservingMediaRoutes( |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
655 mojo_routes[0]->media_sink_id = kSinkId; | 675 mojo_routes[0]->media_sink_id = kSinkId; |
656 mojo_routes[0]->description = kDescription; | 676 mojo_routes[0]->description = kDescription; |
657 mojo_routes[0]->is_local = false; | 677 mojo_routes[0]->is_local = false; |
658 mojo_routes[1] = interfaces::MediaRoute::New(); | 678 mojo_routes[1] = interfaces::MediaRoute::New(); |
659 mojo_routes[1]->media_route_id = kRouteId2; | 679 mojo_routes[1]->media_route_id = kRouteId2; |
660 mojo_routes[1]->media_source = kSource; | 680 mojo_routes[1]->media_source = kSource; |
661 mojo_routes[1]->media_sink_id = kSinkId; | 681 mojo_routes[1]->media_sink_id = kSinkId; |
662 mojo_routes[1]->description = kDescription; | 682 mojo_routes[1]->description = kDescription; |
663 mojo_routes[1]->is_local = false; | 683 mojo_routes[1]->is_local = false; |
664 | 684 |
| 685 base::RunLoop run_loop; |
665 EXPECT_CALL(routes_observer, | 686 EXPECT_CALL(routes_observer, |
666 OnRoutesUpdated(SequenceEquals(expected_routes), | 687 OnRoutesUpdated(SequenceEquals(expected_routes), |
667 expected_joinable_route_ids)); | 688 expected_joinable_route_ids)); |
668 EXPECT_CALL(extra_routes_observer, | 689 EXPECT_CALL(extra_routes_observer, |
669 OnRoutesUpdated(SequenceEquals(expected_routes), | 690 OnRoutesUpdated(SequenceEquals(expected_routes), |
670 expected_joinable_route_ids)); | 691 expected_joinable_route_ids)) |
| 692 .WillOnce(InvokeWithoutArgs([&run_loop]() { |
| 693 run_loop.Quit(); |
| 694 })); |
671 EXPECT_CALL(different_routes_observer, | 695 EXPECT_CALL(different_routes_observer, |
672 OnRoutesUpdated(SequenceEquals(expected_routes), | 696 OnRoutesUpdated(SequenceEquals(expected_routes), |
673 expected_joinable_route_ids)).Times(0); | 697 expected_joinable_route_ids)).Times(0); |
674 media_router_proxy_->OnRoutesUpdated(std::move(mojo_routes), | 698 media_router_proxy_->OnRoutesUpdated(std::move(mojo_routes), |
675 media_source.id(), | 699 media_source.id(), |
676 std::move(mojo_joinable_routes)); | 700 std::move(mojo_joinable_routes)); |
677 ProcessEventLoop(); | 701 run_loop.Run(); |
678 | 702 |
| 703 base::RunLoop run_loop2; |
679 EXPECT_CALL(mock_router, UnregisterMediaRoutesObserver(&routes_observer)); | 704 EXPECT_CALL(mock_router, UnregisterMediaRoutesObserver(&routes_observer)); |
680 EXPECT_CALL(mock_router, | 705 EXPECT_CALL(mock_router, |
681 UnregisterMediaRoutesObserver(&extra_routes_observer)); | 706 UnregisterMediaRoutesObserver(&extra_routes_observer)); |
682 EXPECT_CALL(mock_router, | 707 EXPECT_CALL(mock_router, |
683 UnregisterMediaRoutesObserver(&different_routes_observer)); | 708 UnregisterMediaRoutesObserver(&different_routes_observer)); |
684 router()->UnregisterMediaRoutesObserver(&routes_observer); | 709 router()->UnregisterMediaRoutesObserver(&routes_observer); |
685 router()->UnregisterMediaRoutesObserver(&extra_routes_observer); | 710 router()->UnregisterMediaRoutesObserver(&extra_routes_observer); |
686 router()->UnregisterMediaRoutesObserver(&different_routes_observer); | 711 router()->UnregisterMediaRoutesObserver(&different_routes_observer); |
687 EXPECT_CALL(mock_media_route_provider_, | 712 EXPECT_CALL(mock_media_route_provider_, |
688 StopObservingMediaRoutes( | 713 StopObservingMediaRoutes( |
689 mojo::String(media_source.id()))).Times(1); | 714 mojo::String(media_source.id()))).Times(1); |
690 EXPECT_CALL(mock_media_route_provider_, | 715 EXPECT_CALL(mock_media_route_provider_, |
691 StopObservingMediaRoutes( | 716 StopObservingMediaRoutes( |
692 mojo::String(different_media_source.id()))); | 717 mojo::String(different_media_source.id()))) |
693 ProcessEventLoop(); | 718 .WillOnce(InvokeWithoutArgs([&run_loop2]() { |
| 719 run_loop2.Quit(); |
| 720 })); |
| 721 run_loop2.Run(); |
694 } | 722 } |
695 | 723 |
696 TEST_F(MediaRouterMojoImplTest, SendRouteMessage) { | 724 TEST_F(MediaRouterMojoImplTest, SendRouteMessage) { |
697 EXPECT_CALL( | 725 EXPECT_CALL( |
698 mock_media_route_provider_, | 726 mock_media_route_provider_, |
699 SendRouteMessage(mojo::String(kRouteId), mojo::String(kMessage), _)) | 727 SendRouteMessage(mojo::String(kRouteId), mojo::String(kMessage), _)) |
700 .WillOnce(Invoke([]( | 728 .WillOnce(Invoke([]( |
701 const MediaRoute::Id& route_id, const std::string& message, | 729 const MediaRoute::Id& route_id, const std::string& message, |
702 const interfaces::MediaRouteProvider::SendRouteMessageCallback& cb) { | 730 const interfaces::MediaRouteProvider::SendRouteMessageCallback& cb) { |
703 cb.Run(true); | 731 cb.Run(true); |
(...skipping 323 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1027 .WillRepeatedly(Return(true)); | 1055 .WillRepeatedly(Return(true)); |
1028 EXPECT_CALL(mock_event_page_tracker_, WakeEventPage(extension_id(), _)) | 1056 EXPECT_CALL(mock_event_page_tracker_, WakeEventPage(extension_id(), _)) |
1029 .Times(2) | 1057 .Times(2) |
1030 .WillOnce(Return(true)) | 1058 .WillOnce(Return(true)) |
1031 .WillOnce(DoAll(InvokeWithoutArgs([&run_loop]() { | 1059 .WillOnce(DoAll(InvokeWithoutArgs([&run_loop]() { |
1032 run_loop.Quit(); | 1060 run_loop.Quit(); |
1033 }), Return(true))); | 1061 }), Return(true))); |
1034 router()->DetachRoute(kRouteId); | 1062 router()->DetachRoute(kRouteId); |
1035 router()->DetachRoute(kRouteId2); | 1063 router()->DetachRoute(kRouteId2); |
1036 run_loop.Run(); | 1064 run_loop.Run(); |
| 1065 |
| 1066 base::RunLoop run_loop2, run_loop3; |
1037 EXPECT_CALL(mock_event_page_tracker_, IsEventPageSuspended(extension_id())) | 1067 EXPECT_CALL(mock_event_page_tracker_, IsEventPageSuspended(extension_id())) |
1038 .Times(1) | 1068 .Times(1) |
1039 .WillRepeatedly(Return(false)); | 1069 .WillRepeatedly(Return(false)); |
1040 EXPECT_CALL(mock_media_route_provider_, DetachRoute(mojo::String(kRouteId))); | 1070 EXPECT_CALL(mock_media_route_provider_, DetachRoute(mojo::String(kRouteId))) |
1041 EXPECT_CALL(mock_media_route_provider_, DetachRoute(mojo::String(kRouteId2))); | 1071 .WillOnce(InvokeWithoutArgs([&run_loop2]() { |
| 1072 run_loop2.Quit(); |
| 1073 })); |
| 1074 EXPECT_CALL(mock_media_route_provider_, DetachRoute(mojo::String(kRouteId2))) |
| 1075 .WillOnce(InvokeWithoutArgs([&run_loop3]() { |
| 1076 run_loop3.Quit(); |
| 1077 })); |
1042 ConnectProviderManagerService(); | 1078 ConnectProviderManagerService(); |
1043 ProcessEventLoop(); | 1079 run_loop2.Run(); |
| 1080 run_loop3.Run(); |
1044 } | 1081 } |
1045 | 1082 |
1046 class MediaRouterMojoExtensionTest : public ::testing::Test { | 1083 class MediaRouterMojoExtensionTest : public ::testing::Test { |
1047 public: | 1084 public: |
1048 MediaRouterMojoExtensionTest() | 1085 MediaRouterMojoExtensionTest() |
1049 : process_manager_(nullptr), | 1086 : process_manager_(nullptr), |
1050 message_loop_(mojo::common::MessagePumpMojo::Create()) | 1087 message_loop_(mojo::common::MessagePumpMojo::Create()) |
1051 {} | 1088 {} |
1052 | 1089 |
1053 ~MediaRouterMojoExtensionTest() override {} | 1090 ~MediaRouterMojoExtensionTest() override {} |
(...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1281 .WillRepeatedly(InvokeWithoutArgs([&run_loop2, &count]() { | 1318 .WillRepeatedly(InvokeWithoutArgs([&run_loop2, &count]() { |
1282 if (++count == MediaRouterMojoImpl::kMaxPendingRequests) | 1319 if (++count == MediaRouterMojoImpl::kMaxPendingRequests) |
1283 run_loop2.Quit(); | 1320 run_loop2.Quit(); |
1284 })); | 1321 })); |
1285 RegisterMediaRouteProvider(); | 1322 RegisterMediaRouteProvider(); |
1286 run_loop.Run(); | 1323 run_loop.Run(); |
1287 run_loop2.Run(); | 1324 run_loop2.Run(); |
1288 } | 1325 } |
1289 | 1326 |
1290 } // namespace media_router | 1327 } // namespace media_router |
OLD | NEW |