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

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

Issue 1693963003: Pass origin to StartObservingMediaSinks. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Cache off media source Created 4 years, 9 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"
(...skipping 464 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698