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

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

Issue 1806153002: [Media Router] Add origins to sink query results. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@2661
Patch Set: 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 GURL origin("https://google.com");
485 486
486 // These should only be called once even if there is more than one observer 487 // These should only be called once even if there is more than one observer
487 // for a given source. 488 // for a given source.
488 EXPECT_CALL(mock_media_route_provider_, 489 EXPECT_CALL(mock_media_route_provider_,
489 StartObservingMediaSinks(mojo::String(kSource))); 490 StartObservingMediaSinks(mojo::String(kSource)));
490 EXPECT_CALL(mock_media_route_provider_, 491 EXPECT_CALL(mock_media_route_provider_,
491 StartObservingMediaSinks(mojo::String(kSource2))); 492 StartObservingMediaSinks(mojo::String(kSource2)));
492 493
493 scoped_ptr<MockMediaSinksObserver> sinks_observer( 494 scoped_ptr<MockMediaSinksObserver> sinks_observer(
494 new MockMediaSinksObserver(router(), media_source)); 495 new MockMediaSinksObserver(router(), media_source, origin));
495 EXPECT_TRUE(sinks_observer->Init()); 496 EXPECT_TRUE(sinks_observer->Init());
496 scoped_ptr<MockMediaSinksObserver> extra_sinks_observer( 497 scoped_ptr<MockMediaSinksObserver> extra_sinks_observer(
497 new MockMediaSinksObserver(router(), media_source)); 498 new MockMediaSinksObserver(router(), media_source, origin));
498 EXPECT_TRUE(extra_sinks_observer->Init()); 499 EXPECT_TRUE(extra_sinks_observer->Init());
499 scoped_ptr<MockMediaSinksObserver> unrelated_sinks_observer( 500 scoped_ptr<MockMediaSinksObserver> unrelated_sinks_observer(
500 new MockMediaSinksObserver(router(), MediaSource(kSource2))); 501 new MockMediaSinksObserver(router(), MediaSource(kSource2), origin));
501 EXPECT_TRUE(unrelated_sinks_observer->Init()); 502 EXPECT_TRUE(unrelated_sinks_observer->Init());
502 ProcessEventLoop(); 503 ProcessEventLoop();
503 504
504 std::vector<MediaSink> expected_sinks; 505 std::vector<MediaSink> expected_sinks;
505 expected_sinks.push_back( 506 expected_sinks.push_back(
506 MediaSink(kSinkId, kSinkName, MediaSink::IconType::CAST)); 507 MediaSink(kSinkId, kSinkName, MediaSink::IconType::CAST));
507 expected_sinks.push_back( 508 expected_sinks.push_back(
508 MediaSink(kSinkId2, kSinkName, MediaSink::IconType::CAST)); 509 MediaSink(kSinkId2, kSinkName, MediaSink::IconType::CAST));
509 510
510 mojo::Array<interfaces::MediaSinkPtr> mojo_sinks(2); 511 mojo::Array<interfaces::MediaSinkPtr> mojo_sinks(2);
511 mojo_sinks[0] = interfaces::MediaSink::New(); 512 mojo_sinks[0] = interfaces::MediaSink::New();
512 mojo_sinks[0]->sink_id = kSinkId; 513 mojo_sinks[0]->sink_id = kSinkId;
513 mojo_sinks[0]->name = kSinkName; 514 mojo_sinks[0]->name = kSinkName;
514 mojo_sinks[0]->icon_type = 515 mojo_sinks[0]->icon_type =
515 media_router::interfaces::MediaSink::IconType::CAST; 516 media_router::interfaces::MediaSink::IconType::CAST;
516 mojo_sinks[1] = interfaces::MediaSink::New(); 517 mojo_sinks[1] = interfaces::MediaSink::New();
517 mojo_sinks[1]->sink_id = kSinkId2; 518 mojo_sinks[1]->sink_id = kSinkId2;
518 mojo_sinks[1]->name = kSinkName; 519 mojo_sinks[1]->name = kSinkName;
519 mojo_sinks[1]->icon_type = 520 mojo_sinks[1]->icon_type =
520 media_router::interfaces::MediaSink::IconType::CAST; 521 media_router::interfaces::MediaSink::IconType::CAST;
521 522
523 mojo::Array<mojo::String> mojo_origins(1);
524 mojo_origins[0] = origin.spec();
525
522 base::RunLoop run_loop; 526 base::RunLoop run_loop;
523 EXPECT_CALL(*sinks_observer, OnSinksReceived(SequenceEquals(expected_sinks))); 527 EXPECT_CALL(*sinks_observer, OnSinksReceived(SequenceEquals(expected_sinks)));
524 EXPECT_CALL(*extra_sinks_observer, 528 EXPECT_CALL(*extra_sinks_observer,
525 OnSinksReceived(SequenceEquals(expected_sinks))) 529 OnSinksReceived(SequenceEquals(expected_sinks)))
526 .WillOnce(InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); })); 530 .WillOnce(InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); }));
527 media_router_proxy_->OnSinksReceived(media_source.id(), 531 media_router_proxy_->OnSinksReceived(media_source.id(), std::move(mojo_sinks),
528 std::move(mojo_sinks)); 532 std::move(mojo_origins));
529 run_loop.Run(); 533 run_loop.Run();
530 534
531 // Since the MediaRouterMojoImpl has already received results for 535 // Since the MediaRouterMojoImpl has already received results for
532 // |media_source|, return cached results to observers that are subsequently 536 // |media_source|, return cached results to observers that are subsequently
533 // registered. 537 // registered.
534 scoped_ptr<MockMediaSinksObserver> cached_sinks_observer( 538 scoped_ptr<MockMediaSinksObserver> cached_sinks_observer(
535 new MockMediaSinksObserver(router(), media_source)); 539 new MockMediaSinksObserver(router(), media_source, origin));
536 EXPECT_CALL(*cached_sinks_observer, 540 EXPECT_CALL(*cached_sinks_observer,
537 OnSinksReceived(SequenceEquals(expected_sinks))); 541 OnSinksReceived(SequenceEquals(expected_sinks)));
538 EXPECT_TRUE(cached_sinks_observer->Init()); 542 EXPECT_TRUE(cached_sinks_observer->Init());
539 543
544 // Different origin from cached result. Empty list will be returned.
545 scoped_ptr<MockMediaSinksObserver> cached_sinks_observer2(
546 new MockMediaSinksObserver(router(), media_source,
547 GURL("https://youtube.com")));
548 EXPECT_CALL(*cached_sinks_observer2, OnSinksReceived(IsEmpty()));
549 EXPECT_TRUE(cached_sinks_observer2->Init());
550
540 base::RunLoop run_loop2; 551 base::RunLoop run_loop2;
541 EXPECT_CALL(mock_media_route_provider_, 552 EXPECT_CALL(mock_media_route_provider_,
542 StopObservingMediaSinks(mojo::String(kSource))); 553 StopObservingMediaSinks(mojo::String(kSource)));
543 EXPECT_CALL(mock_media_route_provider_, 554 EXPECT_CALL(mock_media_route_provider_,
544 StopObservingMediaSinks(mojo::String(kSource2))) 555 StopObservingMediaSinks(mojo::String(kSource2)))
545 .WillOnce(InvokeWithoutArgs([&run_loop2]() { 556 .WillOnce(InvokeWithoutArgs([&run_loop2]() {
546 run_loop2.Quit(); 557 run_loop2.Quit();
547 })); 558 }));
548 sinks_observer.reset(); 559 sinks_observer.reset();
549 extra_sinks_observer.reset(); 560 extra_sinks_observer.reset();
550 unrelated_sinks_observer.reset(); 561 unrelated_sinks_observer.reset();
551 cached_sinks_observer.reset(); 562 cached_sinks_observer.reset();
563 cached_sinks_observer2.reset();
552 run_loop2.Run(); 564 run_loop2.Run();
553 } 565 }
554 566
555 TEST_F(MediaRouterMojoImplTest, 567 TEST_F(MediaRouterMojoImplTest,
556 RegisterMediaSinksObserverWithAvailabilityChange) { 568 RegisterMediaSinksObserverWithAvailabilityChange) {
569 GURL origin("https://google.com");
570
557 // When availability is UNAVAILABLE, no calls should be made to MRPM. 571 // When availability is UNAVAILABLE, no calls should be made to MRPM.
558 router()->OnSinkAvailabilityUpdated( 572 router()->OnSinkAvailabilityUpdated(
559 interfaces::MediaRouter::SinkAvailability::UNAVAILABLE); 573 interfaces::MediaRouter::SinkAvailability::UNAVAILABLE);
560 MediaSource media_source(kSource); 574 MediaSource media_source(kSource);
561 scoped_ptr<MockMediaSinksObserver> sinks_observer( 575 scoped_ptr<MockMediaSinksObserver> sinks_observer(
562 new MockMediaSinksObserver(router(), media_source)); 576 new MockMediaSinksObserver(router(), media_source, origin));
563 EXPECT_CALL(*sinks_observer, OnSinksReceived(IsEmpty())); 577 EXPECT_CALL(*sinks_observer, OnSinksReceived(IsEmpty()));
564 EXPECT_TRUE(sinks_observer->Init()); 578 EXPECT_TRUE(sinks_observer->Init());
565 MediaSource media_source2(kSource2); 579 MediaSource media_source2(kSource2);
566 scoped_ptr<MockMediaSinksObserver> sinks_observer2( 580 scoped_ptr<MockMediaSinksObserver> sinks_observer2(
567 new MockMediaSinksObserver(router(), media_source2)); 581 new MockMediaSinksObserver(router(), media_source2, origin));
568 EXPECT_CALL(*sinks_observer2, OnSinksReceived(IsEmpty())); 582 EXPECT_CALL(*sinks_observer2, OnSinksReceived(IsEmpty()));
569 EXPECT_TRUE(sinks_observer2->Init()); 583 EXPECT_TRUE(sinks_observer2->Init());
570 EXPECT_CALL(mock_media_route_provider_, 584 EXPECT_CALL(mock_media_route_provider_,
571 StartObservingMediaSinks(mojo::String(kSource))) 585 StartObservingMediaSinks(mojo::String(kSource)))
572 .Times(0); 586 .Times(0);
573 EXPECT_CALL(mock_media_route_provider_, 587 EXPECT_CALL(mock_media_route_provider_,
574 StartObservingMediaSinks(mojo::String(kSource2))) 588 StartObservingMediaSinks(mojo::String(kSource2)))
575 .Times(0); 589 .Times(0);
576 ProcessEventLoop(); 590 ProcessEventLoop();
577 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&mock_media_route_provider_)); 591 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&mock_media_route_provider_));
(...skipping 688 matching lines...) Expand 10 before | Expand all | Expand 10 after
1266 .WillRepeatedly(InvokeWithoutArgs([&run_loop2, &count]() { 1280 .WillRepeatedly(InvokeWithoutArgs([&run_loop2, &count]() {
1267 if (++count == MediaRouterMojoImpl::kMaxPendingRequests) 1281 if (++count == MediaRouterMojoImpl::kMaxPendingRequests)
1268 run_loop2.Quit(); 1282 run_loop2.Quit();
1269 })); 1283 }));
1270 RegisterMediaRouteProvider(); 1284 RegisterMediaRouteProvider();
1271 run_loop.Run(); 1285 run_loop.Run();
1272 run_loop2.Run(); 1286 run_loop2.Run();
1273 } 1287 }
1274 1288
1275 } // namespace media_router 1289 } // namespace media_router
OLDNEW
« no previous file with comments | « chrome/browser/media/router/media_router_mojo_impl.cc ('k') | chrome/browser/media/router/media_sinks_observer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698