| 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 |