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

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

Issue 2112673002: Removing references to Off the Record from MediaRouter (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: More refactoring on rebased code Created 4 years, 5 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 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
108 } 108 }
109 109
110 interfaces::MediaRoutePtr CreateMojoRoute() { 110 interfaces::MediaRoutePtr CreateMojoRoute() {
111 interfaces::MediaRoutePtr route = interfaces::MediaRoute::New(); 111 interfaces::MediaRoutePtr route = interfaces::MediaRoute::New();
112 route->media_source = kSource; 112 route->media_source = kSource;
113 route->media_sink_id = kSinkId; 113 route->media_sink_id = kSinkId;
114 route->media_route_id = kRouteId; 114 route->media_route_id = kRouteId;
115 route->description = kDescription; 115 route->description = kDescription;
116 route->is_local = true; 116 route->is_local = true;
117 route->for_display = true; 117 route->for_display = true;
118 route->off_the_record = false; 118 route->incognito = false;
119 return route; 119 return route;
120 } 120 }
121 121
122 } // namespace 122 } // namespace
123 123
124 class RouteResponseCallbackHandler { 124 class RouteResponseCallbackHandler {
125 public: 125 public:
126 void Invoke(const RouteRequestResult& result) { 126 void Invoke(const RouteRequestResult& result) {
127 DoInvoke(result.route(), result.presentation_id(), result.error(), 127 DoInvoke(result.route(), result.presentation_id(), result.error(),
128 result.result_code()); 128 result.result_code());
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
232 232
233 // Use a lambda function as an invocation target here to work around 233 // Use a lambda function as an invocation target here to work around
234 // a limitation with GMock::Invoke that prevents it from using move-only types 234 // a limitation with GMock::Invoke that prevents it from using move-only types
235 // in runnable parameter lists. 235 // in runnable parameter lists.
236 EXPECT_CALL(mock_media_route_provider_, 236 EXPECT_CALL(mock_media_route_provider_,
237 CreateRoute(mojo::String(kSource), mojo::String(kSinkId), _, 237 CreateRoute(mojo::String(kSource), mojo::String(kSinkId), _,
238 mojo::String(kOrigin), kInvalidTabId, _, _, _)) 238 mojo::String(kOrigin), kInvalidTabId, _, _, _))
239 .WillOnce(Invoke( 239 .WillOnce(Invoke(
240 [](const mojo::String& source, const mojo::String& sink, 240 [](const mojo::String& source, const mojo::String& sink,
241 const mojo::String& presentation_id, const mojo::String& origin, 241 const mojo::String& presentation_id, const mojo::String& origin,
242 int tab_id, int64_t timeout_millis, bool off_the_record, 242 int tab_id, int64_t timeout_millis, bool incognito,
243 const interfaces::MediaRouteProvider::CreateRouteCallback& cb) { 243 const interfaces::MediaRouteProvider::CreateRouteCallback& cb) {
244 cb.Run(CreateMojoRoute(), mojo::String(), 244 cb.Run(CreateMojoRoute(), mojo::String(),
245 interfaces::RouteRequestResultCode::OK); 245 interfaces::RouteRequestResultCode::OK);
246 })); 246 }));
247 247
248 base::RunLoop run_loop; 248 base::RunLoop run_loop;
249 RouteResponseCallbackHandler handler; 249 RouteResponseCallbackHandler handler;
250 EXPECT_CALL(handler, DoInvoke(Pointee(Equals(expected_route)), Not(""), "", 250 EXPECT_CALL(handler, DoInvoke(Pointee(Equals(expected_route)), Not(""), "",
251 RouteRequestResult::OK)) 251 RouteRequestResult::OK))
252 .WillOnce(InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); })); 252 .WillOnce(InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); }));
253 std::vector<MediaRouteResponseCallback> route_response_callbacks; 253 std::vector<MediaRouteResponseCallback> route_response_callbacks;
254 route_response_callbacks.push_back(base::Bind( 254 route_response_callbacks.push_back(base::Bind(
255 &RouteResponseCallbackHandler::Invoke, base::Unretained(&handler))); 255 &RouteResponseCallbackHandler::Invoke, base::Unretained(&handler)));
256 router()->CreateRoute( 256 router()->CreateRoute(
257 kSource, kSinkId, GURL(kOrigin), nullptr, route_response_callbacks, 257 kSource, kSinkId, GURL(kOrigin), nullptr, route_response_callbacks,
258 base::TimeDelta::FromMilliseconds(kTimeoutMillis), false); 258 base::TimeDelta::FromMilliseconds(kTimeoutMillis), false);
259 run_loop.Run(); 259 run_loop.Run();
260 } 260 }
261 261
262 TEST_F(MediaRouterMojoImplTest, CreateOffTheRecordRoute) { 262 TEST_F(MediaRouterMojoImplTest, CreateIncognitoRoute) {
263 MediaSource media_source(kSource); 263 MediaSource media_source(kSource);
264 MediaRoute expected_route(kRouteId, media_source, kSinkId, "", false, "", 264 MediaRoute expected_route(kRouteId, media_source, kSinkId, "", false, "",
265 false); 265 false);
266 expected_route.set_off_the_record(true); 266 expected_route.set_incognito(true);
267 267
268 // Use a lambda function as an invocation target here to work around 268 // Use a lambda function as an invocation target here to work around
269 // a limitation with GMock::Invoke that prevents it from using move-only types 269 // a limitation with GMock::Invoke that prevents it from using move-only types
270 // in runnable parameter lists. 270 // in runnable parameter lists.
271 EXPECT_CALL(mock_media_route_provider_, 271 EXPECT_CALL(mock_media_route_provider_,
272 CreateRoute(mojo::String(kSource), mojo::String(kSinkId), _, 272 CreateRoute(mojo::String(kSource), mojo::String(kSinkId), _,
273 mojo::String(kOrigin), kInvalidTabId, _, _, _)) 273 mojo::String(kOrigin), kInvalidTabId, _, _, _))
274 .WillOnce(Invoke( 274 .WillOnce(Invoke(
275 [](const mojo::String& source, const mojo::String& sink, 275 [](const mojo::String& source, const mojo::String& sink,
276 const mojo::String& presentation_id, const mojo::String& origin, 276 const mojo::String& presentation_id, const mojo::String& origin,
277 int tab_id, int64_t timeout_millis, bool off_the_record, 277 int tab_id, int64_t timeout_millis, bool incognito,
278 const interfaces::MediaRouteProvider::CreateRouteCallback& cb) { 278 const interfaces::MediaRouteProvider::CreateRouteCallback& cb) {
279 interfaces::MediaRoutePtr route = CreateMojoRoute(); 279 interfaces::MediaRoutePtr route = CreateMojoRoute();
280 route->custom_controller_path = "custom/controller/path"; 280 route->custom_controller_path = "custom/controller/path";
281 route->off_the_record = true; 281 route->incognito = true;
282 cb.Run(std::move(route), mojo::String(), 282 cb.Run(std::move(route), mojo::String(),
283 interfaces::RouteRequestResultCode::OK); 283 interfaces::RouteRequestResultCode::OK);
284 })); 284 }));
285 285
286 base::RunLoop run_loop; 286 base::RunLoop run_loop;
287 RouteResponseCallbackHandler handler; 287 RouteResponseCallbackHandler handler;
288 EXPECT_CALL(handler, DoInvoke(Pointee(Equals(expected_route)), Not(""), "", 288 EXPECT_CALL(handler, DoInvoke(Pointee(Equals(expected_route)), Not(""), "",
289 RouteRequestResult::OK)) 289 RouteRequestResult::OK))
290 .WillOnce(InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); })); 290 .WillOnce(InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); }));
291 std::vector<MediaRouteResponseCallback> route_response_callbacks; 291 std::vector<MediaRouteResponseCallback> route_response_callbacks;
292 route_response_callbacks.push_back(base::Bind( 292 route_response_callbacks.push_back(base::Bind(
293 &RouteResponseCallbackHandler::Invoke, base::Unretained(&handler))); 293 &RouteResponseCallbackHandler::Invoke, base::Unretained(&handler)));
294 router()->CreateRoute( 294 router()->CreateRoute(
295 kSource, kSinkId, GURL(kOrigin), nullptr, route_response_callbacks, 295 kSource, kSinkId, GURL(kOrigin), nullptr, route_response_callbacks,
296 base::TimeDelta::FromMilliseconds(kTimeoutMillis), true); 296 base::TimeDelta::FromMilliseconds(kTimeoutMillis), true);
297 run_loop.Run(); 297 run_loop.Run();
298 } 298 }
299 299
300 TEST_F(MediaRouterMojoImplTest, CreateRouteFails) { 300 TEST_F(MediaRouterMojoImplTest, CreateRouteFails) {
301 EXPECT_CALL( 301 EXPECT_CALL(
302 mock_media_route_provider_, 302 mock_media_route_provider_,
303 CreateRoute(mojo::String(kSource), mojo::String(kSinkId), _, 303 CreateRoute(mojo::String(kSource), mojo::String(kSinkId), _,
304 mojo::String(kOrigin), kInvalidTabId, kTimeoutMillis, _, _)) 304 mojo::String(kOrigin), kInvalidTabId, kTimeoutMillis, _, _))
305 .WillOnce(Invoke( 305 .WillOnce(Invoke(
306 [](const mojo::String& source, const mojo::String& sink, 306 [](const mojo::String& source, const mojo::String& sink,
307 const mojo::String& presentation_id, const mojo::String& origin, 307 const mojo::String& presentation_id, const mojo::String& origin,
308 int tab_id, int64_t timeout_millis, bool off_the_record, 308 int tab_id, int64_t timeout_millis, bool incognito,
309 const interfaces::MediaRouteProvider::CreateRouteCallback& cb) { 309 const interfaces::MediaRouteProvider::CreateRouteCallback& cb) {
310 cb.Run(interfaces::MediaRoutePtr(), mojo::String(kError), 310 cb.Run(interfaces::MediaRoutePtr(), mojo::String(kError),
311 interfaces::RouteRequestResultCode::TIMED_OUT); 311 interfaces::RouteRequestResultCode::TIMED_OUT);
312 })); 312 }));
313 313
314 RouteResponseCallbackHandler handler; 314 RouteResponseCallbackHandler handler;
315 base::RunLoop run_loop; 315 base::RunLoop run_loop;
316 EXPECT_CALL(handler, 316 EXPECT_CALL(handler,
317 DoInvoke(nullptr, "", kError, RouteRequestResult::TIMED_OUT)) 317 DoInvoke(nullptr, "", kError, RouteRequestResult::TIMED_OUT))
318 .WillOnce(InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); })); 318 .WillOnce(InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); }));
319 std::vector<MediaRouteResponseCallback> route_response_callbacks; 319 std::vector<MediaRouteResponseCallback> route_response_callbacks;
320 route_response_callbacks.push_back(base::Bind( 320 route_response_callbacks.push_back(base::Bind(
321 &RouteResponseCallbackHandler::Invoke, base::Unretained(&handler))); 321 &RouteResponseCallbackHandler::Invoke, base::Unretained(&handler)));
322 router()->CreateRoute( 322 router()->CreateRoute(
323 kSource, kSinkId, GURL(kOrigin), nullptr, route_response_callbacks, 323 kSource, kSinkId, GURL(kOrigin), nullptr, route_response_callbacks,
324 base::TimeDelta::FromMilliseconds(kTimeoutMillis), false); 324 base::TimeDelta::FromMilliseconds(kTimeoutMillis), false);
325 run_loop.Run(); 325 run_loop.Run();
326 } 326 }
327 327
328 TEST_F(MediaRouterMojoImplTest, CreateRouteOffTheRecordMismatchFails) { 328 TEST_F(MediaRouterMojoImplTest, CreateRouteIncognitoMismatchFails) {
329 EXPECT_CALL(mock_media_route_provider_, 329 EXPECT_CALL(mock_media_route_provider_,
330 CreateRoute(mojo::String(kSource), mojo::String(kSinkId), _, 330 CreateRoute(mojo::String(kSource), mojo::String(kSinkId), _,
331 mojo::String(kOrigin), kInvalidTabId, kTimeoutMillis, 331 mojo::String(kOrigin), kInvalidTabId, kTimeoutMillis,
332 true, _)) 332 true, _))
333 .WillOnce(Invoke( 333 .WillOnce(Invoke(
334 [](const mojo::String& source, const mojo::String& sink, 334 [](const mojo::String& source, const mojo::String& sink,
335 const mojo::String& presentation_id, const mojo::String& origin, 335 const mojo::String& presentation_id, const mojo::String& origin,
336 int tab_id, int64_t timeout_millis, bool off_the_record, 336 int tab_id, int64_t timeout_millis, bool incognito,
337 const interfaces::MediaRouteProvider::CreateRouteCallback& cb) { 337 const interfaces::MediaRouteProvider::CreateRouteCallback& cb) {
338 cb.Run(CreateMojoRoute(), mojo::String(), 338 cb.Run(CreateMojoRoute(), mojo::String(),
339 interfaces::RouteRequestResultCode::OK); 339 interfaces::RouteRequestResultCode::OK);
340 })); 340 }));
341 341
342 RouteResponseCallbackHandler handler; 342 RouteResponseCallbackHandler handler;
343 base::RunLoop run_loop; 343 base::RunLoop run_loop;
344 std::string error( 344 std::string error("Mismatch in incognito status: request = 1, response = 0");
345 "Mismatch in off the record status: request = 1, response = 0");
346 EXPECT_CALL(handler, DoInvoke(nullptr, "", error, 345 EXPECT_CALL(handler, DoInvoke(nullptr, "", error,
347 RouteRequestResult::OFF_THE_RECORD_MISMATCH)) 346 RouteRequestResult::INCOGNITO_MISMATCH))
348 .WillOnce(InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); })); 347 .WillOnce(InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); }));
349 std::vector<MediaRouteResponseCallback> route_response_callbacks; 348 std::vector<MediaRouteResponseCallback> route_response_callbacks;
350 route_response_callbacks.push_back(base::Bind( 349 route_response_callbacks.push_back(base::Bind(
351 &RouteResponseCallbackHandler::Invoke, base::Unretained(&handler))); 350 &RouteResponseCallbackHandler::Invoke, base::Unretained(&handler)));
352 router()->CreateRoute( 351 router()->CreateRoute(
353 kSource, kSinkId, GURL(kOrigin), nullptr, route_response_callbacks, 352 kSource, kSinkId, GURL(kOrigin), nullptr, route_response_callbacks,
354 base::TimeDelta::FromMilliseconds(kTimeoutMillis), true); 353 base::TimeDelta::FromMilliseconds(kTimeoutMillis), true);
355 run_loop.Run(); 354 run_loop.Run();
356 } 355 }
357 356
358 TEST_F(MediaRouterMojoImplTest, OffTheRecordRoutesTerminatedOnProfileShutdown) { 357 TEST_F(MediaRouterMojoImplTest, IncognitoRoutesTerminatedOnProfileShutdown) {
359 interfaces::MediaRoutePtr route = CreateMojoRoute(); 358 interfaces::MediaRoutePtr route = CreateMojoRoute();
360 route->off_the_record = true; 359 route->incognito = true;
361 360
362 EXPECT_CALL(mock_media_route_provider_, 361 EXPECT_CALL(mock_media_route_provider_,
363 CreateRoute(mojo::String(kSource), mojo::String(kSinkId), _, 362 CreateRoute(mojo::String(kSource), mojo::String(kSinkId), _,
364 mojo::String(kOrigin), kInvalidTabId, kTimeoutMillis, 363 mojo::String(kOrigin), kInvalidTabId, kTimeoutMillis,
365 true, _)) 364 true, _))
366 .WillOnce(Invoke( 365 .WillOnce(Invoke(
367 [](const mojo::String& source, const mojo::String& sink, 366 [](const mojo::String& source, const mojo::String& sink,
368 const mojo::String& presentation_id, const mojo::String& origin, 367 const mojo::String& presentation_id, const mojo::String& origin,
369 int tab_id, int64_t timeout_millis, bool off_the_record, 368 int tab_id, int64_t timeout_millis, bool incognito,
370 const interfaces::MediaRouteProvider::CreateRouteCallback& cb) { 369 const interfaces::MediaRouteProvider::CreateRouteCallback& cb) {
371 interfaces::MediaRoutePtr route = CreateMojoRoute(); 370 interfaces::MediaRoutePtr route = CreateMojoRoute();
372 route->off_the_record = true; 371 route->incognito = true;
373 cb.Run(std::move(route), mojo::String(), 372 cb.Run(std::move(route), mojo::String(),
374 interfaces::RouteRequestResultCode::OK); 373 interfaces::RouteRequestResultCode::OK);
375 })); 374 }));
376 base::RunLoop run_loop; 375 base::RunLoop run_loop;
377 router()->CreateRoute(kSource, kSinkId, GURL(kOrigin), nullptr, 376 router()->CreateRoute(kSource, kSinkId, GURL(kOrigin), nullptr,
378 std::vector<MediaRouteResponseCallback>(), 377 std::vector<MediaRouteResponseCallback>(),
379 base::TimeDelta::FromMilliseconds(kTimeoutMillis), 378 base::TimeDelta::FromMilliseconds(kTimeoutMillis),
380 true); 379 true);
381 mojo::Array<interfaces::MediaRoutePtr> mojo_routes(1); 380 mojo::Array<interfaces::MediaRoutePtr> mojo_routes(1);
382 mojo_routes[0] = route->Clone(); 381 mojo_routes[0] = route->Clone();
383 router()->OnRoutesUpdated(std::move(mojo_routes), mojo::String(), 382 router()->OnRoutesUpdated(std::move(mojo_routes), mojo::String(),
384 mojo::Array<mojo::String>()); 383 mojo::Array<mojo::String>());
385 384
386 // TODO(mfoltz): Where possible, convert other tests to use RunUntilIdle 385 // TODO(mfoltz): Where possible, convert other tests to use RunUntilIdle
387 // instead of manually calling Run/Quit on the run loop. 386 // instead of manually calling Run/Quit on the run loop.
388 run_loop.RunUntilIdle(); 387 run_loop.RunUntilIdle();
389 388
390 EXPECT_CALL(mock_media_route_provider_, 389 EXPECT_CALL(mock_media_route_provider_,
391 TerminateRoute(mojo::String(kRouteId), _)) 390 TerminateRoute(mojo::String(kRouteId), _))
392 .WillOnce(Invoke([]( 391 .WillOnce(Invoke([](
393 const mojo::String& route_id, 392 const mojo::String& route_id,
394 const interfaces::MediaRouteProvider::TerminateRouteCallback& cb) { 393 const interfaces::MediaRouteProvider::TerminateRouteCallback& cb) {
395 cb.Run(mojo::String(), interfaces::RouteRequestResultCode::OK); 394 cb.Run(mojo::String(), interfaces::RouteRequestResultCode::OK);
396 })); 395 }));
397 396
398 base::RunLoop run_loop2; 397 base::RunLoop run_loop2;
399 router()->OnOffTheRecordProfileShutdown(); 398 router()->OnIncognitoProfileShutdown();
400 run_loop2.RunUntilIdle(); 399 run_loop2.RunUntilIdle();
401 } 400 }
402 401
403 TEST_F(MediaRouterMojoImplTest, JoinRoute) { 402 TEST_F(MediaRouterMojoImplTest, JoinRoute) {
404 MediaSource media_source(kSource); 403 MediaSource media_source(kSource);
405 MediaRoute expected_route(kRouteId, media_source, kSinkId, "", false, "", 404 MediaRoute expected_route(kRouteId, media_source, kSinkId, "", false, "",
406 false); 405 false);
407 406
408 interfaces::MediaRoutePtr route = CreateMojoRoute(); 407 interfaces::MediaRoutePtr route = CreateMojoRoute();
409 // Make sure the MR has received an update with the route, so it knows there 408 // Make sure the MR has received an update with the route, so it knows there
410 // is a route to join. 409 // is a route to join.
411 mojo::Array<interfaces::MediaRoutePtr> mojo_routes(1); 410 mojo::Array<interfaces::MediaRoutePtr> mojo_routes(1);
412 mojo_routes[0] = route->Clone(); 411 mojo_routes[0] = route->Clone();
413 router()->OnRoutesUpdated(std::move(mojo_routes), mojo::String(), 412 router()->OnRoutesUpdated(std::move(mojo_routes), mojo::String(),
414 mojo::Array<mojo::String>()); 413 mojo::Array<mojo::String>());
415 EXPECT_TRUE(router()->HasJoinableRoute()); 414 EXPECT_TRUE(router()->HasJoinableRoute());
416 415
417 // Use a lambda function as an invocation target here to work around 416 // Use a lambda function as an invocation target here to work around
418 // a limitation with GMock::Invoke that prevents it from using move-only types 417 // a limitation with GMock::Invoke that prevents it from using move-only types
419 // in runnable parameter lists. 418 // in runnable parameter lists.
420 EXPECT_CALL( 419 EXPECT_CALL(
421 mock_media_route_provider_, 420 mock_media_route_provider_,
422 JoinRoute(mojo::String(kSource), mojo::String(kPresentationId), 421 JoinRoute(mojo::String(kSource), mojo::String(kPresentationId),
423 mojo::String(kOrigin), kInvalidTabId, kTimeoutMillis, _, _)) 422 mojo::String(kOrigin), kInvalidTabId, kTimeoutMillis, _, _))
424 .WillOnce(Invoke([&route]( 423 .WillOnce(Invoke([&route](
425 const mojo::String& source, const mojo::String& presentation_id, 424 const mojo::String& source, const mojo::String& presentation_id,
426 const mojo::String& origin, int tab_id, int64_t timeout_millis, 425 const mojo::String& origin, int tab_id, int64_t timeout_millis,
427 bool off_the_record, 426 bool incognito,
428 const interfaces::MediaRouteProvider::JoinRouteCallback& cb) { 427 const interfaces::MediaRouteProvider::JoinRouteCallback& cb) {
429 cb.Run(std::move(route), mojo::String(), 428 cb.Run(std::move(route), mojo::String(),
430 interfaces::RouteRequestResultCode::OK); 429 interfaces::RouteRequestResultCode::OK);
431 })); 430 }));
432 431
433 RouteResponseCallbackHandler handler; 432 RouteResponseCallbackHandler handler;
434 base::RunLoop run_loop; 433 base::RunLoop run_loop;
435 EXPECT_CALL(handler, DoInvoke(Pointee(Equals(expected_route)), Not(""), "", 434 EXPECT_CALL(handler, DoInvoke(Pointee(Equals(expected_route)), Not(""), "",
436 RouteRequestResult::OK)) 435 RouteRequestResult::OK))
437 .WillOnce(InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); })); 436 .WillOnce(InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); }));
(...skipping 30 matching lines...) Expand all
468 mojo::Array<mojo::String>()); 467 mojo::Array<mojo::String>());
469 EXPECT_TRUE(router()->HasJoinableRoute()); 468 EXPECT_TRUE(router()->HasJoinableRoute());
470 469
471 EXPECT_CALL( 470 EXPECT_CALL(
472 mock_media_route_provider_, 471 mock_media_route_provider_,
473 JoinRoute(mojo::String(kSource), mojo::String(kPresentationId), 472 JoinRoute(mojo::String(kSource), mojo::String(kPresentationId),
474 mojo::String(kOrigin), kInvalidTabId, kTimeoutMillis, _, _)) 473 mojo::String(kOrigin), kInvalidTabId, kTimeoutMillis, _, _))
475 .WillOnce(Invoke( 474 .WillOnce(Invoke(
476 [](const mojo::String& source, const mojo::String& presentation_id, 475 [](const mojo::String& source, const mojo::String& presentation_id,
477 const mojo::String& origin, int tab_id, int64_t timeout_millis, 476 const mojo::String& origin, int tab_id, int64_t timeout_millis,
478 bool off_the_record, 477 bool incognito,
479 const interfaces::MediaRouteProvider::JoinRouteCallback& cb) { 478 const interfaces::MediaRouteProvider::JoinRouteCallback& cb) {
480 cb.Run(interfaces::MediaRoutePtr(), mojo::String(kError), 479 cb.Run(interfaces::MediaRoutePtr(), mojo::String(kError),
481 interfaces::RouteRequestResultCode::TIMED_OUT); 480 interfaces::RouteRequestResultCode::TIMED_OUT);
482 })); 481 }));
483 482
484 RouteResponseCallbackHandler handler; 483 RouteResponseCallbackHandler handler;
485 base::RunLoop run_loop; 484 base::RunLoop run_loop;
486 EXPECT_CALL(handler, 485 EXPECT_CALL(handler,
487 DoInvoke(nullptr, "", kError, RouteRequestResult::TIMED_OUT)) 486 DoInvoke(nullptr, "", kError, RouteRequestResult::TIMED_OUT))
488 .WillOnce(InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); })); 487 .WillOnce(InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); }));
489 std::vector<MediaRouteResponseCallback> route_response_callbacks; 488 std::vector<MediaRouteResponseCallback> route_response_callbacks;
490 route_response_callbacks.push_back(base::Bind( 489 route_response_callbacks.push_back(base::Bind(
491 &RouteResponseCallbackHandler::Invoke, base::Unretained(&handler))); 490 &RouteResponseCallbackHandler::Invoke, base::Unretained(&handler)));
492 router()->JoinRoute(kSource, kPresentationId, GURL(kOrigin), nullptr, 491 router()->JoinRoute(kSource, kPresentationId, GURL(kOrigin), nullptr,
493 route_response_callbacks, 492 route_response_callbacks,
494 base::TimeDelta::FromMilliseconds(kTimeoutMillis), false); 493 base::TimeDelta::FromMilliseconds(kTimeoutMillis), false);
495 run_loop.Run(); 494 run_loop.Run();
496 } 495 }
497 496
498 TEST_F(MediaRouterMojoImplTest, JoinRouteOffTheRecordMismatchFails) { 497 TEST_F(MediaRouterMojoImplTest, JoinRouteIncognitoMismatchFails) {
499 interfaces::MediaRoutePtr route = CreateMojoRoute(); 498 interfaces::MediaRoutePtr route = CreateMojoRoute();
500 499
501 // Make sure the MR has received an update with the route, so it knows there 500 // Make sure the MR has received an update with the route, so it knows there
502 // is a route to join. 501 // is a route to join.
503 mojo::Array<interfaces::MediaRoutePtr> mojo_routes(1); 502 mojo::Array<interfaces::MediaRoutePtr> mojo_routes(1);
504 mojo_routes[0] = route->Clone(); 503 mojo_routes[0] = route->Clone();
505 router()->OnRoutesUpdated(std::move(mojo_routes), mojo::String(), 504 router()->OnRoutesUpdated(std::move(mojo_routes), mojo::String(),
506 mojo::Array<mojo::String>()); 505 mojo::Array<mojo::String>());
507 EXPECT_TRUE(router()->HasJoinableRoute()); 506 EXPECT_TRUE(router()->HasJoinableRoute());
508 507
509 // Use a lambda function as an invocation target here to work around 508 // Use a lambda function as an invocation target here to work around
510 // a limitation with GMock::Invoke that prevents it from using move-only types 509 // a limitation with GMock::Invoke that prevents it from using move-only types
511 // in runnable parameter lists. 510 // in runnable parameter lists.
512 EXPECT_CALL( 511 EXPECT_CALL(
513 mock_media_route_provider_, 512 mock_media_route_provider_,
514 JoinRoute(mojo::String(kSource), mojo::String(kPresentationId), 513 JoinRoute(mojo::String(kSource), mojo::String(kPresentationId),
515 mojo::String(kOrigin), kInvalidTabId, kTimeoutMillis, true, _)) 514 mojo::String(kOrigin), kInvalidTabId, kTimeoutMillis, true, _))
516 .WillOnce(Invoke([&route]( 515 .WillOnce(Invoke([&route](
517 const mojo::String& source, const mojo::String& presentation_id, 516 const mojo::String& source, const mojo::String& presentation_id,
518 const mojo::String& origin, int tab_id, int64_t timeout_millis, 517 const mojo::String& origin, int tab_id, int64_t timeout_millis,
519 bool off_the_record, 518 bool incognito,
520 const interfaces::MediaRouteProvider::JoinRouteCallback& cb) { 519 const interfaces::MediaRouteProvider::JoinRouteCallback& cb) {
521 cb.Run(std::move(route), mojo::String(), 520 cb.Run(std::move(route), mojo::String(),
522 interfaces::RouteRequestResultCode::OK); 521 interfaces::RouteRequestResultCode::OK);
523 })); 522 }));
524 523
525 RouteResponseCallbackHandler handler; 524 RouteResponseCallbackHandler handler;
526 base::RunLoop run_loop; 525 base::RunLoop run_loop;
527 std::string error( 526 std::string error("Mismatch in incognito status: request = 1, response = 0");
528 "Mismatch in off the record status: request = 1, response = 0");
529 EXPECT_CALL(handler, DoInvoke(nullptr, "", error, 527 EXPECT_CALL(handler, DoInvoke(nullptr, "", error,
530 RouteRequestResult::OFF_THE_RECORD_MISMATCH)) 528 RouteRequestResult::INCOGNITO_MISMATCH))
531 .WillOnce(InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); })); 529 .WillOnce(InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); }));
532 std::vector<MediaRouteResponseCallback> route_response_callbacks; 530 std::vector<MediaRouteResponseCallback> route_response_callbacks;
533 route_response_callbacks.push_back(base::Bind( 531 route_response_callbacks.push_back(base::Bind(
534 &RouteResponseCallbackHandler::Invoke, base::Unretained(&handler))); 532 &RouteResponseCallbackHandler::Invoke, base::Unretained(&handler)));
535 router()->JoinRoute(kSource, kPresentationId, GURL(kOrigin), nullptr, 533 router()->JoinRoute(kSource, kPresentationId, GURL(kOrigin), nullptr,
536 route_response_callbacks, 534 route_response_callbacks,
537 base::TimeDelta::FromMilliseconds(kTimeoutMillis), true); 535 base::TimeDelta::FromMilliseconds(kTimeoutMillis), true);
538 run_loop.Run(); 536 run_loop.Run();
539 } 537 }
540 538
541 TEST_F(MediaRouterMojoImplTest, ConnectRouteByRouteId) { 539 TEST_F(MediaRouterMojoImplTest, ConnectRouteByRouteId) {
542 MediaSource media_source(kSource); 540 MediaSource media_source(kSource);
543 MediaRoute expected_route(kRouteId, media_source, kSinkId, "", false, "", 541 MediaRoute expected_route(kRouteId, media_source, kSinkId, "", false, "",
544 false); 542 false);
545 expected_route.set_off_the_record(false); 543 expected_route.set_incognito(false);
546 interfaces::MediaRoutePtr route = CreateMojoRoute(); 544 interfaces::MediaRoutePtr route = CreateMojoRoute();
547 545
548 // Use a lambda function as an invocation target here to work around 546 // Use a lambda function as an invocation target here to work around
549 // a limitation with GMock::Invoke that prevents it from using move-only types 547 // a limitation with GMock::Invoke that prevents it from using move-only types
550 // in runnable parameter lists. 548 // in runnable parameter lists.
551 EXPECT_CALL( 549 EXPECT_CALL(
552 mock_media_route_provider_, 550 mock_media_route_provider_,
553 ConnectRouteByRouteId(mojo::String(kSource), mojo::String(kRouteId), _, 551 ConnectRouteByRouteId(mojo::String(kSource), mojo::String(kRouteId), _,
554 mojo::String(kOrigin), kInvalidTabId, 552 mojo::String(kOrigin), kInvalidTabId,
555 kTimeoutMillis, false, _)) 553 kTimeoutMillis, false, _))
556 .WillOnce(Invoke([&route]( 554 .WillOnce(Invoke([&route](
557 const mojo::String& source, const mojo::String& route_id, 555 const mojo::String& source, const mojo::String& route_id,
558 const mojo::String& presentation_id, const mojo::String& origin, 556 const mojo::String& presentation_id, const mojo::String& origin,
559 int tab_id, int64_t timeout_millis, bool off_the_record, 557 int tab_id, int64_t timeout_millis, bool incognito,
560 const interfaces::MediaRouteProvider::JoinRouteCallback& cb) { 558 const interfaces::MediaRouteProvider::JoinRouteCallback& cb) {
561 cb.Run(std::move(route), mojo::String(), 559 cb.Run(std::move(route), mojo::String(),
562 interfaces::RouteRequestResultCode::OK); 560 interfaces::RouteRequestResultCode::OK);
563 })); 561 }));
564 562
565 RouteResponseCallbackHandler handler; 563 RouteResponseCallbackHandler handler;
566 base::RunLoop run_loop; 564 base::RunLoop run_loop;
567 EXPECT_CALL(handler, DoInvoke(Pointee(Equals(expected_route)), Not(""), "", 565 EXPECT_CALL(handler, DoInvoke(Pointee(Equals(expected_route)), Not(""), "",
568 RouteRequestResult::OK)) 566 RouteRequestResult::OK))
569 .WillOnce(InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); })); 567 .WillOnce(InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); }));
570 std::vector<MediaRouteResponseCallback> route_response_callbacks; 568 std::vector<MediaRouteResponseCallback> route_response_callbacks;
571 route_response_callbacks.push_back(base::Bind( 569 route_response_callbacks.push_back(base::Bind(
572 &RouteResponseCallbackHandler::Invoke, base::Unretained(&handler))); 570 &RouteResponseCallbackHandler::Invoke, base::Unretained(&handler)));
573 router()->ConnectRouteByRouteId( 571 router()->ConnectRouteByRouteId(
574 kSource, kRouteId, GURL(kOrigin), nullptr, route_response_callbacks, 572 kSource, kRouteId, GURL(kOrigin), nullptr, route_response_callbacks,
575 base::TimeDelta::FromMilliseconds(kTimeoutMillis), false); 573 base::TimeDelta::FromMilliseconds(kTimeoutMillis), false);
576 run_loop.Run(); 574 run_loop.Run();
577 } 575 }
578 576
579 TEST_F(MediaRouterMojoImplTest, ConnectRouteByRouteIdFails) { 577 TEST_F(MediaRouterMojoImplTest, ConnectRouteByRouteIdFails) {
580 EXPECT_CALL( 578 EXPECT_CALL(
581 mock_media_route_provider_, 579 mock_media_route_provider_,
582 ConnectRouteByRouteId(mojo::String(kSource), mojo::String(kRouteId), _, 580 ConnectRouteByRouteId(mojo::String(kSource), mojo::String(kRouteId), _,
583 mojo::String(kOrigin), kInvalidTabId, 581 mojo::String(kOrigin), kInvalidTabId,
584 kTimeoutMillis, true, _)) 582 kTimeoutMillis, true, _))
585 .WillOnce(Invoke( 583 .WillOnce(Invoke(
586 [](const mojo::String& source, const mojo::String& route_id, 584 [](const mojo::String& source, const mojo::String& route_id,
587 const mojo::String& presentation_id, const mojo::String& origin, 585 const mojo::String& presentation_id, const mojo::String& origin,
588 int tab_id, int64_t timeout_millis, bool off_the_record, 586 int tab_id, int64_t timeout_millis, bool incognito,
589 const interfaces::MediaRouteProvider::JoinRouteCallback& cb) { 587 const interfaces::MediaRouteProvider::JoinRouteCallback& cb) {
590 cb.Run(interfaces::MediaRoutePtr(), mojo::String(kError), 588 cb.Run(interfaces::MediaRoutePtr(), mojo::String(kError),
591 interfaces::RouteRequestResultCode::TIMED_OUT); 589 interfaces::RouteRequestResultCode::TIMED_OUT);
592 })); 590 }));
593 591
594 RouteResponseCallbackHandler handler; 592 RouteResponseCallbackHandler handler;
595 base::RunLoop run_loop; 593 base::RunLoop run_loop;
596 EXPECT_CALL(handler, 594 EXPECT_CALL(handler,
597 DoInvoke(nullptr, "", kError, RouteRequestResult::TIMED_OUT)) 595 DoInvoke(nullptr, "", kError, RouteRequestResult::TIMED_OUT))
598 .WillOnce(InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); })); 596 .WillOnce(InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); }));
599 std::vector<MediaRouteResponseCallback> route_response_callbacks; 597 std::vector<MediaRouteResponseCallback> route_response_callbacks;
600 route_response_callbacks.push_back(base::Bind( 598 route_response_callbacks.push_back(base::Bind(
601 &RouteResponseCallbackHandler::Invoke, base::Unretained(&handler))); 599 &RouteResponseCallbackHandler::Invoke, base::Unretained(&handler)));
602 router()->ConnectRouteByRouteId( 600 router()->ConnectRouteByRouteId(
603 kSource, kRouteId, GURL(kOrigin), nullptr, route_response_callbacks, 601 kSource, kRouteId, GURL(kOrigin), nullptr, route_response_callbacks,
604 base::TimeDelta::FromMilliseconds(kTimeoutMillis), true); 602 base::TimeDelta::FromMilliseconds(kTimeoutMillis), true);
605 run_loop.Run(); 603 run_loop.Run();
606 } 604 }
607 605
608 TEST_F(MediaRouterMojoImplTest, ConnectRouteByIdOffTheRecordMismatchFails) { 606 TEST_F(MediaRouterMojoImplTest, ConnectRouteByIdIncognitoMismatchFails) {
609 interfaces::MediaRoutePtr route = CreateMojoRoute(); 607 interfaces::MediaRoutePtr route = CreateMojoRoute();
610 608
611 // Use a lambda function as an invocation target here to work around 609 // Use a lambda function as an invocation target here to work around
612 // a limitation with GMock::Invoke that prevents it from using move-only types 610 // a limitation with GMock::Invoke that prevents it from using move-only types
613 // in runnable parameter lists. 611 // in runnable parameter lists.
614 EXPECT_CALL( 612 EXPECT_CALL(
615 mock_media_route_provider_, 613 mock_media_route_provider_,
616 ConnectRouteByRouteId(mojo::String(kSource), mojo::String(kRouteId), _, 614 ConnectRouteByRouteId(mojo::String(kSource), mojo::String(kRouteId), _,
617 mojo::String(kOrigin), kInvalidTabId, 615 mojo::String(kOrigin), kInvalidTabId,
618 kTimeoutMillis, true, _)) 616 kTimeoutMillis, true, _))
619 .WillOnce(Invoke([&route]( 617 .WillOnce(Invoke([&route](
620 const mojo::String& source, const mojo::String& route_id, 618 const mojo::String& source, const mojo::String& route_id,
621 const mojo::String& presentation_id, const mojo::String& origin, 619 const mojo::String& presentation_id, const mojo::String& origin,
622 int tab_id, int64_t timeout_millis, bool off_the_record, 620 int tab_id, int64_t timeout_millis, bool incognito,
623 const interfaces::MediaRouteProvider::JoinRouteCallback& cb) { 621 const interfaces::MediaRouteProvider::JoinRouteCallback& cb) {
624 cb.Run(std::move(route), mojo::String(), 622 cb.Run(std::move(route), mojo::String(),
625 interfaces::RouteRequestResultCode::OK); 623 interfaces::RouteRequestResultCode::OK);
626 })); 624 }));
627 625
628 RouteResponseCallbackHandler handler; 626 RouteResponseCallbackHandler handler;
629 base::RunLoop run_loop; 627 base::RunLoop run_loop;
630 std::string error( 628 std::string error("Mismatch in incognito status: request = 1, response = 0");
631 "Mismatch in off the record status: request = 1, response = 0");
632 EXPECT_CALL(handler, DoInvoke(nullptr, "", error, 629 EXPECT_CALL(handler, DoInvoke(nullptr, "", error,
633 RouteRequestResult::OFF_THE_RECORD_MISMATCH)) 630 RouteRequestResult::INCOGNITO_MISMATCH))
634 .WillOnce(InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); })); 631 .WillOnce(InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); }));
635 std::vector<MediaRouteResponseCallback> route_response_callbacks; 632 std::vector<MediaRouteResponseCallback> route_response_callbacks;
636 route_response_callbacks.push_back(base::Bind( 633 route_response_callbacks.push_back(base::Bind(
637 &RouteResponseCallbackHandler::Invoke, base::Unretained(&handler))); 634 &RouteResponseCallbackHandler::Invoke, base::Unretained(&handler)));
638 router()->ConnectRouteByRouteId( 635 router()->ConnectRouteByRouteId(
639 kSource, kRouteId, GURL(kOrigin), nullptr, route_response_callbacks, 636 kSource, kRouteId, GURL(kOrigin), nullptr, route_response_callbacks,
640 base::TimeDelta::FromMilliseconds(kTimeoutMillis), true); 637 base::TimeDelta::FromMilliseconds(kTimeoutMillis), true);
641 run_loop.Run(); 638 run_loop.Run();
642 } 639 }
643 640
(...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after
920 EXPECT_EQ(observer_captured, &different_routes_observer); 917 EXPECT_EQ(observer_captured, &different_routes_observer);
921 router()->RegisterMediaRoutesObserver(&routes_observer); 918 router()->RegisterMediaRoutesObserver(&routes_observer);
922 router()->RegisterMediaRoutesObserver(&extra_routes_observer); 919 router()->RegisterMediaRoutesObserver(&extra_routes_observer);
923 router()->RegisterMediaRoutesObserver(&different_routes_observer); 920 router()->RegisterMediaRoutesObserver(&different_routes_observer);
924 921
925 std::vector<MediaRoute> expected_routes; 922 std::vector<MediaRoute> expected_routes;
926 expected_routes.push_back(MediaRoute(kRouteId, media_source, kSinkId, 923 expected_routes.push_back(MediaRoute(kRouteId, media_source, kSinkId,
927 kDescription, false, "", false)); 924 kDescription, false, "", false));
928 MediaRoute incognito_expected_route(kRouteId2, media_source, kSinkId, 925 MediaRoute incognito_expected_route(kRouteId2, media_source, kSinkId,
929 kDescription, false, "", false); 926 kDescription, false, "", false);
930 incognito_expected_route.set_off_the_record(true); 927 incognito_expected_route.set_incognito(true);
931 expected_routes.push_back(incognito_expected_route); 928 expected_routes.push_back(incognito_expected_route);
932 std::vector<MediaRoute::Id> expected_joinable_route_ids; 929 std::vector<MediaRoute::Id> expected_joinable_route_ids;
933 expected_joinable_route_ids.push_back(kJoinableRouteId); 930 expected_joinable_route_ids.push_back(kJoinableRouteId);
934 expected_joinable_route_ids.push_back(kJoinableRouteId2); 931 expected_joinable_route_ids.push_back(kJoinableRouteId2);
935 932
936 mojo::Array<mojo::String> mojo_joinable_routes(2); 933 mojo::Array<mojo::String> mojo_joinable_routes(2);
937 mojo_joinable_routes[0] = kJoinableRouteId; 934 mojo_joinable_routes[0] = kJoinableRouteId;
938 mojo_joinable_routes[1] = kJoinableRouteId2; 935 mojo_joinable_routes[1] = kJoinableRouteId2;
939 936
940 mojo::Array<interfaces::MediaRoutePtr> mojo_routes(2); 937 mojo::Array<interfaces::MediaRoutePtr> mojo_routes(2);
941 mojo_routes[0] = CreateMojoRoute(); 938 mojo_routes[0] = CreateMojoRoute();
942 mojo_routes[1] = CreateMojoRoute(); 939 mojo_routes[1] = CreateMojoRoute();
943 mojo_routes[1]->media_route_id = kRouteId2; 940 mojo_routes[1]->media_route_id = kRouteId2;
944 mojo_routes[1]->off_the_record = true; 941 mojo_routes[1]->incognito = true;
945 942
946 EXPECT_CALL(routes_observer, OnRoutesUpdated(SequenceEquals(expected_routes), 943 EXPECT_CALL(routes_observer, OnRoutesUpdated(SequenceEquals(expected_routes),
947 expected_joinable_route_ids)); 944 expected_joinable_route_ids));
948 EXPECT_CALL(extra_routes_observer, 945 EXPECT_CALL(extra_routes_observer,
949 OnRoutesUpdated(SequenceEquals(expected_routes), 946 OnRoutesUpdated(SequenceEquals(expected_routes),
950 expected_joinable_route_ids)); 947 expected_joinable_route_ids));
951 EXPECT_CALL(different_routes_observer, 948 EXPECT_CALL(different_routes_observer,
952 OnRoutesUpdated(SequenceEquals(expected_routes), 949 OnRoutesUpdated(SequenceEquals(expected_routes),
953 expected_joinable_route_ids)) 950 expected_joinable_route_ids))
954 .Times(0); 951 .Times(0);
(...skipping 645 matching lines...) Expand 10 before | Expand all | Expand 10 after
1600 EXPECT_CALL(mock_media_route_provider_, 1597 EXPECT_CALL(mock_media_route_provider_,
1601 UpdateMediaSinks(mojo::String(MediaSourceForDesktop().id()))) 1598 UpdateMediaSinks(mojo::String(MediaSourceForDesktop().id())))
1602 .WillOnce(InvokeWithoutArgs([&run_loop2]() { 1599 .WillOnce(InvokeWithoutArgs([&run_loop2]() {
1603 run_loop2.Quit(); 1600 run_loop2.Quit();
1604 })); 1601 }));
1605 1602
1606 run_loop2.Run(); 1603 run_loop2.Run();
1607 } 1604 }
1608 1605
1609 } // namespace media_router 1606 } // 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