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

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

Issue 1415103006: Non-Local Join for Media Router and Presentation API (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixing ChromeOS System Tray Test Created 4 years, 11 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
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 3631d83261a142d35960f754ea8aa4063d26fd8c..73c058a81545330d0953ce18e3a73ad2023b06b9 100644
--- a/chrome/browser/media/router/media_router_mojo_impl_unittest.cc
+++ b/chrome/browser/media/router/media_router_mojo_impl_unittest.cc
@@ -58,6 +58,8 @@ const char kSource[] = "source1";
const char kSource2[] = "source2";
const char kRouteId[] = "routeId";
const char kRouteId2[] = "routeId2";
+const char kJoinableRouteId[] = "joinableRouteId";
+const char kJoinableRouteId2[] = "joinableRouteId2";
const char kSinkId[] = "sink";
const char kSinkId2[] = "sink2";
const char kSinkName[] = "sinkName";
@@ -175,7 +177,8 @@ class RegisterMediaRouteProviderHandler {
};
TEST_F(MediaRouterMojoImplTest, CreateRoute) {
- MediaRoute expected_route(kRouteId, MediaSource(std::string(kSource)),
+ MediaSource media_source(kSource);
+ MediaRoute expected_route(kRouteId, media_source,
kSinkId, "", false, "", false);
interfaces::MediaRoutePtr route = interfaces::MediaRoute::New();
route->media_source = kSource;
@@ -198,12 +201,11 @@ TEST_F(MediaRouterMojoImplTest, CreateRoute) {
const interfaces::MediaRouteProvider::CreateRouteCallback& cb) {
cb.Run(std::move(route), mojo::String());
}));
-
// MediaRouterMojoImpl will start observing local displayable routes as a
// result of having one created.
base::RunLoop run_loop;
- EXPECT_CALL(mock_media_route_provider_, StartObservingMediaRoutes())
- .WillOnce(InvokeWithoutArgs([&run_loop]() {
+ EXPECT_CALL(mock_media_route_provider_, StartObservingMediaRoutes(_))
+ .WillOnce(Invoke([&run_loop](const mojo::String& source) {
run_loop.Quit();
}));
@@ -244,7 +246,8 @@ TEST_F(MediaRouterMojoImplTest, CreateRouteFails) {
}
TEST_F(MediaRouterMojoImplTest, JoinRoute) {
- MediaRoute expected_route(kRouteId, MediaSource(std::string(kSource)),
+ MediaSource media_source(kSource);
+ MediaRoute expected_route(kRouteId, media_source,
kSinkId, "", false, "", false);
interfaces::MediaRoutePtr route = interfaces::MediaRoute::New();
route->media_source = kSource;
@@ -270,8 +273,8 @@ TEST_F(MediaRouterMojoImplTest, JoinRoute) {
// MediaRouterMojoImpl will start observing local displayable routes as a
// result of having one created.
base::RunLoop run_loop;
- EXPECT_CALL(mock_media_route_provider_, StartObservingMediaRoutes())
- .WillOnce(InvokeWithoutArgs([&run_loop]() {
+ EXPECT_CALL(mock_media_route_provider_, StartObservingMediaRoutes(_))
+ .WillOnce(Invoke([&run_loop](const mojo::String& source) {
run_loop.Quit();
}));
@@ -310,6 +313,69 @@ TEST_F(MediaRouterMojoImplTest, JoinRouteFails) {
run_loop.Run();
}
+TEST_F(MediaRouterMojoImplTest, ConnectRouteByRouteId) {
+ MediaSource media_source(kSource);
+ MediaRoute expected_route(kRouteId, media_source,
+ kSinkId, "", false, "", false);
+ interfaces::MediaRoutePtr route = interfaces::MediaRoute::New();
+ route->media_source = kSource;
+ route->media_sink_id = kSinkId;
+ route->media_route_id = kRouteId;
+ route->description = kDescription;
+ route->is_local = true;
+ route->for_display = true;
+
+ // 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.
+ EXPECT_CALL(mock_media_route_provider_,
+ ConnectRouteByRouteId(mojo::String(kSource),
+ mojo::String(kRouteId), _,
+ mojo::String(kOrigin), kInvalidTabId, _))
+ .WillOnce(Invoke([&route](
+ const mojo::String& source, const mojo::String& route_id,
+ const mojo::String& presentation_id,
+ const mojo::String& origin, int tab_id,
+ const interfaces::MediaRouteProvider::JoinRouteCallback& cb) {
+ cb.Run(std::move(route), mojo::String());
+ }));
+ EXPECT_CALL(mock_media_route_provider_,
+ StartObservingMediaRoutes(mojo::String("")));
+
+ RouteResponseCallbackHandler handler;
+ EXPECT_CALL(handler, Invoke(Pointee(Equals(expected_route)), Not(""), ""));
+ 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();
+}
+
+TEST_F(MediaRouterMojoImplTest, ConnectRouteByRouteIdFails) {
+ EXPECT_CALL(mock_media_route_provider_,
+ ConnectRouteByRouteId(mojo::String(kSource),
+ mojo::String(kRouteId), _,
+ mojo::String(kOrigin), kInvalidTabId, _))
+ .WillOnce(Invoke(
+ [](const mojo::String& source,
+ const mojo::String& route_id,
+ const mojo::String& presentation_id,
+ const mojo::String& origin, int tab_id,
+ const interfaces::MediaRouteProvider::JoinRouteCallback& cb) {
+ cb.Run(interfaces::MediaRoutePtr(), mojo::String(kError));
+ }));
+
+ RouteResponseCallbackHandler handler;
+ EXPECT_CALL(handler, Invoke(nullptr, "", kError));
+ 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();
+}
+
TEST_F(MediaRouterMojoImplTest, DetachRoute) {
base::RunLoop run_loop;
EXPECT_CALL(mock_media_route_provider_, DetachRoute(mojo::String(kRouteId)))
@@ -552,24 +618,42 @@ TEST_F(MediaRouterMojoImplTest,
TEST_F(MediaRouterMojoImplTest, RegisterAndUnregisterMediaRoutesObserver) {
MockMediaRouter mock_router;
- EXPECT_CALL(mock_media_route_provider_, StartObservingMediaRoutes()).Times(2);
+ MediaSource media_source(kSource);
+ MediaSource different_media_source(kSource2);
+ EXPECT_CALL(mock_media_route_provider_,
+ StartObservingMediaRoutes(mojo::String(media_source.id()))).Times(2);
+ EXPECT_CALL(mock_media_route_provider_,
+ StartObservingMediaRoutes(
+ mojo::String(different_media_source.id()))).Times(1);
MediaRoutesObserver* observer_captured;
EXPECT_CALL(mock_router, RegisterMediaRoutesObserver(_))
- .Times(2)
+ .Times(3)
.WillRepeatedly(SaveArg<0>(&observer_captured));
- MockMediaRoutesObserver routes_observer(&mock_router);
+ MockMediaRoutesObserver routes_observer(&mock_router, media_source.id());
EXPECT_EQ(observer_captured, &routes_observer);
- MockMediaRoutesObserver extra_routes_observer(&mock_router);
+ MockMediaRoutesObserver extra_routes_observer(&mock_router,
+ media_source.id());
EXPECT_EQ(observer_captured, &extra_routes_observer);
+ MockMediaRoutesObserver different_routes_observer(&mock_router,
+ different_media_source.id());
+ EXPECT_EQ(observer_captured, &different_routes_observer);
router()->RegisterMediaRoutesObserver(&routes_observer);
router()->RegisterMediaRoutesObserver(&extra_routes_observer);
+ router()->RegisterMediaRoutesObserver(&different_routes_observer);
std::vector<MediaRoute> expected_routes;
- expected_routes.push_back(MediaRoute(kRouteId, MediaSource(kSource), kSinkId,
+ expected_routes.push_back(MediaRoute(kRouteId, media_source, kSinkId,
kDescription, false, "", false));
- expected_routes.push_back(MediaRoute(kRouteId2, MediaSource(kSource), kSinkId,
+ expected_routes.push_back(MediaRoute(kRouteId2, media_source, kSinkId,
kDescription, false, "", false));
+ std::vector<MediaRoute::Id> expected_joinable_route_ids;
+ expected_joinable_route_ids.push_back(kJoinableRouteId);
+ expected_joinable_route_ids.push_back(kJoinableRouteId2);
+
+ mojo::Array<mojo::String> mojo_joinable_routes(2);
+ mojo_joinable_routes[0] = kJoinableRouteId;
+ mojo_joinable_routes[1] = kJoinableRouteId2;
mojo::Array<interfaces::MediaRoutePtr> mojo_routes(2);
mojo_routes[0] = interfaces::MediaRoute::New();
@@ -586,18 +670,33 @@ TEST_F(MediaRouterMojoImplTest, RegisterAndUnregisterMediaRoutesObserver) {
mojo_routes[1]->is_local = false;
EXPECT_CALL(routes_observer,
- OnRoutesUpdated(SequenceEquals(expected_routes)));
+ OnRoutesUpdated(SequenceEquals(expected_routes),
+ expected_joinable_route_ids));
EXPECT_CALL(extra_routes_observer,
- OnRoutesUpdated(SequenceEquals(expected_routes)));
- media_router_proxy_->OnRoutesUpdated(std::move(mojo_routes));
+ OnRoutesUpdated(SequenceEquals(expected_routes),
+ expected_joinable_route_ids));
+ 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();
EXPECT_CALL(mock_router, UnregisterMediaRoutesObserver(&routes_observer));
EXPECT_CALL(mock_router,
UnregisterMediaRoutesObserver(&extra_routes_observer));
+ EXPECT_CALL(mock_router,
+ UnregisterMediaRoutesObserver(&different_routes_observer));
router()->UnregisterMediaRoutesObserver(&routes_observer);
router()->UnregisterMediaRoutesObserver(&extra_routes_observer);
- EXPECT_CALL(mock_media_route_provider_, StopObservingMediaRoutes());
+ router()->UnregisterMediaRoutesObserver(&different_routes_observer);
+ EXPECT_CALL(mock_media_route_provider_,
+ StopObservingMediaRoutes(
+ mojo::String(media_source.id()))).Times(1);
+ EXPECT_CALL(mock_media_route_provider_,
+ StopObservingMediaRoutes(
+ mojo::String(different_media_source.id())));
ProcessEventLoop();
}
« no previous file with comments | « chrome/browser/media/router/media_router_mojo_impl.cc ('k') | chrome/browser/media/router/media_routes_observer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698