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

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

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

Powered by Google App Engine
This is Rietveld 408576698