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

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: Review Fixes Created 5 years 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 cd282ab330c15b71c22b2b9cd1d2a206862f5bc0..41d991f7fc4dd7fccbe78e277a23c087c8bc34c3 100644
--- a/chrome/browser/media/router/media_router_mojo_impl_unittest.cc
+++ b/chrome/browser/media/router/media_router_mojo_impl_unittest.cc
@@ -50,6 +50,8 @@ const char kSource[] = "source1";
const char kSource2[] = "source2";
const char kRouteId[] = "routeId";
const char kRouteId2[] = "routeId2";
+const char kJoinableRouteId[] = "joinableRouteId2";
imcheng 2015/12/01 23:45:06 "joinableRouteId"
matt.boetger 2015/12/03 01:19:20 Done.
+const char kJoinableRouteId2[] = "joinableRouteId2";
const char kSinkId[] = "sink";
const char kSinkId2[] = "sink2";
const char kSinkName[] = "sinkName";
@@ -167,7 +169,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;
@@ -188,7 +191,8 @@ TEST_F(MediaRouterMojoImplTest, CreateRoute) {
const interfaces::MediaRouteProvider::CreateRouteCallback& cb) {
cb.Run(route.Pass(), mojo::String());
}));
- EXPECT_CALL(mock_media_route_provider_, StartObservingMediaRoutes());
+ EXPECT_CALL(mock_media_route_provider_,
+ StartObservingMediaRoutes(mojo::String("")));
RouteResponseCallbackHandler handler;
EXPECT_CALL(handler, Invoke(Pointee(Equals(expected_route)), Not(""), ""));
@@ -223,7 +227,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;
@@ -243,7 +248,8 @@ TEST_F(MediaRouterMojoImplTest, JoinRoute) {
const interfaces::MediaRouteProvider::JoinRouteCallback& cb) {
cb.Run(route.Pass(), mojo::String());
}));
- EXPECT_CALL(mock_media_route_provider_, StartObservingMediaRoutes());
+ EXPECT_CALL(mock_media_route_provider_,
+ StartObservingMediaRoutes(mojo::String("")));
RouteResponseCallbackHandler handler;
EXPECT_CALL(handler, Invoke(Pointee(Equals(expected_route)), Not(""), ""));
@@ -276,6 +282,68 @@ TEST_F(MediaRouterMojoImplTest, JoinRouteFails) {
ProcessEventLoop();
}
+TEST_F(MediaRouterMojoImplTest, JoinRouteByRouteId) {
+ 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;
+
+ std::string expected_presentation_id("non-local-join_");
+ expected_presentation_id += kRouteId;
+ // 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_,
+ JoinRoute(mojo::String(kSource),
+ mojo::String(expected_presentation_id),
+ mojo::String(kOrigin), kInvalidTabId, _))
+ .WillOnce(Invoke([&route](
+ const mojo::String& source, const mojo::String& presentation_id,
+ const mojo::String& origin, int tab_id,
+ const interfaces::MediaRouteProvider::JoinRouteCallback& cb) {
+ cb.Run(route.Pass(), 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()->JoinRouteByRouteId(kSource, kRouteId, GURL(kOrigin), nullptr,
+ route_response_callbacks);
+ ProcessEventLoop();
+}
+
+TEST_F(MediaRouterMojoImplTest, JoinRouteByRouteIdFails) {
+ std::string expected_presentation_id("non-local-join_");
+ expected_presentation_id += kRouteId;
+ EXPECT_CALL(mock_media_route_provider_,
+ JoinRoute(mojo::String(kSource),
+ mojo::String(expected_presentation_id),
+ mojo::String(kOrigin), kInvalidTabId, _))
+ .WillOnce(Invoke(
+ [](const mojo::String& source, 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()->JoinRouteByRouteId(kSource, kRouteId, GURL(kOrigin), nullptr,
+ route_response_callbacks);
+ ProcessEventLoop();
+}
+
TEST_F(MediaRouterMojoImplTest, CloseRoute) {
EXPECT_CALL(mock_media_route_provider_, CloseRoute(mojo::String(kRouteId)));
router()->CloseRoute(kRouteId);
@@ -487,24 +555,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();
@@ -521,18 +607,32 @@ 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(mojo_routes.Pass());
+ 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(media_source.id(),
+ mojo_routes.Pass(),
+ mojo_joinable_routes.Pass());
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())));
+ EXPECT_CALL(mock_media_route_provider_,
+ StopObservingMediaRoutes(
+ mojo::String(different_media_source.id())));
ProcessEventLoop();
}

Powered by Google App Engine
This is Rietveld 408576698