Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1541)

Unified Diff: chrome/browser/media/router/mojo/media_router_mojo_impl_unittest.cc

Issue 2857393005: [Media Router] Sync state when MR extension is (re)connected to MR. (Closed)
Patch Set: Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/media/router/mojo/media_router_mojo_impl.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 55fc969b5891920e37499c54999fc90c130dd9be..c16d771e805dc5cfec1d6e4ef23fa807354385bf 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
@@ -1049,6 +1049,15 @@ class ExpectedMessagesObserver : public RouteMessageObserver {
std::vector<RouteMessage> messages_;
};
+class NullMessageObserver : public RouteMessageObserver {
+ public:
+ NullMessageObserver(MediaRouter* router, const MediaRoute::Id& route_id)
+ : RouteMessageObserver(router, route_id) {}
+ ~NullMessageObserver() final {}
+
+ void OnMessagesReceived(const std::vector<RouteMessage>& messages) final {}
+};
+
} // namespace
TEST_F(MediaRouterMojoImplTest, RouteMessagesSingleObserver) {
@@ -1304,6 +1313,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_;
@@ -1507,7 +1518,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();
@@ -1548,7 +1559,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();
@@ -1602,4 +1613,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<NullMessageObserver> 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 NullMessageObserver(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
« no previous file with comments | « chrome/browser/media/router/mojo/media_router_mojo_impl.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698