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

Side by Side Diff: chrome/browser/media/router/mojo/media_router_mojo_impl_unittest.cc

Issue 1911183002: [Media Router] Implement an internal Media Routes observer. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix bad merge & android build Created 4 years, 8 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <stddef.h> 5 #include <stddef.h>
6 #include <stdint.h> 6 #include <stdint.h>
7 7
8 #include <memory> 8 #include <memory>
9 #include <string> 9 #include <string>
10 #include <utility> 10 #include <utility>
(...skipping 292 matching lines...) Expand 10 before | Expand all | Expand 10 after
303 std::vector<MediaRouteResponseCallback> route_response_callbacks; 303 std::vector<MediaRouteResponseCallback> route_response_callbacks;
304 route_response_callbacks.push_back(base::Bind( 304 route_response_callbacks.push_back(base::Bind(
305 &RouteResponseCallbackHandler::Invoke, base::Unretained(&handler))); 305 &RouteResponseCallbackHandler::Invoke, base::Unretained(&handler)));
306 router()->CreateRoute( 306 router()->CreateRoute(
307 kSource, kSinkId, GURL(kOrigin), nullptr, route_response_callbacks, 307 kSource, kSinkId, GURL(kOrigin), nullptr, route_response_callbacks,
308 base::TimeDelta::FromMilliseconds(kTimeoutMillis), true); 308 base::TimeDelta::FromMilliseconds(kTimeoutMillis), true);
309 run_loop.Run(); 309 run_loop.Run();
310 } 310 }
311 311
312 TEST_F(MediaRouterMojoImplTest, OffTheRecordRoutesTerminatedOnProfileShutdown) { 312 TEST_F(MediaRouterMojoImplTest, OffTheRecordRoutesTerminatedOnProfileShutdown) {
313 interfaces::MediaRoutePtr route = interfaces::MediaRoute::New();
314 route->media_source = kSource;
315 route->media_sink_id = kSinkId;
316 route->media_route_id = kRouteId;
317 route->description = kDescription;
318 route->is_local = true;
319 route->for_display = true;
320 route->off_the_record = true;
321
313 EXPECT_CALL(mock_media_route_provider_, 322 EXPECT_CALL(mock_media_route_provider_,
314 CreateRoute(mojo::String(kSource), mojo::String(kSinkId), _, 323 CreateRoute(mojo::String(kSource), mojo::String(kSinkId), _,
315 mojo::String(kOrigin), kInvalidTabId, kTimeoutMillis, 324 mojo::String(kOrigin), kInvalidTabId, kTimeoutMillis,
316 true, _)) 325 true, _))
317 .WillOnce(Invoke( 326 .WillOnce(Invoke(
318 [](const mojo::String& source, const mojo::String& sink, 327 [](const mojo::String& source, const mojo::String& sink,
319 const mojo::String& presentation_id, const mojo::String& origin, 328 const mojo::String& presentation_id, const mojo::String& origin,
320 int tab_id, int64_t timeout_millis, bool off_the_record, 329 int tab_id, int64_t timeout_millis, bool off_the_record,
321 const interfaces::MediaRouteProvider::CreateRouteCallback& cb) { 330 const interfaces::MediaRouteProvider::CreateRouteCallback& cb) {
322 interfaces::MediaRoutePtr route = interfaces::MediaRoute::New(); 331 interfaces::MediaRoutePtr route = interfaces::MediaRoute::New();
323 route->media_source = kSource; 332 route->media_source = kSource;
324 route->media_sink_id = kSinkId; 333 route->media_sink_id = kSinkId;
325 route->media_route_id = kRouteId; 334 route->media_route_id = kRouteId;
326 route->description = kDescription; 335 route->description = kDescription;
327 route->is_local = true; 336 route->is_local = true;
328 route->for_display = true; 337 route->for_display = true;
329 route->off_the_record = true; 338 route->off_the_record = true;
330 cb.Run(std::move(route), mojo::String(), 339 cb.Run(std::move(route), mojo::String(),
331 interfaces::RouteRequestResultCode::OK); 340 interfaces::RouteRequestResultCode::OK);
332 })); 341 }));
333 base::RunLoop run_loop; 342 base::RunLoop run_loop;
334 router()->CreateRoute(kSource, kSinkId, GURL(kOrigin), nullptr, 343 router()->CreateRoute(kSource, kSinkId, GURL(kOrigin), nullptr,
335 std::vector<MediaRouteResponseCallback>(), 344 std::vector<MediaRouteResponseCallback>(),
336 base::TimeDelta::FromMilliseconds(kTimeoutMillis), 345 base::TimeDelta::FromMilliseconds(kTimeoutMillis),
337 true); 346 true);
347 mojo::Array<interfaces::MediaRoutePtr> mojo_routes(1);
348 mojo_routes[0] = route->Clone();
349 router()->OnRoutesUpdated(std::move(mojo_routes), mojo::String(),
350 mojo::Array<mojo::String>());
338 351
339 // TODO(mfoltz): Where possible, convert other tests to use RunUntilIdle 352 // TODO(mfoltz): Where possible, convert other tests to use RunUntilIdle
340 // instead of manually calling Run/Quit on the run loop. 353 // instead of manually calling Run/Quit on the run loop.
341 run_loop.RunUntilIdle(); 354 run_loop.RunUntilIdle();
342 355
343 EXPECT_CALL(mock_media_route_provider_, 356 EXPECT_CALL(mock_media_route_provider_,
344 TerminateRoute(mojo::String(kRouteId))); 357 TerminateRoute(mojo::String(kRouteId)));
345 base::RunLoop run_loop2; 358 base::RunLoop run_loop2;
346 router()->OnOffTheRecordProfileShutdown(); 359 router()->OnOffTheRecordProfileShutdown();
347 run_loop2.RunUntilIdle(); 360 run_loop2.RunUntilIdle();
348 } 361 }
349 362
350 TEST_F(MediaRouterMojoImplTest, JoinRoute) { 363 TEST_F(MediaRouterMojoImplTest, JoinRoute) {
351 MediaSource media_source(kSource); 364 MediaSource media_source(kSource);
365
352 MediaRoute expected_route(kRouteId, media_source, kSinkId, "", false, "", 366 MediaRoute expected_route(kRouteId, media_source, kSinkId, "", false, "",
353 false); 367 false);
354 interfaces::MediaRoutePtr route = interfaces::MediaRoute::New(); 368 interfaces::MediaRoutePtr route = interfaces::MediaRoute::New();
355 route->media_source = kSource; 369 route->media_source = kSource;
356 route->media_sink_id = kSinkId; 370 route->media_sink_id = kSinkId;
357 route->media_route_id = kRouteId; 371 route->media_route_id = kRouteId;
358 route->description = kDescription; 372 route->description = kDescription;
359 route->is_local = true; 373 route->is_local = true;
360 route->for_display = true; 374 route->for_display = true;
361 route->off_the_record = false; 375 route->off_the_record = false;
362 376
377 // Make sure the MR has received an update with the route, so it knows there
378 // is a local route to join.
379 mojo::Array<interfaces::MediaRoutePtr> mojo_routes(1);
380 mojo_routes[0] = route->Clone();
381 router()->OnRoutesUpdated(std::move(mojo_routes), mojo::String(),
382 mojo::Array<mojo::String>());
383
363 // Use a lambda function as an invocation target here to work around 384 // Use a lambda function as an invocation target here to work around
364 // a limitation with GMock::Invoke that prevents it from using move-only types 385 // a limitation with GMock::Invoke that prevents it from using move-only types
365 // in runnable parameter lists. 386 // in runnable parameter lists.
366 EXPECT_CALL( 387 EXPECT_CALL(
367 mock_media_route_provider_, 388 mock_media_route_provider_,
368 JoinRoute(mojo::String(kSource), mojo::String(kPresentationId), 389 JoinRoute(mojo::String(kSource), mojo::String(kPresentationId),
369 mojo::String(kOrigin), kInvalidTabId, kTimeoutMillis, _, _)) 390 mojo::String(kOrigin), kInvalidTabId, kTimeoutMillis, _, _))
370 .WillOnce(Invoke([&route]( 391 .WillOnce(Invoke([&route](
371 const mojo::String& source, const mojo::String& presentation_id, 392 const mojo::String& source, const mojo::String& presentation_id,
372 const mojo::String& origin, int tab_id, int64_t timeout_millis, 393 const mojo::String& origin, int tab_id, int64_t timeout_millis,
(...skipping 10 matching lines...) Expand all
383 .WillOnce(InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); })); 404 .WillOnce(InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); }));
384 std::vector<MediaRouteResponseCallback> route_response_callbacks; 405 std::vector<MediaRouteResponseCallback> route_response_callbacks;
385 route_response_callbacks.push_back(base::Bind( 406 route_response_callbacks.push_back(base::Bind(
386 &RouteResponseCallbackHandler::Invoke, base::Unretained(&handler))); 407 &RouteResponseCallbackHandler::Invoke, base::Unretained(&handler)));
387 router()->JoinRoute(kSource, kPresentationId, GURL(kOrigin), nullptr, 408 router()->JoinRoute(kSource, kPresentationId, GURL(kOrigin), nullptr,
388 route_response_callbacks, 409 route_response_callbacks,
389 base::TimeDelta::FromMilliseconds(kTimeoutMillis), false); 410 base::TimeDelta::FromMilliseconds(kTimeoutMillis), false);
390 run_loop.Run(); 411 run_loop.Run();
391 } 412 }
392 413
393 TEST_F(MediaRouterMojoImplTest, JoinRouteFails) { 414 TEST_F(MediaRouterMojoImplTest, JoinRouteNotFoundFails) {
415 RouteResponseCallbackHandler handler;
416 base::RunLoop run_loop;
417 EXPECT_CALL(handler, DoInvoke(nullptr, "", "Route not found",
418 RouteRequestResult::ROUTE_NOT_FOUND))
419 .WillOnce(InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); }));
420 std::vector<MediaRouteResponseCallback> route_response_callbacks;
421 route_response_callbacks.push_back(base::Bind(
422 &RouteResponseCallbackHandler::Invoke, base::Unretained(&handler)));
423 router()->JoinRoute(kSource, kPresentationId, GURL(kOrigin), nullptr,
424 route_response_callbacks,
425 base::TimeDelta::FromMilliseconds(kTimeoutMillis), false);
426 run_loop.Run();
427 }
428
429 TEST_F(MediaRouterMojoImplTest, JoinRouteTimedOutFails) {
430 interfaces::MediaRoutePtr route = interfaces::MediaRoute::New();
431 route->media_source = kSource;
432 route->media_sink_id = kSinkId;
433 route->media_route_id = kRouteId;
434 route->description = kDescription;
435 route->is_local = true;
436 route->for_display = true;
437 route->off_the_record = false;
438
439 // Make sure the MR has received an update with the route, so it knows there
440 // is a local route to join.
441 mojo::Array<interfaces::MediaRoutePtr> mojo_routes(1);
442 mojo_routes[0] = route->Clone();
443 router()->OnRoutesUpdated(std::move(mojo_routes), mojo::String(),
444 mojo::Array<mojo::String>());
445
394 EXPECT_CALL( 446 EXPECT_CALL(
395 mock_media_route_provider_, 447 mock_media_route_provider_,
396 JoinRoute(mojo::String(kSource), mojo::String(kPresentationId), 448 JoinRoute(mojo::String(kSource), mojo::String(kPresentationId),
397 mojo::String(kOrigin), kInvalidTabId, kTimeoutMillis, _, _)) 449 mojo::String(kOrigin), kInvalidTabId, kTimeoutMillis, _, _))
398 .WillOnce(Invoke( 450 .WillOnce(Invoke(
399 [](const mojo::String& source, const mojo::String& presentation_id, 451 [](const mojo::String& source, const mojo::String& presentation_id,
400 const mojo::String& origin, int tab_id, int64_t timeout_millis, 452 const mojo::String& origin, int tab_id, int64_t timeout_millis,
401 bool off_the_record, 453 bool off_the_record,
402 const interfaces::MediaRouteProvider::JoinRouteCallback& cb) { 454 const interfaces::MediaRouteProvider::JoinRouteCallback& cb) {
403 cb.Run(interfaces::MediaRoutePtr(), mojo::String(kError), 455 cb.Run(interfaces::MediaRoutePtr(), mojo::String(kError),
(...skipping 17 matching lines...) Expand all
421 TEST_F(MediaRouterMojoImplTest, JoinRouteOffTheRecordMismatchFails) { 473 TEST_F(MediaRouterMojoImplTest, JoinRouteOffTheRecordMismatchFails) {
422 interfaces::MediaRoutePtr route = interfaces::MediaRoute::New(); 474 interfaces::MediaRoutePtr route = interfaces::MediaRoute::New();
423 route->media_source = kSource; 475 route->media_source = kSource;
424 route->media_sink_id = kSinkId; 476 route->media_sink_id = kSinkId;
425 route->media_route_id = kRouteId; 477 route->media_route_id = kRouteId;
426 route->description = kDescription; 478 route->description = kDescription;
427 route->is_local = true; 479 route->is_local = true;
428 route->for_display = true; 480 route->for_display = true;
429 route->off_the_record = false; 481 route->off_the_record = false;
430 482
483 // Make sure the MR has received an update with the route, so it knows there
484 // is a local route to join.
485 mojo::Array<interfaces::MediaRoutePtr> mojo_routes(1);
486 mojo_routes[0] = route->Clone();
487 router()->OnRoutesUpdated(std::move(mojo_routes), mojo::String(),
488 mojo::Array<mojo::String>());
489
431 // Use a lambda function as an invocation target here to work around 490 // Use a lambda function as an invocation target here to work around
432 // a limitation with GMock::Invoke that prevents it from using move-only types 491 // a limitation with GMock::Invoke that prevents it from using move-only types
433 // in runnable parameter lists. 492 // in runnable parameter lists.
434 EXPECT_CALL( 493 EXPECT_CALL(
435 mock_media_route_provider_, 494 mock_media_route_provider_,
436 JoinRoute(mojo::String(kSource), mojo::String(kPresentationId), 495 JoinRoute(mojo::String(kSource), mojo::String(kPresentationId),
437 mojo::String(kOrigin), kInvalidTabId, kTimeoutMillis, true, _)) 496 mojo::String(kOrigin), kInvalidTabId, kTimeoutMillis, true, _))
438 .WillOnce(Invoke([&route]( 497 .WillOnce(Invoke([&route](
439 const mojo::String& source, const mojo::String& presentation_id, 498 const mojo::String& source, const mojo::String& presentation_id,
440 const mojo::String& origin, int tab_id, int64_t timeout_millis, 499 const mojo::String& origin, int tab_id, int64_t timeout_millis,
(...skipping 737 matching lines...) Expand 10 before | Expand all | Expand 10 after
1178 .WillRepeatedly(Return(true)); 1237 .WillRepeatedly(Return(true));
1179 EXPECT_CALL(mock_event_page_tracker_, WakeEventPage(extension_id(), _)) 1238 EXPECT_CALL(mock_event_page_tracker_, WakeEventPage(extension_id(), _))
1180 .Times(2) 1239 .Times(2)
1181 .WillOnce(Return(true)) 1240 .WillOnce(Return(true))
1182 .WillOnce(DoAll(InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); }), 1241 .WillOnce(DoAll(InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); }),
1183 Return(true))); 1242 Return(true)));
1184 router()->DetachRoute(kRouteId); 1243 router()->DetachRoute(kRouteId);
1185 router()->DetachRoute(kRouteId2); 1244 router()->DetachRoute(kRouteId2);
1186 run_loop.Run(); 1245 run_loop.Run();
1187 EXPECT_CALL(mock_event_page_tracker_, IsEventPageSuspended(extension_id())) 1246 EXPECT_CALL(mock_event_page_tracker_, IsEventPageSuspended(extension_id()))
1188 .Times(1) 1247 .Times(2)
1189 .WillRepeatedly(Return(false)); 1248 .WillRepeatedly(Return(false));
1190 EXPECT_CALL(mock_media_route_provider_, DetachRoute(mojo::String(kRouteId))); 1249 EXPECT_CALL(mock_media_route_provider_, DetachRoute(mojo::String(kRouteId)));
1191 EXPECT_CALL(mock_media_route_provider_, DetachRoute(mojo::String(kRouteId2))); 1250 EXPECT_CALL(mock_media_route_provider_, DetachRoute(mojo::String(kRouteId2)));
1192 ConnectProviderManagerService(); 1251 ConnectProviderManagerService();
1193 ProcessEventLoop(); 1252 ProcessEventLoop();
1194 } 1253 }
1195 1254
1196 TEST_F(MediaRouterMojoImplTest, SearchSinksAndCreateRoute) { 1255 TEST_F(MediaRouterMojoImplTest, SearchSinksAndCreateRoute) {
1197 std::string search_input("input"); 1256 std::string search_input("input");
1198 std::string domain("google.com"); 1257 std::string domain("google.com");
(...skipping 429 matching lines...) Expand 10 before | Expand all | Expand 10 after
1628 EXPECT_CALL(mock_media_route_provider_, 1687 EXPECT_CALL(mock_media_route_provider_,
1629 UpdateMediaSinks(mojo::String(MediaSourceForDesktop().id()))) 1688 UpdateMediaSinks(mojo::String(MediaSourceForDesktop().id())))
1630 .WillOnce(InvokeWithoutArgs([&run_loop2]() { 1689 .WillOnce(InvokeWithoutArgs([&run_loop2]() {
1631 run_loop2.Quit(); 1690 run_loop2.Quit();
1632 })); 1691 }));
1633 1692
1634 run_loop2.Run(); 1693 run_loop2.Run();
1635 } 1694 }
1636 1695
1637 } // namespace media_router 1696 } // namespace media_router
OLDNEW
« no previous file with comments | « chrome/browser/media/router/mojo/media_router_mojo_impl.cc ('k') | chrome/browser/media/router/mojo/media_router_mojo_test.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698