| Index: chrome/browser/media/router/media_router_mojo_impl_unittest.cc
|
| diff --git a/chrome/browser/media/router/media_router_mojo_impl_unittest.cc b/chrome/browser/media/router/media_router_mojo_impl_unittest.cc
|
| index 73c058a81545330d0953ce18e3a73ad2023b06b9..fae570432154339078fd163530b842d5f442dee3 100644
|
| --- a/chrome/browser/media/router/media_router_mojo_impl_unittest.cc
|
| +++ b/chrome/browser/media/router/media_router_mojo_impl_unittest.cc
|
| @@ -328,6 +328,7 @@ TEST_F(MediaRouterMojoImplTest, ConnectRouteByRouteId) {
|
| // Use a lambda function as an invocation target here to work around
|
| // a limitation with GMock::Invoke that prevents it from using move-only types
|
| // in runnable parameter lists.
|
| + base::RunLoop run_loop;
|
| EXPECT_CALL(mock_media_route_provider_,
|
| ConnectRouteByRouteId(mojo::String(kSource),
|
| mojo::String(kRouteId), _,
|
| @@ -340,7 +341,10 @@ TEST_F(MediaRouterMojoImplTest, ConnectRouteByRouteId) {
|
| cb.Run(std::move(route), mojo::String());
|
| }));
|
| EXPECT_CALL(mock_media_route_provider_,
|
| - StartObservingMediaRoutes(mojo::String("")));
|
| + StartObservingMediaRoutes(mojo::String("")))
|
| + .WillOnce(InvokeWithoutArgs([&run_loop]() {
|
| + run_loop.Quit();
|
| + }));
|
|
|
| RouteResponseCallbackHandler handler;
|
| EXPECT_CALL(handler, Invoke(Pointee(Equals(expected_route)), Not(""), ""));
|
| @@ -349,10 +353,11 @@ TEST_F(MediaRouterMojoImplTest, ConnectRouteByRouteId) {
|
| &RouteResponseCallbackHandler::Invoke, base::Unretained(&handler)));
|
| router()->ConnectRouteByRouteId(kSource, kRouteId, GURL(kOrigin), nullptr,
|
| route_response_callbacks);
|
| - ProcessEventLoop();
|
| + run_loop.Run();
|
| }
|
|
|
| TEST_F(MediaRouterMojoImplTest, ConnectRouteByRouteIdFails) {
|
| + base::RunLoop run_loop;
|
| EXPECT_CALL(mock_media_route_provider_,
|
| ConnectRouteByRouteId(mojo::String(kSource),
|
| mojo::String(kRouteId), _,
|
| @@ -367,13 +372,16 @@ TEST_F(MediaRouterMojoImplTest, ConnectRouteByRouteIdFails) {
|
| }));
|
|
|
| RouteResponseCallbackHandler handler;
|
| - EXPECT_CALL(handler, Invoke(nullptr, "", kError));
|
| + EXPECT_CALL(handler, Invoke(nullptr, "", kError))
|
| + .WillOnce(InvokeWithoutArgs([&run_loop]() {
|
| + run_loop.Quit();
|
| + }));
|
| std::vector<MediaRouteResponseCallback> route_response_callbacks;
|
| route_response_callbacks.push_back(base::Bind(
|
| &RouteResponseCallbackHandler::Invoke, base::Unretained(&handler)));
|
| router()->ConnectRouteByRouteId(kSource, kRouteId, GURL(kOrigin), nullptr,
|
| route_response_callbacks);
|
| - ProcessEventLoop();
|
| + run_loop.Run();
|
| }
|
|
|
| TEST_F(MediaRouterMojoImplTest, DetachRoute) {
|
| @@ -531,7 +539,11 @@ TEST_F(MediaRouterMojoImplTest,
|
| MediaSource media_source2(kSource2);
|
| scoped_ptr<MockMediaSinksObserver> sinks_observer2(
|
| new MockMediaSinksObserver(router(), media_source2));
|
| - EXPECT_CALL(*sinks_observer2, OnSinksReceived(IsEmpty()));
|
| + base::RunLoop run_loop;
|
| + EXPECT_CALL(*sinks_observer2, OnSinksReceived(IsEmpty()))
|
| + .WillOnce(InvokeWithoutArgs([&run_loop]() {
|
| + run_loop.Quit();
|
| + }));
|
| EXPECT_TRUE(sinks_observer2->Init());
|
| EXPECT_CALL(mock_media_route_provider_,
|
| StartObservingMediaSinks(mojo::String(kSource)))
|
| @@ -539,7 +551,8 @@ TEST_F(MediaRouterMojoImplTest,
|
| EXPECT_CALL(mock_media_route_provider_,
|
| StartObservingMediaSinks(mojo::String(kSource2)))
|
| .Times(0);
|
| - ProcessEventLoop();
|
| + run_loop.Run();
|
| + base::RunLoop run_loop2;
|
| EXPECT_TRUE(Mock::VerifyAndClearExpectations(&mock_media_route_provider_));
|
| router()->OnSinkAvailabilityUpdated(
|
| interfaces::MediaRouter::SINK_AVAILABILITY_AVAILABLE);
|
| @@ -548,8 +561,11 @@ TEST_F(MediaRouterMojoImplTest,
|
| .Times(1);
|
| EXPECT_CALL(mock_media_route_provider_,
|
| StartObservingMediaSinks(mojo::String(kSource2)))
|
| - .Times(1);
|
| - ProcessEventLoop();
|
| + .Times(1)
|
| + .WillOnce(InvokeWithoutArgs([&run_loop2]() {
|
| + run_loop2.Quit();
|
| + }));
|
| + run_loop2.Run();
|
| EXPECT_TRUE(Mock::VerifyAndClearExpectations(&mock_media_route_provider_));
|
| router()->OnSinkAvailabilityUpdated(
|
| interfaces::MediaRouter::SINK_AVAILABILITY_AVAILABLE);
|
| @@ -597,23 +613,32 @@ TEST_F(MediaRouterMojoImplTest,
|
| StartObservingMediaSinks(mojo::String(kSource2)))
|
| .Times(0);
|
| ProcessEventLoop();
|
| - router()->OnSinkAvailabilityUpdated(
|
| - interfaces::MediaRouter::SINK_AVAILABILITY_AVAILABLE);
|
| + base::RunLoop run_loop;
|
| EXPECT_CALL(mock_media_route_provider_,
|
| StartObservingMediaSinks(mojo::String(kSource)))
|
| .Times(1);
|
| EXPECT_CALL(mock_media_route_provider_,
|
| StartObservingMediaSinks(mojo::String(kSource2)))
|
| - .Times(1);
|
| + .Times(1)
|
| + .WillOnce(InvokeWithoutArgs([&run_loop]() {
|
| + run_loop.Quit();
|
| + }));
|
| + router()->OnSinkAvailabilityUpdated(
|
| + interfaces::MediaRouter::SINK_AVAILABILITY_AVAILABLE);
|
| + run_loop.Run();
|
| + base::RunLoop run_loop2;
|
| EXPECT_CALL(mock_media_route_provider_,
|
| StopObservingMediaSinks(mojo::String(kSource)))
|
| .Times(1);
|
| EXPECT_CALL(mock_media_route_provider_,
|
| StopObservingMediaSinks(mojo::String(kSource2)))
|
| - .Times(1);
|
| + .Times(1)
|
| + .WillOnce(InvokeWithoutArgs([&run_loop2]() {
|
| + run_loop2.Quit();
|
| + }));
|
| sinks_observer.reset(); // Unregisters kSource from router().
|
| sinks_observer2.reset(); // Unregisters kSource2 from router().
|
| - ProcessEventLoop();
|
| + run_loop2.Run();
|
| }
|
|
|
| TEST_F(MediaRouterMojoImplTest, RegisterAndUnregisterMediaRoutesObserver) {
|
| @@ -669,20 +694,25 @@ TEST_F(MediaRouterMojoImplTest, RegisterAndUnregisterMediaRoutesObserver) {
|
| mojo_routes[1]->description = kDescription;
|
| mojo_routes[1]->is_local = false;
|
|
|
| + base::RunLoop run_loop;
|
| EXPECT_CALL(routes_observer,
|
| OnRoutesUpdated(SequenceEquals(expected_routes),
|
| expected_joinable_route_ids));
|
| EXPECT_CALL(extra_routes_observer,
|
| OnRoutesUpdated(SequenceEquals(expected_routes),
|
| - expected_joinable_route_ids));
|
| + expected_joinable_route_ids))
|
| + .WillOnce(InvokeWithoutArgs([&run_loop]() {
|
| + run_loop.Quit();
|
| + }));
|
| EXPECT_CALL(different_routes_observer,
|
| OnRoutesUpdated(SequenceEquals(expected_routes),
|
| expected_joinable_route_ids)).Times(0);
|
| media_router_proxy_->OnRoutesUpdated(std::move(mojo_routes),
|
| media_source.id(),
|
| std::move(mojo_joinable_routes));
|
| - ProcessEventLoop();
|
| + run_loop.Run();
|
|
|
| + base::RunLoop run_loop2;
|
| EXPECT_CALL(mock_router, UnregisterMediaRoutesObserver(&routes_observer));
|
| EXPECT_CALL(mock_router,
|
| UnregisterMediaRoutesObserver(&extra_routes_observer));
|
| @@ -696,8 +726,11 @@ TEST_F(MediaRouterMojoImplTest, RegisterAndUnregisterMediaRoutesObserver) {
|
| mojo::String(media_source.id()))).Times(1);
|
| EXPECT_CALL(mock_media_route_provider_,
|
| StopObservingMediaRoutes(
|
| - mojo::String(different_media_source.id())));
|
| - ProcessEventLoop();
|
| + mojo::String(different_media_source.id())))
|
| + .WillOnce(InvokeWithoutArgs([&run_loop2]() {
|
| + run_loop2.Quit();
|
| + }));
|
| + run_loop2.Run();
|
| }
|
|
|
| TEST_F(MediaRouterMojoImplTest, SendRouteMessage) {
|
| @@ -1041,13 +1074,22 @@ TEST_F(MediaRouterMojoImplTest, QueuedWhileAsleep) {
|
| router()->DetachRoute(kRouteId);
|
| router()->DetachRoute(kRouteId2);
|
| run_loop.Run();
|
| +
|
| + base::RunLoop run_loop2, run_loop3;
|
| EXPECT_CALL(mock_event_page_tracker_, IsEventPageSuspended(extension_id()))
|
| .Times(1)
|
| .WillRepeatedly(Return(false));
|
| - EXPECT_CALL(mock_media_route_provider_, DetachRoute(mojo::String(kRouteId)));
|
| - EXPECT_CALL(mock_media_route_provider_, DetachRoute(mojo::String(kRouteId2)));
|
| + EXPECT_CALL(mock_media_route_provider_, DetachRoute(mojo::String(kRouteId)))
|
| + .WillOnce(InvokeWithoutArgs([&run_loop2]() {
|
| + run_loop2.Quit();
|
| + }));
|
| + EXPECT_CALL(mock_media_route_provider_, DetachRoute(mojo::String(kRouteId2)))
|
| + .WillOnce(InvokeWithoutArgs([&run_loop3]() {
|
| + run_loop3.Quit();
|
| + }));
|
| ConnectProviderManagerService();
|
| - ProcessEventLoop();
|
| + run_loop2.Run();
|
| + run_loop3.Run();
|
| }
|
|
|
| class MediaRouterMojoExtensionTest : public ::testing::Test {
|
|
|