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