Chromium Code Reviews| 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 464 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 475 run_loop2.Run(); | 475 run_loop2.Run(); |
| 476 | 476 |
| 477 issue_observer1.UnregisterObserver(); | 477 issue_observer1.UnregisterObserver(); |
| 478 issue_observer2.UnregisterObserver(); | 478 issue_observer2.UnregisterObserver(); |
| 479 } | 479 } |
| 480 | 480 |
| 481 TEST_F(MediaRouterMojoImplTest, RegisterAndUnregisterMediaSinksObserver) { | 481 TEST_F(MediaRouterMojoImplTest, RegisterAndUnregisterMediaSinksObserver) { |
| 482 router()->OnSinkAvailabilityUpdated( | 482 router()->OnSinkAvailabilityUpdated( |
| 483 interfaces::MediaRouter::SinkAvailability::AVAILABLE); | 483 interfaces::MediaRouter::SinkAvailability::AVAILABLE); |
| 484 MediaSource media_source(kSource); | 484 MediaSource media_source(kSource); |
| 485 media_source.SetOrigin(kOrigin); | |
| 486 GURL origin(kOrigin); | |
| 487 MediaSource media_source2(kSource2); | |
| 485 | 488 |
|
mark a. foltz
2016/03/03 22:58:36
Set an origin on media_source2?
matt.boetger
2016/03/04 00:22:10
Wanted to test not setting an origin for this one.
| |
| 486 // These should only be called once even if there is more than one observer | 489 // These should only be called once even if there is more than one observer |
| 487 // for a given source. | 490 // for a given source. |
| 488 EXPECT_CALL(mock_media_route_provider_, | 491 EXPECT_CALL(mock_media_route_provider_, |
| 489 StartObservingMediaSinks(mojo::String(kSource))); | 492 StartObservingMediaSinks(mojo::String(kSource), |
| 493 mojo::String(kOrigin))); | |
| 490 EXPECT_CALL(mock_media_route_provider_, | 494 EXPECT_CALL(mock_media_route_provider_, |
| 491 StartObservingMediaSinks(mojo::String(kSource2))); | 495 StartObservingMediaSinks(mojo::String(kSource2), |
| 496 mojo::String(""))); | |
| 492 | 497 |
| 493 scoped_ptr<MockMediaSinksObserver> sinks_observer( | 498 scoped_ptr<MockMediaSinksObserver> sinks_observer( |
| 494 new MockMediaSinksObserver(router(), media_source)); | 499 new MockMediaSinksObserver(router(), media_source)); |
| 495 EXPECT_TRUE(sinks_observer->Init()); | 500 EXPECT_TRUE(sinks_observer->Init()); |
| 496 scoped_ptr<MockMediaSinksObserver> extra_sinks_observer( | 501 scoped_ptr<MockMediaSinksObserver> extra_sinks_observer( |
| 497 new MockMediaSinksObserver(router(), media_source)); | 502 new MockMediaSinksObserver(router(), media_source)); |
| 498 EXPECT_TRUE(extra_sinks_observer->Init()); | 503 EXPECT_TRUE(extra_sinks_observer->Init()); |
| 499 scoped_ptr<MockMediaSinksObserver> unrelated_sinks_observer( | 504 scoped_ptr<MockMediaSinksObserver> unrelated_sinks_observer( |
| 500 new MockMediaSinksObserver(router(), MediaSource(kSource2))); | 505 new MockMediaSinksObserver(router(), media_source2)); |
| 501 EXPECT_TRUE(unrelated_sinks_observer->Init()); | 506 EXPECT_TRUE(unrelated_sinks_observer->Init()); |
| 502 ProcessEventLoop(); | 507 ProcessEventLoop(); |
| 503 | 508 |
| 504 std::vector<MediaSink> expected_sinks; | 509 std::vector<MediaSink> expected_sinks; |
| 505 expected_sinks.push_back( | 510 expected_sinks.push_back( |
| 506 MediaSink(kSinkId, kSinkName, MediaSink::IconType::CAST)); | 511 MediaSink(kSinkId, kSinkName, MediaSink::IconType::CAST)); |
| 507 expected_sinks.push_back( | 512 expected_sinks.push_back( |
| 508 MediaSink(kSinkId2, kSinkName, MediaSink::IconType::CAST)); | 513 MediaSink(kSinkId2, kSinkName, MediaSink::IconType::CAST)); |
| 509 | 514 |
| 510 mojo::Array<interfaces::MediaSinkPtr> mojo_sinks(2); | 515 mojo::Array<interfaces::MediaSinkPtr> mojo_sinks(2); |
| 511 mojo_sinks[0] = interfaces::MediaSink::New(); | 516 mojo_sinks[0] = interfaces::MediaSink::New(); |
| 512 mojo_sinks[0]->sink_id = kSinkId; | 517 mojo_sinks[0]->sink_id = kSinkId; |
| 513 mojo_sinks[0]->name = kSinkName; | 518 mojo_sinks[0]->name = kSinkName; |
| 514 mojo_sinks[0]->icon_type = | 519 mojo_sinks[0]->icon_type = |
| 515 media_router::interfaces::MediaSink::IconType::CAST; | 520 media_router::interfaces::MediaSink::IconType::CAST; |
| 516 mojo_sinks[1] = interfaces::MediaSink::New(); | 521 mojo_sinks[1] = interfaces::MediaSink::New(); |
| 517 mojo_sinks[1]->sink_id = kSinkId2; | 522 mojo_sinks[1]->sink_id = kSinkId2; |
| 518 mojo_sinks[1]->name = kSinkName; | 523 mojo_sinks[1]->name = kSinkName; |
| 519 mojo_sinks[1]->icon_type = | 524 mojo_sinks[1]->icon_type = |
| 520 media_router::interfaces::MediaSink::IconType::CAST; | 525 media_router::interfaces::MediaSink::IconType::CAST; |
| 521 | 526 |
| 522 base::RunLoop run_loop; | 527 base::RunLoop run_loop; |
| 523 EXPECT_CALL(*sinks_observer, OnSinksReceived(SequenceEquals(expected_sinks))); | 528 EXPECT_CALL(*sinks_observer, OnSinksReceived(media_source, |
| 529 SequenceEquals(expected_sinks))); | |
| 524 EXPECT_CALL(*extra_sinks_observer, | 530 EXPECT_CALL(*extra_sinks_observer, |
| 525 OnSinksReceived(SequenceEquals(expected_sinks))) | 531 OnSinksReceived(media_source, SequenceEquals(expected_sinks))) |
| 526 .WillOnce(InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); })); | 532 .WillOnce(InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); })); |
| 527 media_router_proxy_->OnSinksReceived(media_source.id(), | 533 media_router_proxy_->OnSinksReceived(media_source.id(), |
| 534 media_source.GetOrigin(), | |
| 528 std::move(mojo_sinks)); | 535 std::move(mojo_sinks)); |
| 529 run_loop.Run(); | 536 run_loop.Run(); |
| 530 | 537 |
| 531 // Since the MediaRouterMojoImpl has already received results for | 538 // Since the MediaRouterMojoImpl has already received results for |
| 532 // |media_source|, return cached results to observers that are subsequently | 539 // |media_source|, return cached results to observers that are subsequently |
| 533 // registered. | 540 // registered. |
| 534 scoped_ptr<MockMediaSinksObserver> cached_sinks_observer( | 541 scoped_ptr<MockMediaSinksObserver> cached_sinks_observer( |
| 535 new MockMediaSinksObserver(router(), media_source)); | 542 new MockMediaSinksObserver(router(), media_source)); |
| 536 EXPECT_CALL(*cached_sinks_observer, | 543 EXPECT_CALL(*cached_sinks_observer, |
| 537 OnSinksReceived(SequenceEquals(expected_sinks))); | 544 OnSinksReceived(media_source, SequenceEquals(expected_sinks))); |
| 538 EXPECT_TRUE(cached_sinks_observer->Init()); | 545 EXPECT_TRUE(cached_sinks_observer->Init()); |
| 539 | 546 |
| 540 base::RunLoop run_loop2; | 547 base::RunLoop run_loop2; |
| 548 base::RunLoop run_loop3; | |
|
mark a. foltz
2016/03/03 22:58:36
I want to clean up these test cases not to manage
matt.boetger
2016/03/04 00:22:10
Perhaps that clean up could be in a different CL s
| |
| 541 EXPECT_CALL(mock_media_route_provider_, | 549 EXPECT_CALL(mock_media_route_provider_, |
| 542 StopObservingMediaSinks(mojo::String(kSource))); | 550 StopObservingMediaSinks(mojo::String(kSource), |
| 543 EXPECT_CALL(mock_media_route_provider_, | 551 mojo::String(kOrigin))) |
| 544 StopObservingMediaSinks(mojo::String(kSource2))) | |
| 545 .WillOnce(InvokeWithoutArgs([&run_loop2]() { | 552 .WillOnce(InvokeWithoutArgs([&run_loop2]() { |
| 546 run_loop2.Quit(); | 553 run_loop2.Quit(); |
| 547 })); | 554 })); |
| 555 EXPECT_CALL(mock_media_route_provider_, | |
| 556 StopObservingMediaSinks(mojo::String(kSource2), | |
| 557 mojo::String(""))) | |
| 558 .WillOnce(InvokeWithoutArgs([&run_loop3]() { | |
| 559 run_loop3.Quit(); | |
| 560 })); | |
| 548 sinks_observer.reset(); | 561 sinks_observer.reset(); |
| 549 extra_sinks_observer.reset(); | 562 extra_sinks_observer.reset(); |
| 550 unrelated_sinks_observer.reset(); | 563 unrelated_sinks_observer.reset(); |
| 551 cached_sinks_observer.reset(); | 564 cached_sinks_observer.reset(); |
| 552 run_loop2.Run(); | 565 run_loop2.Run(); |
| 566 run_loop3.Run(); | |
| 553 } | 567 } |
| 554 | 568 |
| 555 TEST_F(MediaRouterMojoImplTest, | 569 TEST_F(MediaRouterMojoImplTest, |
| 556 RegisterMediaSinksObserverWithAvailabilityChange) { | 570 RegisterMediaSinksObserverWithAvailabilityChange) { |
| 571 GURL origin(kOrigin); | |
| 557 // When availability is UNAVAILABLE, no calls should be made to MRPM. | 572 // When availability is UNAVAILABLE, no calls should be made to MRPM. |
| 558 router()->OnSinkAvailabilityUpdated( | 573 router()->OnSinkAvailabilityUpdated( |
| 559 interfaces::MediaRouter::SinkAvailability::UNAVAILABLE); | 574 interfaces::MediaRouter::SinkAvailability::UNAVAILABLE); |
| 560 MediaSource media_source(kSource); | 575 MediaSource media_source(kSource); |
| 576 media_source.SetOrigin(kOrigin); | |
| 561 scoped_ptr<MockMediaSinksObserver> sinks_observer( | 577 scoped_ptr<MockMediaSinksObserver> sinks_observer( |
| 562 new MockMediaSinksObserver(router(), media_source)); | 578 new MockMediaSinksObserver(router(), media_source)); |
| 563 EXPECT_CALL(*sinks_observer, OnSinksReceived(IsEmpty())); | 579 EXPECT_CALL(*sinks_observer, OnSinksReceived(media_source, IsEmpty())); |
| 564 EXPECT_TRUE(sinks_observer->Init()); | 580 EXPECT_TRUE(sinks_observer->Init()); |
| 565 MediaSource media_source2(kSource2); | 581 MediaSource media_source2(kSource2); |
| 582 media_source2.SetOrigin(kOrigin); | |
| 566 scoped_ptr<MockMediaSinksObserver> sinks_observer2( | 583 scoped_ptr<MockMediaSinksObserver> sinks_observer2( |
| 567 new MockMediaSinksObserver(router(), media_source2)); | 584 new MockMediaSinksObserver(router(), media_source2)); |
| 568 EXPECT_CALL(*sinks_observer2, OnSinksReceived(IsEmpty())); | 585 EXPECT_CALL(*sinks_observer2, OnSinksReceived(media_source2, IsEmpty())); |
| 569 EXPECT_TRUE(sinks_observer2->Init()); | 586 EXPECT_TRUE(sinks_observer2->Init()); |
| 570 EXPECT_CALL(mock_media_route_provider_, | 587 EXPECT_CALL(mock_media_route_provider_, |
| 571 StartObservingMediaSinks(mojo::String(kSource))) | 588 StartObservingMediaSinks(mojo::String(kSource), |
| 589 mojo::String(kOrigin))) | |
| 572 .Times(0); | 590 .Times(0); |
| 573 EXPECT_CALL(mock_media_route_provider_, | 591 EXPECT_CALL(mock_media_route_provider_, |
| 574 StartObservingMediaSinks(mojo::String(kSource2))) | 592 StartObservingMediaSinks(mojo::String(kSource2), |
| 593 mojo::String(kOrigin))) | |
| 575 .Times(0); | 594 .Times(0); |
| 576 ProcessEventLoop(); | 595 ProcessEventLoop(); |
| 577 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&mock_media_route_provider_)); | 596 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&mock_media_route_provider_)); |
| 578 | 597 |
| 579 // When availability transitions AVAILABLE, existing sink queries should be | 598 // When availability transitions AVAILABLE, existing sink queries should be |
| 580 // sent to MRPM. | 599 // sent to MRPM. |
| 581 router()->OnSinkAvailabilityUpdated( | 600 router()->OnSinkAvailabilityUpdated( |
| 582 interfaces::MediaRouter::SinkAvailability::AVAILABLE); | 601 interfaces::MediaRouter::SinkAvailability::AVAILABLE); |
| 583 EXPECT_CALL(mock_media_route_provider_, | 602 EXPECT_CALL(mock_media_route_provider_, |
| 584 StartObservingMediaSinks(mojo::String(kSource))) | 603 StartObservingMediaSinks(mojo::String(kSource), |
| 604 mojo::String(kOrigin))) | |
| 585 .Times(1); | 605 .Times(1); |
| 586 EXPECT_CALL(mock_media_route_provider_, | 606 EXPECT_CALL(mock_media_route_provider_, |
| 587 StartObservingMediaSinks(mojo::String(kSource2))) | 607 StartObservingMediaSinks(mojo::String(kSource2), |
| 608 mojo::String(kOrigin))) | |
| 588 .Times(1); | 609 .Times(1); |
| 589 ProcessEventLoop(); | 610 ProcessEventLoop(); |
| 590 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&mock_media_route_provider_)); | 611 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&mock_media_route_provider_)); |
| 591 | 612 |
| 592 // No change in availability status; no calls should be made to MRPM. | 613 // No change in availability status; no calls should be made to MRPM. |
| 593 router()->OnSinkAvailabilityUpdated( | 614 router()->OnSinkAvailabilityUpdated( |
| 594 interfaces::MediaRouter::SinkAvailability::AVAILABLE); | 615 interfaces::MediaRouter::SinkAvailability::AVAILABLE); |
| 595 EXPECT_CALL(mock_media_route_provider_, | 616 EXPECT_CALL(mock_media_route_provider_, |
| 596 StartObservingMediaSinks(mojo::String(kSource))) | 617 StartObservingMediaSinks(mojo::String(kSource), |
| 618 mojo::String(kOrigin))) | |
| 597 .Times(0); | 619 .Times(0); |
| 598 EXPECT_CALL(mock_media_route_provider_, | 620 EXPECT_CALL(mock_media_route_provider_, |
| 599 StartObservingMediaSinks(mojo::String(kSource2))) | 621 StartObservingMediaSinks(mojo::String(kSource2), |
| 622 mojo::String(kOrigin))) | |
| 600 .Times(0); | 623 .Times(0); |
| 601 ProcessEventLoop(); | 624 ProcessEventLoop(); |
| 602 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&mock_media_route_provider_)); | 625 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&mock_media_route_provider_)); |
| 603 | 626 |
| 604 // When availability is UNAVAILABLE, queries are already removed from MRPM. | 627 // When availability is UNAVAILABLE, queries are already removed from MRPM. |
| 605 // Unregistering observer won't result in call to MRPM to remove query. | 628 // Unregistering observer won't result in call to MRPM to remove query. |
| 606 router()->OnSinkAvailabilityUpdated( | 629 router()->OnSinkAvailabilityUpdated( |
| 607 interfaces::MediaRouter::SinkAvailability::UNAVAILABLE); | 630 interfaces::MediaRouter::SinkAvailability::UNAVAILABLE); |
| 608 EXPECT_CALL(mock_media_route_provider_, | 631 EXPECT_CALL(mock_media_route_provider_, |
| 609 StopObservingMediaSinks(mojo::String(kSource))) | 632 StopObservingMediaSinks(mojo::String(kSource), |
| 633 mojo::String(kOrigin))) | |
| 610 .Times(0); | 634 .Times(0); |
| 611 sinks_observer.reset(); | 635 sinks_observer.reset(); |
| 612 ProcessEventLoop(); | 636 ProcessEventLoop(); |
| 613 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&mock_media_route_provider_)); | 637 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&mock_media_route_provider_)); |
| 614 | 638 |
| 615 // When availability is AVAILABLE, call is made to MRPM to remove query when | 639 // When availability is AVAILABLE, call is made to MRPM to remove query when |
| 616 // observer is unregistered. | 640 // observer is unregistered. |
| 617 router()->OnSinkAvailabilityUpdated( | 641 router()->OnSinkAvailabilityUpdated( |
| 618 interfaces::MediaRouter::SinkAvailability::AVAILABLE); | 642 interfaces::MediaRouter::SinkAvailability::AVAILABLE); |
| 619 EXPECT_CALL(mock_media_route_provider_, | 643 EXPECT_CALL(mock_media_route_provider_, |
| 620 StopObservingMediaSinks(mojo::String(kSource2))); | 644 StopObservingMediaSinks(mojo::String(kSource2), |
| 645 mojo::String(kOrigin))); | |
| 621 sinks_observer2.reset(); | 646 sinks_observer2.reset(); |
| 622 ProcessEventLoop(); | 647 ProcessEventLoop(); |
| 623 } | 648 } |
| 624 | 649 |
| 625 TEST_F(MediaRouterMojoImplTest, RegisterAndUnregisterMediaRoutesObserver) { | 650 TEST_F(MediaRouterMojoImplTest, RegisterAndUnregisterMediaRoutesObserver) { |
| 626 MockMediaRouter mock_router; | 651 MockMediaRouter mock_router; |
| 627 MediaSource media_source(kSource); | 652 MediaSource media_source(kSource); |
| 628 MediaSource different_media_source(kSource2); | 653 MediaSource different_media_source(kSource2); |
| 629 EXPECT_CALL(mock_media_route_provider_, | 654 EXPECT_CALL(mock_media_route_provider_, |
| 630 StartObservingMediaRoutes(mojo::String(media_source.id()))).Times(2); | 655 StartObservingMediaRoutes(mojo::String(media_source.id()))).Times(2); |
| (...skipping 635 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1266 .WillRepeatedly(InvokeWithoutArgs([&run_loop2, &count]() { | 1291 .WillRepeatedly(InvokeWithoutArgs([&run_loop2, &count]() { |
| 1267 if (++count == MediaRouterMojoImpl::kMaxPendingRequests) | 1292 if (++count == MediaRouterMojoImpl::kMaxPendingRequests) |
| 1268 run_loop2.Quit(); | 1293 run_loop2.Quit(); |
| 1269 })); | 1294 })); |
| 1270 RegisterMediaRouteProvider(); | 1295 RegisterMediaRouteProvider(); |
| 1271 run_loop.Run(); | 1296 run_loop.Run(); |
| 1272 run_loop2.Run(); | 1297 run_loop2.Run(); |
| 1273 } | 1298 } |
| 1274 | 1299 |
| 1275 } // namespace media_router | 1300 } // namespace media_router |
| OLD | NEW |