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

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: Ready for Review Created 4 years, 10 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 450 matching lines...) Expand 10 before | Expand all | Expand 10 after
461 run_loop2.Run(); 461 run_loop2.Run();
462 462
463 issue_observer1.UnregisterObserver(); 463 issue_observer1.UnregisterObserver();
464 issue_observer2.UnregisterObserver(); 464 issue_observer2.UnregisterObserver();
465 } 465 }
466 466
467 TEST_F(MediaRouterMojoImplTest, RegisterAndUnregisterMediaSinksObserver) { 467 TEST_F(MediaRouterMojoImplTest, RegisterAndUnregisterMediaSinksObserver) {
468 router()->OnSinkAvailabilityUpdated( 468 router()->OnSinkAvailabilityUpdated(
469 interfaces::MediaRouter::SinkAvailability::AVAILABLE); 469 interfaces::MediaRouter::SinkAvailability::AVAILABLE);
470 MediaSource media_source(kSource); 470 MediaSource media_source(kSource);
471 GURL origin(kOrigin);
471 472
472 // 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
473 // for a given source. 474 // for a given source.
474 EXPECT_CALL(mock_media_route_provider_, 475 EXPECT_CALL(mock_media_route_provider_,
475 StartObservingMediaSinks(mojo::String(kSource))); 476 StartObservingMediaSinks(mojo::String(kSource),
477 mojo::String(kOrigin)));
476 EXPECT_CALL(mock_media_route_provider_, 478 EXPECT_CALL(mock_media_route_provider_,
477 StartObservingMediaSinks(mojo::String(kSource2))); 479 StartObservingMediaSinks(mojo::String(kSource2),
480 mojo::String(kOrigin)));
478 481
479 scoped_ptr<MockMediaSinksObserver> sinks_observer( 482 scoped_ptr<MockMediaSinksObserver> sinks_observer(
480 new MockMediaSinksObserver(router(), media_source)); 483 new MockMediaSinksObserver(router(), media_source, origin));
481 EXPECT_TRUE(sinks_observer->Init()); 484 EXPECT_TRUE(sinks_observer->Init());
482 scoped_ptr<MockMediaSinksObserver> extra_sinks_observer( 485 scoped_ptr<MockMediaSinksObserver> extra_sinks_observer(
483 new MockMediaSinksObserver(router(), media_source)); 486 new MockMediaSinksObserver(router(), media_source, origin));
484 EXPECT_TRUE(extra_sinks_observer->Init()); 487 EXPECT_TRUE(extra_sinks_observer->Init());
485 scoped_ptr<MockMediaSinksObserver> unrelated_sinks_observer( 488 scoped_ptr<MockMediaSinksObserver> unrelated_sinks_observer(
486 new MockMediaSinksObserver(router(), MediaSource(kSource2))); 489 new MockMediaSinksObserver(router(), MediaSource(kSource2), origin));
487 EXPECT_TRUE(unrelated_sinks_observer->Init()); 490 EXPECT_TRUE(unrelated_sinks_observer->Init());
488 ProcessEventLoop(); 491 ProcessEventLoop();
489 492
490 std::vector<MediaSink> expected_sinks; 493 std::vector<MediaSink> expected_sinks;
491 expected_sinks.push_back( 494 expected_sinks.push_back(
492 MediaSink(kSinkId, kSinkName, MediaSink::IconType::CAST)); 495 MediaSink(kSinkId, kSinkName, MediaSink::IconType::CAST));
493 expected_sinks.push_back( 496 expected_sinks.push_back(
494 MediaSink(kSinkId2, kSinkName, MediaSink::IconType::CAST)); 497 MediaSink(kSinkId2, kSinkName, MediaSink::IconType::CAST));
495 498
496 mojo::Array<interfaces::MediaSinkPtr> mojo_sinks(2); 499 mojo::Array<interfaces::MediaSinkPtr> mojo_sinks(2);
(...skipping 14 matching lines...) Expand all
511 OnSinksReceived(SequenceEquals(expected_sinks))) 514 OnSinksReceived(SequenceEquals(expected_sinks)))
512 .WillOnce(InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); })); 515 .WillOnce(InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); }));
513 media_router_proxy_->OnSinksReceived(media_source.id(), 516 media_router_proxy_->OnSinksReceived(media_source.id(),
514 std::move(mojo_sinks)); 517 std::move(mojo_sinks));
515 run_loop.Run(); 518 run_loop.Run();
516 519
517 // Since the MediaRouterMojoImpl has already received results for 520 // Since the MediaRouterMojoImpl has already received results for
518 // |media_source|, return cached results to observers that are subsequently 521 // |media_source|, return cached results to observers that are subsequently
519 // registered. 522 // registered.
520 scoped_ptr<MockMediaSinksObserver> cached_sinks_observer( 523 scoped_ptr<MockMediaSinksObserver> cached_sinks_observer(
521 new MockMediaSinksObserver(router(), media_source)); 524 new MockMediaSinksObserver(router(), media_source, origin));
522 EXPECT_CALL(*cached_sinks_observer, 525 EXPECT_CALL(*cached_sinks_observer,
523 OnSinksReceived(SequenceEquals(expected_sinks))); 526 OnSinksReceived(SequenceEquals(expected_sinks)));
524 EXPECT_TRUE(cached_sinks_observer->Init()); 527 EXPECT_TRUE(cached_sinks_observer->Init());
525 528
526 base::RunLoop run_loop2; 529 base::RunLoop run_loop2;
527 EXPECT_CALL(mock_media_route_provider_, 530 EXPECT_CALL(mock_media_route_provider_,
528 StopObservingMediaSinks(mojo::String(kSource))); 531 StopObservingMediaSinks(mojo::String(kSource)));
529 EXPECT_CALL(mock_media_route_provider_, 532 EXPECT_CALL(mock_media_route_provider_,
530 StopObservingMediaSinks(mojo::String(kSource2))) 533 StopObservingMediaSinks(mojo::String(kSource2)))
531 .WillOnce(InvokeWithoutArgs([&run_loop2]() { 534 .WillOnce(InvokeWithoutArgs([&run_loop2]() {
532 run_loop2.Quit(); 535 run_loop2.Quit();
533 })); 536 }));
534 sinks_observer.reset(); 537 sinks_observer.reset();
535 extra_sinks_observer.reset(); 538 extra_sinks_observer.reset();
536 unrelated_sinks_observer.reset(); 539 unrelated_sinks_observer.reset();
537 cached_sinks_observer.reset(); 540 cached_sinks_observer.reset();
538 run_loop2.Run(); 541 run_loop2.Run();
539 } 542 }
540 543
541 TEST_F(MediaRouterMojoImplTest, 544 TEST_F(MediaRouterMojoImplTest,
542 RegisterMediaSinksObserverWithAvailabilityChange) { 545 RegisterMediaSinksObserverWithAvailabilityChange) {
546 GURL origin(kOrigin);
543 // When availability is UNAVAILABLE, no calls should be made to MRPM. 547 // When availability is UNAVAILABLE, no calls should be made to MRPM.
544 router()->OnSinkAvailabilityUpdated( 548 router()->OnSinkAvailabilityUpdated(
545 interfaces::MediaRouter::SinkAvailability::UNAVAILABLE); 549 interfaces::MediaRouter::SinkAvailability::UNAVAILABLE);
546 MediaSource media_source(kSource); 550 MediaSource media_source(kSource);
547 scoped_ptr<MockMediaSinksObserver> sinks_observer( 551 scoped_ptr<MockMediaSinksObserver> sinks_observer(
548 new MockMediaSinksObserver(router(), media_source)); 552 new MockMediaSinksObserver(router(), media_source, origin));
549 EXPECT_CALL(*sinks_observer, OnSinksReceived(IsEmpty())); 553 EXPECT_CALL(*sinks_observer, OnSinksReceived(IsEmpty()));
550 EXPECT_TRUE(sinks_observer->Init()); 554 EXPECT_TRUE(sinks_observer->Init());
551 MediaSource media_source2(kSource2); 555 MediaSource media_source2(kSource2);
552 scoped_ptr<MockMediaSinksObserver> sinks_observer2( 556 scoped_ptr<MockMediaSinksObserver> sinks_observer2(
553 new MockMediaSinksObserver(router(), media_source2)); 557 new MockMediaSinksObserver(router(), media_source2, origin));
554 EXPECT_CALL(*sinks_observer2, OnSinksReceived(IsEmpty())); 558 EXPECT_CALL(*sinks_observer2, OnSinksReceived(IsEmpty()));
555 EXPECT_TRUE(sinks_observer2->Init()); 559 EXPECT_TRUE(sinks_observer2->Init());
556 EXPECT_CALL(mock_media_route_provider_, 560 EXPECT_CALL(mock_media_route_provider_,
557 StartObservingMediaSinks(mojo::String(kSource))) 561 StartObservingMediaSinks(mojo::String(kSource),
562 mojo::String(kOrigin)))
558 .Times(0); 563 .Times(0);
559 EXPECT_CALL(mock_media_route_provider_, 564 EXPECT_CALL(mock_media_route_provider_,
560 StartObservingMediaSinks(mojo::String(kSource2))) 565 StartObservingMediaSinks(mojo::String(kSource2),
566 mojo::String(kOrigin)))
561 .Times(0); 567 .Times(0);
562 ProcessEventLoop(); 568 ProcessEventLoop();
563 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&mock_media_route_provider_)); 569 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&mock_media_route_provider_));
564 570
565 // When availability transitions AVAILABLE, existing sink queries should be 571 // When availability transitions AVAILABLE, existing sink queries should be
566 // sent to MRPM. 572 // sent to MRPM.
567 router()->OnSinkAvailabilityUpdated( 573 router()->OnSinkAvailabilityUpdated(
568 interfaces::MediaRouter::SinkAvailability::AVAILABLE); 574 interfaces::MediaRouter::SinkAvailability::AVAILABLE);
569 EXPECT_CALL(mock_media_route_provider_, 575 EXPECT_CALL(mock_media_route_provider_,
570 StartObservingMediaSinks(mojo::String(kSource))) 576 StartObservingMediaSinks(mojo::String(kSource),
577 mojo::String(kOrigin)))
571 .Times(1); 578 .Times(1);
572 EXPECT_CALL(mock_media_route_provider_, 579 EXPECT_CALL(mock_media_route_provider_,
573 StartObservingMediaSinks(mojo::String(kSource2))) 580 StartObservingMediaSinks(mojo::String(kSource2),
581 mojo::String(kOrigin)))
574 .Times(1); 582 .Times(1);
575 ProcessEventLoop(); 583 ProcessEventLoop();
576 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&mock_media_route_provider_)); 584 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&mock_media_route_provider_));
577 585
578 // No change in availability status; no calls should be made to MRPM. 586 // No change in availability status; no calls should be made to MRPM.
579 router()->OnSinkAvailabilityUpdated( 587 router()->OnSinkAvailabilityUpdated(
580 interfaces::MediaRouter::SinkAvailability::AVAILABLE); 588 interfaces::MediaRouter::SinkAvailability::AVAILABLE);
581 EXPECT_CALL(mock_media_route_provider_, 589 EXPECT_CALL(mock_media_route_provider_,
582 StartObservingMediaSinks(mojo::String(kSource))) 590 StartObservingMediaSinks(mojo::String(kSource),
591 mojo::String(kOrigin)))
583 .Times(0); 592 .Times(0);
584 EXPECT_CALL(mock_media_route_provider_, 593 EXPECT_CALL(mock_media_route_provider_,
585 StartObservingMediaSinks(mojo::String(kSource2))) 594 StartObservingMediaSinks(mojo::String(kSource2),
595 mojo::String(kOrigin)))
586 .Times(0); 596 .Times(0);
587 ProcessEventLoop(); 597 ProcessEventLoop();
588 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&mock_media_route_provider_)); 598 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&mock_media_route_provider_));
589 599
590 // When availability is UNAVAILABLE, queries are already removed from MRPM. 600 // When availability is UNAVAILABLE, queries are already removed from MRPM.
591 // Unregistering observer won't result in call to MRPM to remove query. 601 // Unregistering observer won't result in call to MRPM to remove query.
592 router()->OnSinkAvailabilityUpdated( 602 router()->OnSinkAvailabilityUpdated(
593 interfaces::MediaRouter::SinkAvailability::UNAVAILABLE); 603 interfaces::MediaRouter::SinkAvailability::UNAVAILABLE);
594 EXPECT_CALL(mock_media_route_provider_, 604 EXPECT_CALL(mock_media_route_provider_,
595 StopObservingMediaSinks(mojo::String(kSource))) 605 StopObservingMediaSinks(mojo::String(kSource)))
(...skipping 681 matching lines...) Expand 10 before | Expand all | Expand 10 after
1277 .WillRepeatedly(InvokeWithoutArgs([&run_loop2, &count]() { 1287 .WillRepeatedly(InvokeWithoutArgs([&run_loop2, &count]() {
1278 if (++count == MediaRouterMojoImpl::kMaxPendingRequests) 1288 if (++count == MediaRouterMojoImpl::kMaxPendingRequests)
1279 run_loop2.Quit(); 1289 run_loop2.Quit();
1280 })); 1290 }));
1281 RegisterMediaRouteProvider(); 1291 RegisterMediaRouteProvider();
1282 run_loop.Run(); 1292 run_loop.Run();
1283 run_loop2.Run(); 1293 run_loop2.Run();
1284 } 1294 }
1285 1295
1286 } // namespace media_router 1296 } // namespace media_router
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698