| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |