Chromium Code Reviews| Index: chrome/browser/media/router/mojo/media_router_mojo_impl_unittest.cc |
| diff --git a/chrome/browser/media/router/mojo/media_router_mojo_impl_unittest.cc b/chrome/browser/media/router/mojo/media_router_mojo_impl_unittest.cc |
| index 2d18b4558b9cad21ef01775a4b5ee0ac0435ef0d..1cb30d8616ae90232c8a82863acafe44be7fe72a 100644 |
| --- a/chrome/browser/media/router/mojo/media_router_mojo_impl_unittest.cc |
| +++ b/chrome/browser/media/router/mojo/media_router_mojo_impl_unittest.cc |
| @@ -1063,6 +1063,15 @@ class ExpectedMessagesObserver : public RouteMessageObserver { |
| std::vector<RouteMessage> messages_; |
| }; |
| +class NoopMessageObserver : public RouteMessageObserver { |
|
mark a. foltz
2017/05/03 17:37:08
s/Noop/Fake/ (or maybe s/Noop/Null/) to follow the
imcheng
2017/05/03 18:22:41
Done.
|
| + public: |
| + NoopMessageObserver(MediaRouter* router, const MediaRoute::Id& route_id) |
| + : RouteMessageObserver(router, route_id) {} |
| + ~NoopMessageObserver() final {} |
| + |
| + void OnMessagesReceived(const std::vector<RouteMessage>& messages) final {} |
| +}; |
| + |
| } // namespace |
| TEST_F(MediaRouterMojoImplTest, RouteMessagesSingleObserver) { |
| @@ -1467,6 +1476,8 @@ class MediaRouterMojoExtensionTest : public ::testing::Test { |
| expected_count); |
| } |
| + MediaRouterMojoImpl* router() const { return media_router_.get(); } |
| + |
| content::TestBrowserThreadBundle thread_bundle_; |
| std::unique_ptr<MediaRouterMojoImpl> media_router_; |
| RegisterMediaRouteProviderHandler provide_handler_; |
| @@ -1670,7 +1681,7 @@ TEST_F(MediaRouterMojoExtensionTest, EnableMdnsAfterEachRegister) { |
| EXPECT_CALL(mock_media_route_provider_, |
| UpdateMediaSinks(MediaSourceForDesktop().id())) |
| .Times(2); |
| - // EnableMdnsDisocvery() is never called except on Windows. |
| + // EnableMdnsDiscovery() is never called except on Windows. |
| EXPECT_CALL(mock_media_route_provider_, EnableMdnsDiscovery()) |
| .WillOnce(InvokeWithoutArgs([&run_loop2]() { |
| run_loop2.Quit(); |
| @@ -1711,7 +1722,7 @@ TEST_F(MediaRouterMojoExtensionTest, EnableMdnsAfterEachRegister) { |
| EXPECT_CALL(mock_media_route_provider_, DetachRoute(kRouteId)); |
| EXPECT_CALL(mock_media_route_provider_, |
| UpdateMediaSinks(MediaSourceForDesktop().id())); |
| - // EnableMdnsDisocvery() is never called except on Windows. |
| + // EnableMdnsDiscovery() is never called except on Windows. |
| EXPECT_CALL(mock_media_route_provider_, EnableMdnsDiscovery()) |
| .WillOnce(InvokeWithoutArgs([&run_loop6]() { |
| run_loop6.Quit(); |
| @@ -1765,4 +1776,57 @@ TEST_F(MediaRouterMojoExtensionTest, UpdateMediaSinksOnUserGesture) { |
| run_loop2.Run(); |
| } |
| +TEST_F(MediaRouterMojoExtensionTest, SyncStateToMediaRouteProvider) { |
| + EXPECT_CALL(*process_manager_, IsEventPageSuspended(extension_->id())) |
| + .WillRepeatedly(Return(false)); |
| + MediaSource media_source = MediaSource(kSource); |
| + std::unique_ptr<MockMediaSinksObserver> sinks_observer; |
| + std::unique_ptr<MockMediaRoutesObserver> routes_observer; |
| + std::unique_ptr<NoopMessageObserver> messages_observer; |
| + |
| + { |
| + EXPECT_CALL(provide_handler_, Invoke(testing::Not(""))); |
| + BindMediaRouteProvider(); |
| + RegisterMediaRouteProvider(); |
| + base::RunLoop().RunUntilIdle(); |
| + EXPECT_TRUE(Mock::VerifyAndClearExpectations(&provide_handler_)); |
| + } |
| + |
| + { |
| + media_router_->OnSinkAvailabilityUpdated( |
| + mojom::MediaRouter::SinkAvailability::PER_SOURCE); |
| + EXPECT_CALL(mock_media_route_provider_, |
| + StartObservingMediaSinks(media_source.id())); |
| + sinks_observer.reset(new MockMediaSinksObserver( |
| + router(), media_source, url::Origin(GURL(kOrigin)))); |
| + EXPECT_TRUE(sinks_observer->Init()); |
| + |
| + EXPECT_CALL(mock_media_route_provider_, |
| + StartObservingMediaRoutes(media_source.id())); |
| + routes_observer.reset( |
| + new MockMediaRoutesObserver(router(), media_source.id())); |
| + |
| + EXPECT_CALL(mock_media_route_provider_, |
| + StartListeningForRouteMessages(media_source.id())); |
| + messages_observer.reset( |
| + new NoopMessageObserver(router(), media_source.id())); |
| + base::RunLoop().RunUntilIdle(); |
| + EXPECT_TRUE(Mock::VerifyAndClearExpectations(&mock_media_route_provider_)); |
| + } |
| + |
| + { |
| + EXPECT_CALL(provide_handler_, Invoke(testing::Not(""))); |
| + EXPECT_CALL(mock_media_route_provider_, |
| + StartObservingMediaSinks(media_source.id())); |
| + EXPECT_CALL(mock_media_route_provider_, |
| + StartObservingMediaRoutes(media_source.id())); |
| + EXPECT_CALL(mock_media_route_provider_, |
| + StartListeningForRouteMessages(media_source.id())); |
| + media_router_->OnConnectionError(); |
| + BindMediaRouteProvider(); |
| + RegisterMediaRouteProvider(); |
| + base::RunLoop().RunUntilIdle(); |
| + } |
| +} |
| + |
| } // namespace media_router |