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 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
73 | 73 |
74 return expected->is_binary() ? *expected->data == *actual->data | 74 return expected->is_binary() ? *expected->data == *actual->data |
75 : expected->message == actual->message; | 75 : expected->message == actual->message; |
76 } | 76 } |
77 | 77 |
78 interfaces::IssuePtr CreateMojoIssue(const std::string& title) { | 78 interfaces::IssuePtr CreateMojoIssue(const std::string& title) { |
79 interfaces::IssuePtr mojoIssue = interfaces::Issue::New(); | 79 interfaces::IssuePtr mojoIssue = interfaces::Issue::New(); |
80 mojoIssue->title = title; | 80 mojoIssue->title = title; |
81 mojoIssue->message = "msg"; | 81 mojoIssue->message = "msg"; |
82 mojoIssue->route_id = ""; | 82 mojoIssue->route_id = ""; |
83 mojoIssue->default_action = | 83 mojoIssue->default_action = interfaces::Issue::ActionType::DISMISS; |
84 interfaces::Issue::ActionType::ACTION_TYPE_DISMISS; | |
85 mojoIssue->secondary_actions = | 84 mojoIssue->secondary_actions = |
86 mojo::Array<interfaces::Issue::ActionType>::New(0); | 85 mojo::Array<interfaces::Issue::ActionType>::New(0); |
87 mojoIssue->severity = interfaces::Issue::Severity::SEVERITY_WARNING; | 86 mojoIssue->severity = interfaces::Issue::Severity::WARNING; |
88 mojoIssue->is_blocking = false; | 87 mojoIssue->is_blocking = false; |
89 mojoIssue->help_url = ""; | 88 mojoIssue->help_url = ""; |
90 return mojoIssue; | 89 return mojoIssue; |
91 } | 90 } |
92 | 91 |
93 } // namespace | 92 } // namespace |
94 | 93 |
95 class RouteResponseCallbackHandler { | 94 class RouteResponseCallbackHandler { |
96 public: | 95 public: |
97 MOCK_METHOD3(Invoke, | 96 MOCK_METHOD3(Invoke, |
(...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
351 OnIssueUpdated(Pointee(EqualsIssue(expected_issue2)))); | 350 OnIssueUpdated(Pointee(EqualsIssue(expected_issue2)))); |
352 media_router_proxy_->OnIssue(std::move(mojo_issue2)); | 351 media_router_proxy_->OnIssue(std::move(mojo_issue2)); |
353 ProcessEventLoop(); | 352 ProcessEventLoop(); |
354 | 353 |
355 issue_observer1.UnregisterObserver(); | 354 issue_observer1.UnregisterObserver(); |
356 issue_observer2.UnregisterObserver(); | 355 issue_observer2.UnregisterObserver(); |
357 } | 356 } |
358 | 357 |
359 TEST_F(MediaRouterMojoImplTest, RegisterAndUnregisterMediaSinksObserver) { | 358 TEST_F(MediaRouterMojoImplTest, RegisterAndUnregisterMediaSinksObserver) { |
360 router()->OnSinkAvailabilityUpdated( | 359 router()->OnSinkAvailabilityUpdated( |
361 interfaces::MediaRouter::SINK_AVAILABILITY_AVAILABLE); | 360 interfaces::MediaRouter::SinkAvailability::AVAILABLE); |
362 MediaSource media_source(kSource); | 361 MediaSource media_source(kSource); |
363 | 362 |
364 EXPECT_CALL(mock_media_route_provider_, | 363 EXPECT_CALL(mock_media_route_provider_, |
365 StartObservingMediaSinks(mojo::String(kSource))) | 364 StartObservingMediaSinks(mojo::String(kSource))) |
366 .Times(2); | 365 .Times(2); |
367 EXPECT_CALL(mock_media_route_provider_, | 366 EXPECT_CALL(mock_media_route_provider_, |
368 StartObservingMediaSinks(mojo::String(kSource2))); | 367 StartObservingMediaSinks(mojo::String(kSource2))); |
369 | 368 |
370 MockMediaSinksObserver sinks_observer(router(), media_source); | 369 MockMediaSinksObserver sinks_observer(router(), media_source); |
371 EXPECT_TRUE(sinks_observer.Init()); | 370 EXPECT_TRUE(sinks_observer.Init()); |
372 MockMediaSinksObserver extra_sinks_observer(router(), media_source); | 371 MockMediaSinksObserver extra_sinks_observer(router(), media_source); |
373 EXPECT_TRUE(extra_sinks_observer.Init()); | 372 EXPECT_TRUE(extra_sinks_observer.Init()); |
374 MockMediaSinksObserver unrelated_sinks_observer(router(), | 373 MockMediaSinksObserver unrelated_sinks_observer(router(), |
375 MediaSource(kSource2)); | 374 MediaSource(kSource2)); |
376 EXPECT_TRUE(unrelated_sinks_observer.Init()); | 375 EXPECT_TRUE(unrelated_sinks_observer.Init()); |
377 | 376 |
378 ProcessEventLoop(); | 377 ProcessEventLoop(); |
379 | 378 |
380 std::vector<MediaSink> expected_sinks; | 379 std::vector<MediaSink> expected_sinks; |
381 expected_sinks.push_back( | 380 expected_sinks.push_back( |
382 MediaSink(kSinkId, kSinkName, MediaSink::IconType::CAST)); | 381 MediaSink(kSinkId, kSinkName, MediaSink::IconType::CAST)); |
383 expected_sinks.push_back( | 382 expected_sinks.push_back( |
384 MediaSink(kSinkId2, kSinkName, MediaSink::IconType::CAST)); | 383 MediaSink(kSinkId2, kSinkName, MediaSink::IconType::CAST)); |
385 | 384 |
386 mojo::Array<interfaces::MediaSinkPtr> mojo_sinks(2); | 385 mojo::Array<interfaces::MediaSinkPtr> mojo_sinks(2); |
387 mojo_sinks[0] = interfaces::MediaSink::New(); | 386 mojo_sinks[0] = interfaces::MediaSink::New(); |
388 mojo_sinks[0]->sink_id = kSinkId; | 387 mojo_sinks[0]->sink_id = kSinkId; |
389 mojo_sinks[0]->name = kSinkName; | 388 mojo_sinks[0]->name = kSinkName; |
390 mojo_sinks[0]->icon_type = | 389 mojo_sinks[0]->icon_type = |
391 media_router::interfaces::MediaSink::IconType::ICON_TYPE_CAST; | 390 media_router::interfaces::MediaSink::IconType::CAST; |
392 mojo_sinks[1] = interfaces::MediaSink::New(); | 391 mojo_sinks[1] = interfaces::MediaSink::New(); |
393 mojo_sinks[1]->sink_id = kSinkId2; | 392 mojo_sinks[1]->sink_id = kSinkId2; |
394 mojo_sinks[1]->name = kSinkName; | 393 mojo_sinks[1]->name = kSinkName; |
395 mojo_sinks[1]->icon_type = | 394 mojo_sinks[1]->icon_type = |
396 media_router::interfaces::MediaSink::IconType::ICON_TYPE_CAST; | 395 media_router::interfaces::MediaSink::IconType::CAST; |
397 | 396 |
398 EXPECT_CALL(sinks_observer, OnSinksReceived(SequenceEquals(expected_sinks))); | 397 EXPECT_CALL(sinks_observer, OnSinksReceived(SequenceEquals(expected_sinks))); |
399 EXPECT_CALL(extra_sinks_observer, | 398 EXPECT_CALL(extra_sinks_observer, |
400 OnSinksReceived(SequenceEquals(expected_sinks))); | 399 OnSinksReceived(SequenceEquals(expected_sinks))); |
401 media_router_proxy_->OnSinksReceived(media_source.id(), | 400 media_router_proxy_->OnSinksReceived(media_source.id(), |
402 std::move(mojo_sinks)); | 401 std::move(mojo_sinks)); |
403 ProcessEventLoop(); | 402 ProcessEventLoop(); |
404 | 403 |
405 EXPECT_CALL(mock_media_route_provider_, | 404 EXPECT_CALL(mock_media_route_provider_, |
406 StopObservingMediaSinks(mojo::String(kSource))); | 405 StopObservingMediaSinks(mojo::String(kSource))); |
407 EXPECT_CALL(mock_media_route_provider_, | 406 EXPECT_CALL(mock_media_route_provider_, |
408 StopObservingMediaSinks(mojo::String(kSource2))); | 407 StopObservingMediaSinks(mojo::String(kSource2))); |
409 router()->UnregisterMediaSinksObserver(&sinks_observer); | 408 router()->UnregisterMediaSinksObserver(&sinks_observer); |
410 router()->UnregisterMediaSinksObserver(&extra_sinks_observer); | 409 router()->UnregisterMediaSinksObserver(&extra_sinks_observer); |
411 router()->UnregisterMediaSinksObserver(&unrelated_sinks_observer); | 410 router()->UnregisterMediaSinksObserver(&unrelated_sinks_observer); |
412 ProcessEventLoop(); | 411 ProcessEventLoop(); |
413 } | 412 } |
414 | 413 |
415 TEST_F(MediaRouterMojoImplTest, | 414 TEST_F(MediaRouterMojoImplTest, |
416 RegisterMediaSinksObserverWithAvailabilityChange) { | 415 RegisterMediaSinksObserverWithAvailabilityChange) { |
417 router()->OnSinkAvailabilityUpdated( | 416 router()->OnSinkAvailabilityUpdated( |
418 interfaces::MediaRouter::SINK_AVAILABILITY_UNAVAILABLE); | 417 interfaces::MediaRouter::SinkAvailability::UNAVAILABLE); |
419 MediaSource media_source(kSource); | 418 MediaSource media_source(kSource); |
420 scoped_ptr<MockMediaSinksObserver> sinks_observer( | 419 scoped_ptr<MockMediaSinksObserver> sinks_observer( |
421 new MockMediaSinksObserver(router(), media_source)); | 420 new MockMediaSinksObserver(router(), media_source)); |
422 EXPECT_CALL(*sinks_observer, OnSinksReceived(IsEmpty())); | 421 EXPECT_CALL(*sinks_observer, OnSinksReceived(IsEmpty())); |
423 EXPECT_TRUE(sinks_observer->Init()); | 422 EXPECT_TRUE(sinks_observer->Init()); |
424 MediaSource media_source2(kSource2); | 423 MediaSource media_source2(kSource2); |
425 scoped_ptr<MockMediaSinksObserver> sinks_observer2( | 424 scoped_ptr<MockMediaSinksObserver> sinks_observer2( |
426 new MockMediaSinksObserver(router(), media_source2)); | 425 new MockMediaSinksObserver(router(), media_source2)); |
427 EXPECT_CALL(*sinks_observer2, OnSinksReceived(IsEmpty())); | 426 EXPECT_CALL(*sinks_observer2, OnSinksReceived(IsEmpty())); |
428 EXPECT_TRUE(sinks_observer2->Init()); | 427 EXPECT_TRUE(sinks_observer2->Init()); |
429 EXPECT_CALL(mock_media_route_provider_, | 428 EXPECT_CALL(mock_media_route_provider_, |
430 StartObservingMediaSinks(mojo::String(kSource))) | 429 StartObservingMediaSinks(mojo::String(kSource))) |
431 .Times(0); | 430 .Times(0); |
432 EXPECT_CALL(mock_media_route_provider_, | 431 EXPECT_CALL(mock_media_route_provider_, |
433 StartObservingMediaSinks(mojo::String(kSource2))) | 432 StartObservingMediaSinks(mojo::String(kSource2))) |
434 .Times(0); | 433 .Times(0); |
435 ProcessEventLoop(); | 434 ProcessEventLoop(); |
436 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&mock_media_route_provider_)); | 435 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&mock_media_route_provider_)); |
437 router()->OnSinkAvailabilityUpdated( | 436 router()->OnSinkAvailabilityUpdated( |
438 interfaces::MediaRouter::SINK_AVAILABILITY_AVAILABLE); | 437 interfaces::MediaRouter::SinkAvailability::AVAILABLE); |
439 EXPECT_CALL(mock_media_route_provider_, | 438 EXPECT_CALL(mock_media_route_provider_, |
440 StartObservingMediaSinks(mojo::String(kSource))) | 439 StartObservingMediaSinks(mojo::String(kSource))) |
441 .Times(1); | 440 .Times(1); |
442 EXPECT_CALL(mock_media_route_provider_, | 441 EXPECT_CALL(mock_media_route_provider_, |
443 StartObservingMediaSinks(mojo::String(kSource2))) | 442 StartObservingMediaSinks(mojo::String(kSource2))) |
444 .Times(1); | 443 .Times(1); |
445 ProcessEventLoop(); | 444 ProcessEventLoop(); |
446 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&mock_media_route_provider_)); | 445 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&mock_media_route_provider_)); |
447 router()->OnSinkAvailabilityUpdated( | 446 router()->OnSinkAvailabilityUpdated( |
448 interfaces::MediaRouter::SINK_AVAILABILITY_AVAILABLE); | 447 interfaces::MediaRouter::SinkAvailability::AVAILABLE); |
449 EXPECT_CALL(mock_media_route_provider_, | 448 EXPECT_CALL(mock_media_route_provider_, |
450 StartObservingMediaSinks(mojo::String(kSource))) | 449 StartObservingMediaSinks(mojo::String(kSource))) |
451 .Times(0); | 450 .Times(0); |
452 EXPECT_CALL(mock_media_route_provider_, | 451 EXPECT_CALL(mock_media_route_provider_, |
453 StartObservingMediaSinks(mojo::String(kSource2))) | 452 StartObservingMediaSinks(mojo::String(kSource2))) |
454 .Times(0); | 453 .Times(0); |
455 ProcessEventLoop(); | 454 ProcessEventLoop(); |
456 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&mock_media_route_provider_)); | 455 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&mock_media_route_provider_)); |
457 | 456 |
458 router()->OnSinkAvailabilityUpdated( | 457 router()->OnSinkAvailabilityUpdated( |
459 interfaces::MediaRouter::SINK_AVAILABILITY_UNAVAILABLE); | 458 interfaces::MediaRouter::SinkAvailability::UNAVAILABLE); |
460 EXPECT_CALL(mock_media_route_provider_, | 459 EXPECT_CALL(mock_media_route_provider_, |
461 StopObservingMediaSinks(mojo::String(kSource))) | 460 StopObservingMediaSinks(mojo::String(kSource))) |
462 .Times(0); | 461 .Times(0); |
463 EXPECT_CALL(mock_media_route_provider_, | 462 EXPECT_CALL(mock_media_route_provider_, |
464 StopObservingMediaSinks(mojo::String(kSource2))) | 463 StopObservingMediaSinks(mojo::String(kSource2))) |
465 .Times(0); | 464 .Times(0); |
466 sinks_observer.reset(); | 465 sinks_observer.reset(); |
467 sinks_observer2.reset(); | 466 sinks_observer2.reset(); |
468 ProcessEventLoop(); | 467 ProcessEventLoop(); |
469 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&mock_media_route_provider_)); | 468 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&mock_media_route_provider_)); |
470 } | 469 } |
471 | 470 |
472 TEST_F(MediaRouterMojoImplTest, | 471 TEST_F(MediaRouterMojoImplTest, |
473 RegisterAndUnregisterMediaSinksObserverWithAvailabilityChange) { | 472 RegisterAndUnregisterMediaSinksObserverWithAvailabilityChange) { |
474 router()->OnSinkAvailabilityUpdated( | 473 router()->OnSinkAvailabilityUpdated( |
475 interfaces::MediaRouter::SINK_AVAILABILITY_UNAVAILABLE); | 474 interfaces::MediaRouter::SinkAvailability::UNAVAILABLE); |
476 MediaSource media_source(kSource); | 475 MediaSource media_source(kSource); |
477 scoped_ptr<MockMediaSinksObserver> sinks_observer( | 476 scoped_ptr<MockMediaSinksObserver> sinks_observer( |
478 new MockMediaSinksObserver(router(), media_source)); | 477 new MockMediaSinksObserver(router(), media_source)); |
479 EXPECT_CALL(*sinks_observer, OnSinksReceived(IsEmpty())); | 478 EXPECT_CALL(*sinks_observer, OnSinksReceived(IsEmpty())); |
480 EXPECT_TRUE(sinks_observer->Init()); | 479 EXPECT_TRUE(sinks_observer->Init()); |
481 MediaSource media_source2(kSource2); | 480 MediaSource media_source2(kSource2); |
482 scoped_ptr<MockMediaSinksObserver> sinks_observer2( | 481 scoped_ptr<MockMediaSinksObserver> sinks_observer2( |
483 new MockMediaSinksObserver(router(), media_source2)); | 482 new MockMediaSinksObserver(router(), media_source2)); |
484 EXPECT_CALL(*sinks_observer2, OnSinksReceived(IsEmpty())); | 483 EXPECT_CALL(*sinks_observer2, OnSinksReceived(IsEmpty())); |
485 EXPECT_TRUE(sinks_observer2->Init()); | 484 EXPECT_TRUE(sinks_observer2->Init()); |
486 EXPECT_CALL(mock_media_route_provider_, | 485 EXPECT_CALL(mock_media_route_provider_, |
487 StartObservingMediaSinks(mojo::String(kSource))) | 486 StartObservingMediaSinks(mojo::String(kSource))) |
488 .Times(0); | 487 .Times(0); |
489 EXPECT_CALL(mock_media_route_provider_, | 488 EXPECT_CALL(mock_media_route_provider_, |
490 StartObservingMediaSinks(mojo::String(kSource2))) | 489 StartObservingMediaSinks(mojo::String(kSource2))) |
491 .Times(0); | 490 .Times(0); |
492 ProcessEventLoop(); | 491 ProcessEventLoop(); |
493 router()->OnSinkAvailabilityUpdated( | 492 router()->OnSinkAvailabilityUpdated( |
494 interfaces::MediaRouter::SINK_AVAILABILITY_AVAILABLE); | 493 interfaces::MediaRouter::SinkAvailability::AVAILABLE); |
495 EXPECT_CALL(mock_media_route_provider_, | 494 EXPECT_CALL(mock_media_route_provider_, |
496 StartObservingMediaSinks(mojo::String(kSource))) | 495 StartObservingMediaSinks(mojo::String(kSource))) |
497 .Times(1); | 496 .Times(1); |
498 EXPECT_CALL(mock_media_route_provider_, | 497 EXPECT_CALL(mock_media_route_provider_, |
499 StartObservingMediaSinks(mojo::String(kSource2))) | 498 StartObservingMediaSinks(mojo::String(kSource2))) |
500 .Times(1); | 499 .Times(1); |
501 EXPECT_CALL(mock_media_route_provider_, | 500 EXPECT_CALL(mock_media_route_provider_, |
502 StopObservingMediaSinks(mojo::String(kSource))) | 501 StopObservingMediaSinks(mojo::String(kSource))) |
503 .Times(1); | 502 .Times(1); |
504 EXPECT_CALL(mock_media_route_provider_, | 503 EXPECT_CALL(mock_media_route_provider_, |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
598 router()->SendRouteBinaryMessage( | 597 router()->SendRouteBinaryMessage( |
599 kRouteId, std::move(expected_binary_data), | 598 kRouteId, std::move(expected_binary_data), |
600 base::Bind(&SendMessageCallbackHandler::Invoke, | 599 base::Bind(&SendMessageCallbackHandler::Invoke, |
601 base::Unretained(&handler))); | 600 base::Unretained(&handler))); |
602 ProcessEventLoop(); | 601 ProcessEventLoop(); |
603 } | 602 } |
604 | 603 |
605 TEST_F(MediaRouterMojoImplTest, PresentationSessionMessagesSingleObserver) { | 604 TEST_F(MediaRouterMojoImplTest, PresentationSessionMessagesSingleObserver) { |
606 mojo::Array<interfaces::RouteMessagePtr> mojo_messages(2); | 605 mojo::Array<interfaces::RouteMessagePtr> mojo_messages(2); |
607 mojo_messages[0] = interfaces::RouteMessage::New(); | 606 mojo_messages[0] = interfaces::RouteMessage::New(); |
608 mojo_messages[0]->type = interfaces::RouteMessage::Type::TYPE_TEXT; | 607 mojo_messages[0]->type = interfaces::RouteMessage::Type::TEXT; |
609 mojo_messages[0]->message = "text"; | 608 mojo_messages[0]->message = "text"; |
610 mojo_messages[1] = interfaces::RouteMessage::New(); | 609 mojo_messages[1] = interfaces::RouteMessage::New(); |
611 mojo_messages[1]->type = interfaces::RouteMessage::Type::TYPE_BINARY; | 610 mojo_messages[1]->type = interfaces::RouteMessage::Type::BINARY; |
612 mojo_messages[1]->data.push_back(1); | 611 mojo_messages[1]->data.push_back(1); |
613 | 612 |
614 ScopedVector<content::PresentationSessionMessage> expected_messages; | 613 ScopedVector<content::PresentationSessionMessage> expected_messages; |
615 scoped_ptr<content::PresentationSessionMessage> message; | 614 scoped_ptr<content::PresentationSessionMessage> message; |
616 message.reset(new content::PresentationSessionMessage( | 615 message.reset(new content::PresentationSessionMessage( |
617 content::PresentationMessageType::TEXT)); | 616 content::PresentationMessageType::TEXT)); |
618 message->message = "text"; | 617 message->message = "text"; |
619 expected_messages.push_back(std::move(message)); | 618 expected_messages.push_back(std::move(message)); |
620 | 619 |
621 message.reset(new content::PresentationSessionMessage( | 620 message.reset(new content::PresentationSessionMessage( |
(...skipping 27 matching lines...) Expand all Loading... |
649 interfaces::MediaRouteProvider::ListenForRouteMessagesCallback | 648 interfaces::MediaRouteProvider::ListenForRouteMessagesCallback |
650 mojo_callback_2; | 649 mojo_callback_2; |
651 EXPECT_CALL(mock_media_route_provider_, ListenForRouteMessages(_, _)) | 650 EXPECT_CALL(mock_media_route_provider_, ListenForRouteMessages(_, _)) |
652 .WillOnce(SaveArg<1>(&mojo_callback_2)); | 651 .WillOnce(SaveArg<1>(&mojo_callback_2)); |
653 ProcessEventLoop(); | 652 ProcessEventLoop(); |
654 | 653 |
655 // Stop listening for messages. In particular, MediaRouterMojoImpl will not | 654 // Stop listening for messages. In particular, MediaRouterMojoImpl will not |
656 // call ListenForRouteMessages again when it sees there are no more observers. | 655 // call ListenForRouteMessages again when it sees there are no more observers. |
657 mojo::Array<interfaces::RouteMessagePtr> mojo_messages_2(1); | 656 mojo::Array<interfaces::RouteMessagePtr> mojo_messages_2(1); |
658 mojo_messages_2[0] = interfaces::RouteMessage::New(); | 657 mojo_messages_2[0] = interfaces::RouteMessage::New(); |
659 mojo_messages_2[0]->type = interfaces::RouteMessage::Type::TYPE_TEXT; | 658 mojo_messages_2[0]->type = interfaces::RouteMessage::Type::TEXT; |
660 mojo_messages_2[0]->message = "foo"; | 659 mojo_messages_2[0]->message = "foo"; |
661 observer.reset(); | 660 observer.reset(); |
662 mojo_callback_2.Run(std::move(mojo_messages_2), false); | 661 mojo_callback_2.Run(std::move(mojo_messages_2), false); |
663 EXPECT_CALL(mock_media_route_provider_, StopListeningForRouteMessages(_)); | 662 EXPECT_CALL(mock_media_route_provider_, StopListeningForRouteMessages(_)); |
664 ProcessEventLoop(); | 663 ProcessEventLoop(); |
665 } | 664 } |
666 | 665 |
667 TEST_F(MediaRouterMojoImplTest, PresentationSessionMessagesMultipleObservers) { | 666 TEST_F(MediaRouterMojoImplTest, PresentationSessionMessagesMultipleObservers) { |
668 mojo::Array<interfaces::RouteMessagePtr> mojo_messages(2); | 667 mojo::Array<interfaces::RouteMessagePtr> mojo_messages(2); |
669 mojo_messages[0] = interfaces::RouteMessage::New(); | 668 mojo_messages[0] = interfaces::RouteMessage::New(); |
670 mojo_messages[0]->type = interfaces::RouteMessage::Type::TYPE_TEXT; | 669 mojo_messages[0]->type = interfaces::RouteMessage::Type::TEXT; |
671 mojo_messages[0]->message = "text"; | 670 mojo_messages[0]->message = "text"; |
672 mojo_messages[1] = interfaces::RouteMessage::New(); | 671 mojo_messages[1] = interfaces::RouteMessage::New(); |
673 mojo_messages[1]->type = interfaces::RouteMessage::Type::TYPE_BINARY; | 672 mojo_messages[1]->type = interfaces::RouteMessage::Type::BINARY; |
674 mojo_messages[1]->data.push_back(1); | 673 mojo_messages[1]->data.push_back(1); |
675 | 674 |
676 ScopedVector<content::PresentationSessionMessage> expected_messages; | 675 ScopedVector<content::PresentationSessionMessage> expected_messages; |
677 scoped_ptr<content::PresentationSessionMessage> message; | 676 scoped_ptr<content::PresentationSessionMessage> message; |
678 message.reset(new content::PresentationSessionMessage( | 677 message.reset(new content::PresentationSessionMessage( |
679 content::PresentationMessageType::TEXT)); | 678 content::PresentationMessageType::TEXT)); |
680 message->message = "text"; | 679 message->message = "text"; |
681 expected_messages.push_back(std::move(message)); | 680 expected_messages.push_back(std::move(message)); |
682 | 681 |
683 message.reset(new content::PresentationSessionMessage( | 682 message.reset(new content::PresentationSessionMessage( |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
717 interfaces::MediaRouteProvider::ListenForRouteMessagesCallback | 716 interfaces::MediaRouteProvider::ListenForRouteMessagesCallback |
718 mojo_callback_2; | 717 mojo_callback_2; |
719 EXPECT_CALL(mock_media_route_provider_, ListenForRouteMessages(_, _)) | 718 EXPECT_CALL(mock_media_route_provider_, ListenForRouteMessages(_, _)) |
720 .WillOnce(SaveArg<1>(&mojo_callback_2)); | 719 .WillOnce(SaveArg<1>(&mojo_callback_2)); |
721 ProcessEventLoop(); | 720 ProcessEventLoop(); |
722 | 721 |
723 // Stop listening for messages. In particular, MediaRouterMojoImpl will not | 722 // Stop listening for messages. In particular, MediaRouterMojoImpl will not |
724 // call ListenForRouteMessages again when it sees there are no more observers. | 723 // call ListenForRouteMessages again when it sees there are no more observers. |
725 mojo::Array<interfaces::RouteMessagePtr> mojo_messages_2(1); | 724 mojo::Array<interfaces::RouteMessagePtr> mojo_messages_2(1); |
726 mojo_messages_2[0] = interfaces::RouteMessage::New(); | 725 mojo_messages_2[0] = interfaces::RouteMessage::New(); |
727 mojo_messages_2[0]->type = interfaces::RouteMessage::Type::TYPE_TEXT; | 726 mojo_messages_2[0]->type = interfaces::RouteMessage::Type::TEXT; |
728 mojo_messages_2[0]->message = "foo"; | 727 mojo_messages_2[0]->message = "foo"; |
729 observer1.reset(); | 728 observer1.reset(); |
730 observer2.reset(); | 729 observer2.reset(); |
731 mojo_callback_2.Run(std::move(mojo_messages_2), false); | 730 mojo_callback_2.Run(std::move(mojo_messages_2), false); |
732 EXPECT_CALL(mock_media_route_provider_, StopListeningForRouteMessages(_)); | 731 EXPECT_CALL(mock_media_route_provider_, StopListeningForRouteMessages(_)); |
733 ProcessEventLoop(); | 732 ProcessEventLoop(); |
734 } | 733 } |
735 | 734 |
736 TEST_F(MediaRouterMojoImplTest, PresentationSessionMessagesError) { | 735 TEST_F(MediaRouterMojoImplTest, PresentationSessionMessagesError) { |
737 MediaRoute::Id expected_route_id("foo"); | 736 MediaRoute::Id expected_route_id("foo"); |
(...skipping 30 matching lines...) Expand all Loading... |
768 MockPresentationConnectionStateChangedCallback callback; | 767 MockPresentationConnectionStateChangedCallback callback; |
769 scoped_ptr<PresentationConnectionStateSubscription> subscription = | 768 scoped_ptr<PresentationConnectionStateSubscription> subscription = |
770 router()->AddPresentationConnectionStateChangedCallback( | 769 router()->AddPresentationConnectionStateChangedCallback( |
771 route_id, | 770 route_id, |
772 base::Bind(&MockPresentationConnectionStateChangedCallback::Run, | 771 base::Bind(&MockPresentationConnectionStateChangedCallback::Run, |
773 base::Unretained(&callback))); | 772 base::Unretained(&callback))); |
774 | 773 |
775 EXPECT_CALL(callback, Run(content::PRESENTATION_CONNECTION_STATE_CLOSED)) | 774 EXPECT_CALL(callback, Run(content::PRESENTATION_CONNECTION_STATE_CLOSED)) |
776 .Times(1); | 775 .Times(1); |
777 media_router_proxy_->OnPresentationConnectionStateChanged( | 776 media_router_proxy_->OnPresentationConnectionStateChanged( |
778 route_id, | 777 route_id, PresentationConnectionState::CLOSED); |
779 PresentationConnectionState::PRESENTATION_CONNECTION_STATE_CLOSED); | |
780 ProcessEventLoop(); | 778 ProcessEventLoop(); |
781 | 779 |
782 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&callback)); | 780 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&callback)); |
783 | 781 |
784 // Right now we don't keep track of previous state so the callback will be | 782 // Right now we don't keep track of previous state so the callback will be |
785 // invoked with the same state again. | 783 // invoked with the same state again. |
786 EXPECT_CALL(callback, Run(content::PRESENTATION_CONNECTION_STATE_CLOSED)) | 784 EXPECT_CALL(callback, Run(content::PRESENTATION_CONNECTION_STATE_CLOSED)) |
787 .Times(1); | 785 .Times(1); |
788 media_router_proxy_->OnPresentationConnectionStateChanged( | 786 media_router_proxy_->OnPresentationConnectionStateChanged( |
789 route_id, | 787 route_id, PresentationConnectionState::CLOSED); |
790 PresentationConnectionState::PRESENTATION_CONNECTION_STATE_CLOSED); | |
791 ProcessEventLoop(); | 788 ProcessEventLoop(); |
792 | 789 |
793 // Callback has been removed, so we don't expect it to be called anymore. | 790 // Callback has been removed, so we don't expect it to be called anymore. |
794 subscription.reset(); | 791 subscription.reset(); |
795 EXPECT_TRUE(router()->presentation_connection_state_callbacks_.empty()); | 792 EXPECT_TRUE(router()->presentation_connection_state_callbacks_.empty()); |
796 | 793 |
797 EXPECT_CALL(callback, Run(content::PRESENTATION_CONNECTION_STATE_CLOSED)) | 794 EXPECT_CALL(callback, Run(content::PRESENTATION_CONNECTION_STATE_CLOSED)) |
798 .Times(0); | 795 .Times(0); |
799 media_router_proxy_->OnPresentationConnectionStateChanged( | 796 media_router_proxy_->OnPresentationConnectionStateChanged( |
800 route_id, | 797 route_id, PresentationConnectionState::CLOSED); |
801 PresentationConnectionState::PRESENTATION_CONNECTION_STATE_CLOSED); | |
802 ProcessEventLoop(); | 798 ProcessEventLoop(); |
803 } | 799 } |
804 | 800 |
805 TEST_F(MediaRouterMojoImplTest, HasLocalRoute) { | 801 TEST_F(MediaRouterMojoImplTest, HasLocalRoute) { |
806 EXPECT_FALSE(router()->HasLocalDisplayRoute()); | 802 EXPECT_FALSE(router()->HasLocalDisplayRoute()); |
807 interfaces::MediaRoutePtr mojo_route1 = interfaces::MediaRoute::New(); | 803 interfaces::MediaRoutePtr mojo_route1 = interfaces::MediaRoute::New(); |
808 mojo_route1->media_route_id = "routeId1"; | 804 mojo_route1->media_route_id = "routeId1"; |
809 mojo_route1->media_sink_id = "sinkId"; | 805 mojo_route1->media_sink_id = "sinkId"; |
810 mojo_route1->is_local = false; | 806 mojo_route1->is_local = false; |
811 mojo_route1->for_display = false; | 807 mojo_route1->for_display = false; |
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1072 EXPECT_CALL(provide_handler_, Invoke(testing::Not(""))); | 1068 EXPECT_CALL(provide_handler_, Invoke(testing::Not(""))); |
1073 EXPECT_CALL(*process_manager_, IsEventPageSuspended(kExtensionId)) | 1069 EXPECT_CALL(*process_manager_, IsEventPageSuspended(kExtensionId)) |
1074 .WillOnce(Return(false)); | 1070 .WillOnce(Return(false)); |
1075 EXPECT_CALL(mock_media_route_provider_, DetachRoute(mojo::String(kRouteId2))) | 1071 EXPECT_CALL(mock_media_route_provider_, DetachRoute(mojo::String(kRouteId2))) |
1076 .Times(kMaxPendingRequests); | 1072 .Times(kMaxPendingRequests); |
1077 RegisterMediaRouteProvider(); | 1073 RegisterMediaRouteProvider(); |
1078 ProcessEventLoop(); | 1074 ProcessEventLoop(); |
1079 } | 1075 } |
1080 | 1076 |
1081 } // namespace media_router | 1077 } // namespace media_router |
OLD | NEW |