| 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 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 107 } | 107 } |
| 108 | 108 |
| 109 interfaces::MediaRoutePtr CreateMojoRoute() { | 109 interfaces::MediaRoutePtr CreateMojoRoute() { |
| 110 interfaces::MediaRoutePtr route = interfaces::MediaRoute::New(); | 110 interfaces::MediaRoutePtr route = interfaces::MediaRoute::New(); |
| 111 route->media_source = kSource; | 111 route->media_source = kSource; |
| 112 route->media_sink_id = kSinkId; | 112 route->media_sink_id = kSinkId; |
| 113 route->media_route_id = kRouteId; | 113 route->media_route_id = kRouteId; |
| 114 route->description = kDescription; | 114 route->description = kDescription; |
| 115 route->is_local = true; | 115 route->is_local = true; |
| 116 route->for_display = true; | 116 route->for_display = true; |
| 117 route->off_the_record = false; | 117 route->incognito = false; |
| 118 return route; | 118 return route; |
| 119 } | 119 } |
| 120 | 120 |
| 121 } // namespace | 121 } // namespace |
| 122 | 122 |
| 123 class RouteResponseCallbackHandler { | 123 class RouteResponseCallbackHandler { |
| 124 public: | 124 public: |
| 125 void Invoke(const RouteRequestResult& result) { | 125 void Invoke(const RouteRequestResult& result) { |
| 126 DoInvoke(result.route(), result.presentation_id(), result.error(), | 126 DoInvoke(result.route(), result.presentation_id(), result.error(), |
| 127 result.result_code()); | 127 result.result_code()); |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 219 | 219 |
| 220 // Use a lambda function as an invocation target here to work around | 220 // Use a lambda function as an invocation target here to work around |
| 221 // a limitation with GMock::Invoke that prevents it from using move-only types | 221 // a limitation with GMock::Invoke that prevents it from using move-only types |
| 222 // in runnable parameter lists. | 222 // in runnable parameter lists. |
| 223 EXPECT_CALL(mock_media_route_provider_, | 223 EXPECT_CALL(mock_media_route_provider_, |
| 224 CreateRoute(mojo::String(kSource), mojo::String(kSinkId), _, | 224 CreateRoute(mojo::String(kSource), mojo::String(kSinkId), _, |
| 225 mojo::String(kOrigin), kInvalidTabId, _, _, _)) | 225 mojo::String(kOrigin), kInvalidTabId, _, _, _)) |
| 226 .WillOnce(Invoke( | 226 .WillOnce(Invoke( |
| 227 [](const mojo::String& source, const mojo::String& sink, | 227 [](const mojo::String& source, const mojo::String& sink, |
| 228 const mojo::String& presentation_id, const mojo::String& origin, | 228 const mojo::String& presentation_id, const mojo::String& origin, |
| 229 int tab_id, int64_t timeout_millis, bool off_the_record, | 229 int tab_id, int64_t timeout_millis, bool incognito, |
| 230 const interfaces::MediaRouteProvider::CreateRouteCallback& cb) { | 230 const interfaces::MediaRouteProvider::CreateRouteCallback& cb) { |
| 231 cb.Run(CreateMojoRoute(), mojo::String(), | 231 cb.Run(CreateMojoRoute(), mojo::String(), |
| 232 interfaces::RouteRequestResultCode::OK); | 232 interfaces::RouteRequestResultCode::OK); |
| 233 })); | 233 })); |
| 234 | 234 |
| 235 base::RunLoop run_loop; | 235 base::RunLoop run_loop; |
| 236 RouteResponseCallbackHandler handler; | 236 RouteResponseCallbackHandler handler; |
| 237 EXPECT_CALL(handler, DoInvoke(Pointee(Equals(expected_route)), Not(""), "", | 237 EXPECT_CALL(handler, DoInvoke(Pointee(Equals(expected_route)), Not(""), "", |
| 238 RouteRequestResult::OK)) | 238 RouteRequestResult::OK)) |
| 239 .WillOnce(InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); })); | 239 .WillOnce(InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); })); |
| 240 std::vector<MediaRouteResponseCallback> route_response_callbacks; | 240 std::vector<MediaRouteResponseCallback> route_response_callbacks; |
| 241 route_response_callbacks.push_back(base::Bind( | 241 route_response_callbacks.push_back(base::Bind( |
| 242 &RouteResponseCallbackHandler::Invoke, base::Unretained(&handler))); | 242 &RouteResponseCallbackHandler::Invoke, base::Unretained(&handler))); |
| 243 router()->CreateRoute( | 243 router()->CreateRoute( |
| 244 kSource, kSinkId, GURL(kOrigin), nullptr, route_response_callbacks, | 244 kSource, kSinkId, GURL(kOrigin), nullptr, route_response_callbacks, |
| 245 base::TimeDelta::FromMilliseconds(kTimeoutMillis), false); | 245 base::TimeDelta::FromMilliseconds(kTimeoutMillis), false); |
| 246 run_loop.Run(); | 246 run_loop.Run(); |
| 247 } | 247 } |
| 248 | 248 |
| 249 TEST_F(MediaRouterMojoImplTest, CreateOffTheRecordRoute) { | 249 TEST_F(MediaRouterMojoImplTest, CreateOffTheRecordRoute) { |
| 250 MediaSource media_source(kSource); | 250 MediaSource media_source(kSource); |
| 251 MediaRoute expected_route(kRouteId, media_source, kSinkId, "", false, "", | 251 MediaRoute expected_route(kRouteId, media_source, kSinkId, "", false, "", |
| 252 false); | 252 false); |
| 253 expected_route.set_off_the_record(true); | 253 expected_route.set_incognito(true); |
| 254 | 254 |
| 255 // Use a lambda function as an invocation target here to work around | 255 // Use a lambda function as an invocation target here to work around |
| 256 // a limitation with GMock::Invoke that prevents it from using move-only types | 256 // a limitation with GMock::Invoke that prevents it from using move-only types |
| 257 // in runnable parameter lists. | 257 // in runnable parameter lists. |
| 258 EXPECT_CALL(mock_media_route_provider_, | 258 EXPECT_CALL(mock_media_route_provider_, |
| 259 CreateRoute(mojo::String(kSource), mojo::String(kSinkId), _, | 259 CreateRoute(mojo::String(kSource), mojo::String(kSinkId), _, |
| 260 mojo::String(kOrigin), kInvalidTabId, _, _, _)) | 260 mojo::String(kOrigin), kInvalidTabId, _, _, _)) |
| 261 .WillOnce(Invoke( | 261 .WillOnce(Invoke( |
| 262 [](const mojo::String& source, const mojo::String& sink, | 262 [](const mojo::String& source, const mojo::String& sink, |
| 263 const mojo::String& presentation_id, const mojo::String& origin, | 263 const mojo::String& presentation_id, const mojo::String& origin, |
| 264 int tab_id, int64_t timeout_millis, bool off_the_record, | 264 int tab_id, int64_t timeout_millis, bool incognito, |
| 265 const interfaces::MediaRouteProvider::CreateRouteCallback& cb) { | 265 const interfaces::MediaRouteProvider::CreateRouteCallback& cb) { |
| 266 interfaces::MediaRoutePtr route = CreateMojoRoute(); | 266 interfaces::MediaRoutePtr route = CreateMojoRoute(); |
| 267 route->custom_controller_path = "custom/controller/path"; | 267 route->custom_controller_path = "custom/controller/path"; |
| 268 route->off_the_record = true; | 268 route->incognito = true; |
| 269 cb.Run(std::move(route), mojo::String(), | 269 cb.Run(std::move(route), mojo::String(), |
| 270 interfaces::RouteRequestResultCode::OK); | 270 interfaces::RouteRequestResultCode::OK); |
| 271 })); | 271 })); |
| 272 | 272 |
| 273 base::RunLoop run_loop; | 273 base::RunLoop run_loop; |
| 274 RouteResponseCallbackHandler handler; | 274 RouteResponseCallbackHandler handler; |
| 275 EXPECT_CALL(handler, DoInvoke(Pointee(Equals(expected_route)), Not(""), "", | 275 EXPECT_CALL(handler, DoInvoke(Pointee(Equals(expected_route)), Not(""), "", |
| 276 RouteRequestResult::OK)) | 276 RouteRequestResult::OK)) |
| 277 .WillOnce(InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); })); | 277 .WillOnce(InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); })); |
| 278 std::vector<MediaRouteResponseCallback> route_response_callbacks; | 278 std::vector<MediaRouteResponseCallback> route_response_callbacks; |
| 279 route_response_callbacks.push_back(base::Bind( | 279 route_response_callbacks.push_back(base::Bind( |
| 280 &RouteResponseCallbackHandler::Invoke, base::Unretained(&handler))); | 280 &RouteResponseCallbackHandler::Invoke, base::Unretained(&handler))); |
| 281 router()->CreateRoute( | 281 router()->CreateRoute( |
| 282 kSource, kSinkId, GURL(kOrigin), nullptr, route_response_callbacks, | 282 kSource, kSinkId, GURL(kOrigin), nullptr, route_response_callbacks, |
| 283 base::TimeDelta::FromMilliseconds(kTimeoutMillis), true); | 283 base::TimeDelta::FromMilliseconds(kTimeoutMillis), true); |
| 284 run_loop.Run(); | 284 run_loop.Run(); |
| 285 } | 285 } |
| 286 | 286 |
| 287 TEST_F(MediaRouterMojoImplTest, CreateRouteFails) { | 287 TEST_F(MediaRouterMojoImplTest, CreateRouteFails) { |
| 288 EXPECT_CALL( | 288 EXPECT_CALL( |
| 289 mock_media_route_provider_, | 289 mock_media_route_provider_, |
| 290 CreateRoute(mojo::String(kSource), mojo::String(kSinkId), _, | 290 CreateRoute(mojo::String(kSource), mojo::String(kSinkId), _, |
| 291 mojo::String(kOrigin), kInvalidTabId, kTimeoutMillis, _, _)) | 291 mojo::String(kOrigin), kInvalidTabId, kTimeoutMillis, _, _)) |
| 292 .WillOnce(Invoke( | 292 .WillOnce(Invoke( |
| 293 [](const mojo::String& source, const mojo::String& sink, | 293 [](const mojo::String& source, const mojo::String& sink, |
| 294 const mojo::String& presentation_id, const mojo::String& origin, | 294 const mojo::String& presentation_id, const mojo::String& origin, |
| 295 int tab_id, int64_t timeout_millis, bool off_the_record, | 295 int tab_id, int64_t timeout_millis, bool incognito, |
| 296 const interfaces::MediaRouteProvider::CreateRouteCallback& cb) { | 296 const interfaces::MediaRouteProvider::CreateRouteCallback& cb) { |
| 297 cb.Run(interfaces::MediaRoutePtr(), mojo::String(kError), | 297 cb.Run(interfaces::MediaRoutePtr(), mojo::String(kError), |
| 298 interfaces::RouteRequestResultCode::TIMED_OUT); | 298 interfaces::RouteRequestResultCode::TIMED_OUT); |
| 299 })); | 299 })); |
| 300 | 300 |
| 301 RouteResponseCallbackHandler handler; | 301 RouteResponseCallbackHandler handler; |
| 302 base::RunLoop run_loop; | 302 base::RunLoop run_loop; |
| 303 EXPECT_CALL(handler, | 303 EXPECT_CALL(handler, |
| 304 DoInvoke(nullptr, "", kError, RouteRequestResult::TIMED_OUT)) | 304 DoInvoke(nullptr, "", kError, RouteRequestResult::TIMED_OUT)) |
| 305 .WillOnce(InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); })); | 305 .WillOnce(InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); })); |
| 306 std::vector<MediaRouteResponseCallback> route_response_callbacks; | 306 std::vector<MediaRouteResponseCallback> route_response_callbacks; |
| 307 route_response_callbacks.push_back(base::Bind( | 307 route_response_callbacks.push_back(base::Bind( |
| 308 &RouteResponseCallbackHandler::Invoke, base::Unretained(&handler))); | 308 &RouteResponseCallbackHandler::Invoke, base::Unretained(&handler))); |
| 309 router()->CreateRoute( | 309 router()->CreateRoute( |
| 310 kSource, kSinkId, GURL(kOrigin), nullptr, route_response_callbacks, | 310 kSource, kSinkId, GURL(kOrigin), nullptr, route_response_callbacks, |
| 311 base::TimeDelta::FromMilliseconds(kTimeoutMillis), false); | 311 base::TimeDelta::FromMilliseconds(kTimeoutMillis), false); |
| 312 run_loop.Run(); | 312 run_loop.Run(); |
| 313 } | 313 } |
| 314 | 314 |
| 315 TEST_F(MediaRouterMojoImplTest, CreateRouteOffTheRecordMismatchFails) { | 315 TEST_F(MediaRouterMojoImplTest, CreateRouteOffTheRecordMismatchFails) { |
| 316 EXPECT_CALL(mock_media_route_provider_, | 316 EXPECT_CALL(mock_media_route_provider_, |
| 317 CreateRoute(mojo::String(kSource), mojo::String(kSinkId), _, | 317 CreateRoute(mojo::String(kSource), mojo::String(kSinkId), _, |
| 318 mojo::String(kOrigin), kInvalidTabId, kTimeoutMillis, | 318 mojo::String(kOrigin), kInvalidTabId, kTimeoutMillis, |
| 319 true, _)) | 319 true, _)) |
| 320 .WillOnce(Invoke( | 320 .WillOnce(Invoke( |
| 321 [](const mojo::String& source, const mojo::String& sink, | 321 [](const mojo::String& source, const mojo::String& sink, |
| 322 const mojo::String& presentation_id, const mojo::String& origin, | 322 const mojo::String& presentation_id, const mojo::String& origin, |
| 323 int tab_id, int64_t timeout_millis, bool off_the_record, | 323 int tab_id, int64_t timeout_millis, bool incognito, |
| 324 const interfaces::MediaRouteProvider::CreateRouteCallback& cb) { | 324 const interfaces::MediaRouteProvider::CreateRouteCallback& cb) { |
| 325 cb.Run(CreateMojoRoute(), mojo::String(), | 325 cb.Run(CreateMojoRoute(), mojo::String(), |
| 326 interfaces::RouteRequestResultCode::OK); | 326 interfaces::RouteRequestResultCode::OK); |
| 327 })); | 327 })); |
| 328 | 328 |
| 329 RouteResponseCallbackHandler handler; | 329 RouteResponseCallbackHandler handler; |
| 330 base::RunLoop run_loop; | 330 base::RunLoop run_loop; |
| 331 std::string error( | 331 std::string error("Mismatch in incognito status: request = 1, response = 0"); |
| 332 "Mismatch in off the record status: request = 1, response = 0"); | |
| 333 EXPECT_CALL(handler, DoInvoke(nullptr, "", error, | 332 EXPECT_CALL(handler, DoInvoke(nullptr, "", error, |
| 334 RouteRequestResult::OFF_THE_RECORD_MISMATCH)) | 333 RouteRequestResult::INCOGNITO_MISMATCH)) |
| 335 .WillOnce(InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); })); | 334 .WillOnce(InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); })); |
| 336 std::vector<MediaRouteResponseCallback> route_response_callbacks; | 335 std::vector<MediaRouteResponseCallback> route_response_callbacks; |
| 337 route_response_callbacks.push_back(base::Bind( | 336 route_response_callbacks.push_back(base::Bind( |
| 338 &RouteResponseCallbackHandler::Invoke, base::Unretained(&handler))); | 337 &RouteResponseCallbackHandler::Invoke, base::Unretained(&handler))); |
| 339 router()->CreateRoute( | 338 router()->CreateRoute( |
| 340 kSource, kSinkId, GURL(kOrigin), nullptr, route_response_callbacks, | 339 kSource, kSinkId, GURL(kOrigin), nullptr, route_response_callbacks, |
| 341 base::TimeDelta::FromMilliseconds(kTimeoutMillis), true); | 340 base::TimeDelta::FromMilliseconds(kTimeoutMillis), true); |
| 342 run_loop.Run(); | 341 run_loop.Run(); |
| 343 } | 342 } |
| 344 | 343 |
| 345 TEST_F(MediaRouterMojoImplTest, OffTheRecordRoutesTerminatedOnProfileShutdown) { | 344 TEST_F(MediaRouterMojoImplTest, OffTheRecordRoutesTerminatedOnProfileShutdown) { |
| 346 interfaces::MediaRoutePtr route = CreateMojoRoute(); | 345 interfaces::MediaRoutePtr route = CreateMojoRoute(); |
| 347 route->off_the_record = true; | 346 route->incognito = true; |
| 348 | 347 |
| 349 EXPECT_CALL(mock_media_route_provider_, | 348 EXPECT_CALL(mock_media_route_provider_, |
| 350 CreateRoute(mojo::String(kSource), mojo::String(kSinkId), _, | 349 CreateRoute(mojo::String(kSource), mojo::String(kSinkId), _, |
| 351 mojo::String(kOrigin), kInvalidTabId, kTimeoutMillis, | 350 mojo::String(kOrigin), kInvalidTabId, kTimeoutMillis, |
| 352 true, _)) | 351 true, _)) |
| 353 .WillOnce(Invoke( | 352 .WillOnce(Invoke( |
| 354 [](const mojo::String& source, const mojo::String& sink, | 353 [](const mojo::String& source, const mojo::String& sink, |
| 355 const mojo::String& presentation_id, const mojo::String& origin, | 354 const mojo::String& presentation_id, const mojo::String& origin, |
| 356 int tab_id, int64_t timeout_millis, bool off_the_record, | 355 int tab_id, int64_t timeout_millis, bool incognito, |
| 357 const interfaces::MediaRouteProvider::CreateRouteCallback& cb) { | 356 const interfaces::MediaRouteProvider::CreateRouteCallback& cb) { |
| 358 interfaces::MediaRoutePtr route = CreateMojoRoute(); | 357 interfaces::MediaRoutePtr route = CreateMojoRoute(); |
| 359 route->off_the_record = true; | 358 route->incognito = true; |
| 360 cb.Run(std::move(route), mojo::String(), | 359 cb.Run(std::move(route), mojo::String(), |
| 361 interfaces::RouteRequestResultCode::OK); | 360 interfaces::RouteRequestResultCode::OK); |
| 362 })); | 361 })); |
| 363 base::RunLoop run_loop; | 362 base::RunLoop run_loop; |
| 364 router()->CreateRoute(kSource, kSinkId, GURL(kOrigin), nullptr, | 363 router()->CreateRoute(kSource, kSinkId, GURL(kOrigin), nullptr, |
| 365 std::vector<MediaRouteResponseCallback>(), | 364 std::vector<MediaRouteResponseCallback>(), |
| 366 base::TimeDelta::FromMilliseconds(kTimeoutMillis), | 365 base::TimeDelta::FromMilliseconds(kTimeoutMillis), |
| 367 true); | 366 true); |
| 368 mojo::Array<interfaces::MediaRoutePtr> mojo_routes(1); | 367 mojo::Array<interfaces::MediaRoutePtr> mojo_routes(1); |
| 369 mojo_routes[0] = route->Clone(); | 368 mojo_routes[0] = route->Clone(); |
| (...skipping 28 matching lines...) Expand all Loading... |
| 398 // Use a lambda function as an invocation target here to work around | 397 // Use a lambda function as an invocation target here to work around |
| 399 // a limitation with GMock::Invoke that prevents it from using move-only types | 398 // a limitation with GMock::Invoke that prevents it from using move-only types |
| 400 // in runnable parameter lists. | 399 // in runnable parameter lists. |
| 401 EXPECT_CALL( | 400 EXPECT_CALL( |
| 402 mock_media_route_provider_, | 401 mock_media_route_provider_, |
| 403 JoinRoute(mojo::String(kSource), mojo::String(kPresentationId), | 402 JoinRoute(mojo::String(kSource), mojo::String(kPresentationId), |
| 404 mojo::String(kOrigin), kInvalidTabId, kTimeoutMillis, _, _)) | 403 mojo::String(kOrigin), kInvalidTabId, kTimeoutMillis, _, _)) |
| 405 .WillOnce(Invoke([&route]( | 404 .WillOnce(Invoke([&route]( |
| 406 const mojo::String& source, const mojo::String& presentation_id, | 405 const mojo::String& source, const mojo::String& presentation_id, |
| 407 const mojo::String& origin, int tab_id, int64_t timeout_millis, | 406 const mojo::String& origin, int tab_id, int64_t timeout_millis, |
| 408 bool off_the_record, | 407 bool incognito, |
| 409 const interfaces::MediaRouteProvider::JoinRouteCallback& cb) { | 408 const interfaces::MediaRouteProvider::JoinRouteCallback& cb) { |
| 410 cb.Run(std::move(route), mojo::String(), | 409 cb.Run(std::move(route), mojo::String(), |
| 411 interfaces::RouteRequestResultCode::OK); | 410 interfaces::RouteRequestResultCode::OK); |
| 412 })); | 411 })); |
| 413 | 412 |
| 414 RouteResponseCallbackHandler handler; | 413 RouteResponseCallbackHandler handler; |
| 415 base::RunLoop run_loop; | 414 base::RunLoop run_loop; |
| 416 EXPECT_CALL(handler, DoInvoke(Pointee(Equals(expected_route)), Not(""), "", | 415 EXPECT_CALL(handler, DoInvoke(Pointee(Equals(expected_route)), Not(""), "", |
| 417 RouteRequestResult::OK)) | 416 RouteRequestResult::OK)) |
| 418 .WillOnce(InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); })); | 417 .WillOnce(InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); })); |
| (...skipping 30 matching lines...) Expand all Loading... |
| 449 mojo::Array<mojo::String>()); | 448 mojo::Array<mojo::String>()); |
| 450 EXPECT_TRUE(router()->HasJoinableRoute()); | 449 EXPECT_TRUE(router()->HasJoinableRoute()); |
| 451 | 450 |
| 452 EXPECT_CALL( | 451 EXPECT_CALL( |
| 453 mock_media_route_provider_, | 452 mock_media_route_provider_, |
| 454 JoinRoute(mojo::String(kSource), mojo::String(kPresentationId), | 453 JoinRoute(mojo::String(kSource), mojo::String(kPresentationId), |
| 455 mojo::String(kOrigin), kInvalidTabId, kTimeoutMillis, _, _)) | 454 mojo::String(kOrigin), kInvalidTabId, kTimeoutMillis, _, _)) |
| 456 .WillOnce(Invoke( | 455 .WillOnce(Invoke( |
| 457 [](const mojo::String& source, const mojo::String& presentation_id, | 456 [](const mojo::String& source, const mojo::String& presentation_id, |
| 458 const mojo::String& origin, int tab_id, int64_t timeout_millis, | 457 const mojo::String& origin, int tab_id, int64_t timeout_millis, |
| 459 bool off_the_record, | 458 bool incognito, |
| 460 const interfaces::MediaRouteProvider::JoinRouteCallback& cb) { | 459 const interfaces::MediaRouteProvider::JoinRouteCallback& cb) { |
| 461 cb.Run(interfaces::MediaRoutePtr(), mojo::String(kError), | 460 cb.Run(interfaces::MediaRoutePtr(), mojo::String(kError), |
| 462 interfaces::RouteRequestResultCode::TIMED_OUT); | 461 interfaces::RouteRequestResultCode::TIMED_OUT); |
| 463 })); | 462 })); |
| 464 | 463 |
| 465 RouteResponseCallbackHandler handler; | 464 RouteResponseCallbackHandler handler; |
| 466 base::RunLoop run_loop; | 465 base::RunLoop run_loop; |
| 467 EXPECT_CALL(handler, | 466 EXPECT_CALL(handler, |
| 468 DoInvoke(nullptr, "", kError, RouteRequestResult::TIMED_OUT)) | 467 DoInvoke(nullptr, "", kError, RouteRequestResult::TIMED_OUT)) |
| 469 .WillOnce(InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); })); | 468 .WillOnce(InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); })); |
| (...skipping 20 matching lines...) Expand all Loading... |
| 490 // Use a lambda function as an invocation target here to work around | 489 // Use a lambda function as an invocation target here to work around |
| 491 // a limitation with GMock::Invoke that prevents it from using move-only types | 490 // a limitation with GMock::Invoke that prevents it from using move-only types |
| 492 // in runnable parameter lists. | 491 // in runnable parameter lists. |
| 493 EXPECT_CALL( | 492 EXPECT_CALL( |
| 494 mock_media_route_provider_, | 493 mock_media_route_provider_, |
| 495 JoinRoute(mojo::String(kSource), mojo::String(kPresentationId), | 494 JoinRoute(mojo::String(kSource), mojo::String(kPresentationId), |
| 496 mojo::String(kOrigin), kInvalidTabId, kTimeoutMillis, true, _)) | 495 mojo::String(kOrigin), kInvalidTabId, kTimeoutMillis, true, _)) |
| 497 .WillOnce(Invoke([&route]( | 496 .WillOnce(Invoke([&route]( |
| 498 const mojo::String& source, const mojo::String& presentation_id, | 497 const mojo::String& source, const mojo::String& presentation_id, |
| 499 const mojo::String& origin, int tab_id, int64_t timeout_millis, | 498 const mojo::String& origin, int tab_id, int64_t timeout_millis, |
| 500 bool off_the_record, | 499 bool incognito, |
| 501 const interfaces::MediaRouteProvider::JoinRouteCallback& cb) { | 500 const interfaces::MediaRouteProvider::JoinRouteCallback& cb) { |
| 502 cb.Run(std::move(route), mojo::String(), | 501 cb.Run(std::move(route), mojo::String(), |
| 503 interfaces::RouteRequestResultCode::OK); | 502 interfaces::RouteRequestResultCode::OK); |
| 504 })); | 503 })); |
| 505 | 504 |
| 506 RouteResponseCallbackHandler handler; | 505 RouteResponseCallbackHandler handler; |
| 507 base::RunLoop run_loop; | 506 base::RunLoop run_loop; |
| 508 std::string error( | 507 std::string error("Mismatch in incognito status: request = 1, response = 0"); |
| 509 "Mismatch in off the record status: request = 1, response = 0"); | |
| 510 EXPECT_CALL(handler, DoInvoke(nullptr, "", error, | 508 EXPECT_CALL(handler, DoInvoke(nullptr, "", error, |
| 511 RouteRequestResult::OFF_THE_RECORD_MISMATCH)) | 509 RouteRequestResult::INCOGNITO_MISMATCH)) |
| 512 .WillOnce(InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); })); | 510 .WillOnce(InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); })); |
| 513 std::vector<MediaRouteResponseCallback> route_response_callbacks; | 511 std::vector<MediaRouteResponseCallback> route_response_callbacks; |
| 514 route_response_callbacks.push_back(base::Bind( | 512 route_response_callbacks.push_back(base::Bind( |
| 515 &RouteResponseCallbackHandler::Invoke, base::Unretained(&handler))); | 513 &RouteResponseCallbackHandler::Invoke, base::Unretained(&handler))); |
| 516 router()->JoinRoute(kSource, kPresentationId, GURL(kOrigin), nullptr, | 514 router()->JoinRoute(kSource, kPresentationId, GURL(kOrigin), nullptr, |
| 517 route_response_callbacks, | 515 route_response_callbacks, |
| 518 base::TimeDelta::FromMilliseconds(kTimeoutMillis), true); | 516 base::TimeDelta::FromMilliseconds(kTimeoutMillis), true); |
| 519 run_loop.Run(); | 517 run_loop.Run(); |
| 520 } | 518 } |
| 521 | 519 |
| 522 TEST_F(MediaRouterMojoImplTest, ConnectRouteByRouteId) { | 520 TEST_F(MediaRouterMojoImplTest, ConnectRouteByRouteId) { |
| 523 MediaSource media_source(kSource); | 521 MediaSource media_source(kSource); |
| 524 MediaRoute expected_route(kRouteId, media_source, kSinkId, "", false, "", | 522 MediaRoute expected_route(kRouteId, media_source, kSinkId, "", false, "", |
| 525 false); | 523 false); |
| 526 expected_route.set_off_the_record(false); | 524 expected_route.set_incognito(false); |
| 527 interfaces::MediaRoutePtr route = CreateMojoRoute(); | 525 interfaces::MediaRoutePtr route = CreateMojoRoute(); |
| 528 | 526 |
| 529 // Use a lambda function as an invocation target here to work around | 527 // Use a lambda function as an invocation target here to work around |
| 530 // a limitation with GMock::Invoke that prevents it from using move-only types | 528 // a limitation with GMock::Invoke that prevents it from using move-only types |
| 531 // in runnable parameter lists. | 529 // in runnable parameter lists. |
| 532 EXPECT_CALL( | 530 EXPECT_CALL( |
| 533 mock_media_route_provider_, | 531 mock_media_route_provider_, |
| 534 ConnectRouteByRouteId(mojo::String(kSource), mojo::String(kRouteId), _, | 532 ConnectRouteByRouteId(mojo::String(kSource), mojo::String(kRouteId), _, |
| 535 mojo::String(kOrigin), kInvalidTabId, | 533 mojo::String(kOrigin), kInvalidTabId, |
| 536 kTimeoutMillis, false, _)) | 534 kTimeoutMillis, false, _)) |
| 537 .WillOnce(Invoke([&route]( | 535 .WillOnce(Invoke([&route]( |
| 538 const mojo::String& source, const mojo::String& route_id, | 536 const mojo::String& source, const mojo::String& route_id, |
| 539 const mojo::String& presentation_id, const mojo::String& origin, | 537 const mojo::String& presentation_id, const mojo::String& origin, |
| 540 int tab_id, int64_t timeout_millis, bool off_the_record, | 538 int tab_id, int64_t timeout_millis, bool incognito, |
| 541 const interfaces::MediaRouteProvider::JoinRouteCallback& cb) { | 539 const interfaces::MediaRouteProvider::JoinRouteCallback& cb) { |
| 542 cb.Run(std::move(route), mojo::String(), | 540 cb.Run(std::move(route), mojo::String(), |
| 543 interfaces::RouteRequestResultCode::OK); | 541 interfaces::RouteRequestResultCode::OK); |
| 544 })); | 542 })); |
| 545 | 543 |
| 546 RouteResponseCallbackHandler handler; | 544 RouteResponseCallbackHandler handler; |
| 547 base::RunLoop run_loop; | 545 base::RunLoop run_loop; |
| 548 EXPECT_CALL(handler, DoInvoke(Pointee(Equals(expected_route)), Not(""), "", | 546 EXPECT_CALL(handler, DoInvoke(Pointee(Equals(expected_route)), Not(""), "", |
| 549 RouteRequestResult::OK)) | 547 RouteRequestResult::OK)) |
| 550 .WillOnce(InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); })); | 548 .WillOnce(InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); })); |
| 551 std::vector<MediaRouteResponseCallback> route_response_callbacks; | 549 std::vector<MediaRouteResponseCallback> route_response_callbacks; |
| 552 route_response_callbacks.push_back(base::Bind( | 550 route_response_callbacks.push_back(base::Bind( |
| 553 &RouteResponseCallbackHandler::Invoke, base::Unretained(&handler))); | 551 &RouteResponseCallbackHandler::Invoke, base::Unretained(&handler))); |
| 554 router()->ConnectRouteByRouteId( | 552 router()->ConnectRouteByRouteId( |
| 555 kSource, kRouteId, GURL(kOrigin), nullptr, route_response_callbacks, | 553 kSource, kRouteId, GURL(kOrigin), nullptr, route_response_callbacks, |
| 556 base::TimeDelta::FromMilliseconds(kTimeoutMillis), false); | 554 base::TimeDelta::FromMilliseconds(kTimeoutMillis), false); |
| 557 run_loop.Run(); | 555 run_loop.Run(); |
| 558 } | 556 } |
| 559 | 557 |
| 560 TEST_F(MediaRouterMojoImplTest, ConnectRouteByRouteIdFails) { | 558 TEST_F(MediaRouterMojoImplTest, ConnectRouteByRouteIdFails) { |
| 561 EXPECT_CALL( | 559 EXPECT_CALL( |
| 562 mock_media_route_provider_, | 560 mock_media_route_provider_, |
| 563 ConnectRouteByRouteId(mojo::String(kSource), mojo::String(kRouteId), _, | 561 ConnectRouteByRouteId(mojo::String(kSource), mojo::String(kRouteId), _, |
| 564 mojo::String(kOrigin), kInvalidTabId, | 562 mojo::String(kOrigin), kInvalidTabId, |
| 565 kTimeoutMillis, true, _)) | 563 kTimeoutMillis, true, _)) |
| 566 .WillOnce(Invoke( | 564 .WillOnce(Invoke( |
| 567 [](const mojo::String& source, const mojo::String& route_id, | 565 [](const mojo::String& source, const mojo::String& route_id, |
| 568 const mojo::String& presentation_id, const mojo::String& origin, | 566 const mojo::String& presentation_id, const mojo::String& origin, |
| 569 int tab_id, int64_t timeout_millis, bool off_the_record, | 567 int tab_id, int64_t timeout_millis, bool incognito, |
| 570 const interfaces::MediaRouteProvider::JoinRouteCallback& cb) { | 568 const interfaces::MediaRouteProvider::JoinRouteCallback& cb) { |
| 571 cb.Run(interfaces::MediaRoutePtr(), mojo::String(kError), | 569 cb.Run(interfaces::MediaRoutePtr(), mojo::String(kError), |
| 572 interfaces::RouteRequestResultCode::TIMED_OUT); | 570 interfaces::RouteRequestResultCode::TIMED_OUT); |
| 573 })); | 571 })); |
| 574 | 572 |
| 575 RouteResponseCallbackHandler handler; | 573 RouteResponseCallbackHandler handler; |
| 576 base::RunLoop run_loop; | 574 base::RunLoop run_loop; |
| 577 EXPECT_CALL(handler, | 575 EXPECT_CALL(handler, |
| 578 DoInvoke(nullptr, "", kError, RouteRequestResult::TIMED_OUT)) | 576 DoInvoke(nullptr, "", kError, RouteRequestResult::TIMED_OUT)) |
| 579 .WillOnce(InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); })); | 577 .WillOnce(InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); })); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 593 // a limitation with GMock::Invoke that prevents it from using move-only types | 591 // a limitation with GMock::Invoke that prevents it from using move-only types |
| 594 // in runnable parameter lists. | 592 // in runnable parameter lists. |
| 595 EXPECT_CALL( | 593 EXPECT_CALL( |
| 596 mock_media_route_provider_, | 594 mock_media_route_provider_, |
| 597 ConnectRouteByRouteId(mojo::String(kSource), mojo::String(kRouteId), _, | 595 ConnectRouteByRouteId(mojo::String(kSource), mojo::String(kRouteId), _, |
| 598 mojo::String(kOrigin), kInvalidTabId, | 596 mojo::String(kOrigin), kInvalidTabId, |
| 599 kTimeoutMillis, true, _)) | 597 kTimeoutMillis, true, _)) |
| 600 .WillOnce(Invoke([&route]( | 598 .WillOnce(Invoke([&route]( |
| 601 const mojo::String& source, const mojo::String& route_id, | 599 const mojo::String& source, const mojo::String& route_id, |
| 602 const mojo::String& presentation_id, const mojo::String& origin, | 600 const mojo::String& presentation_id, const mojo::String& origin, |
| 603 int tab_id, int64_t timeout_millis, bool off_the_record, | 601 int tab_id, int64_t timeout_millis, bool incognito, |
| 604 const interfaces::MediaRouteProvider::JoinRouteCallback& cb) { | 602 const interfaces::MediaRouteProvider::JoinRouteCallback& cb) { |
| 605 cb.Run(std::move(route), mojo::String(), | 603 cb.Run(std::move(route), mojo::String(), |
| 606 interfaces::RouteRequestResultCode::OK); | 604 interfaces::RouteRequestResultCode::OK); |
| 607 })); | 605 })); |
| 608 | 606 |
| 609 RouteResponseCallbackHandler handler; | 607 RouteResponseCallbackHandler handler; |
| 610 base::RunLoop run_loop; | 608 base::RunLoop run_loop; |
| 611 std::string error( | 609 std::string error("Mismatch in incognito status: request = 1, response = 0"); |
| 612 "Mismatch in off the record status: request = 1, response = 0"); | |
| 613 EXPECT_CALL(handler, DoInvoke(nullptr, "", error, | 610 EXPECT_CALL(handler, DoInvoke(nullptr, "", error, |
| 614 RouteRequestResult::OFF_THE_RECORD_MISMATCH)) | 611 RouteRequestResult::INCOGNITO_MISMATCH)) |
| 615 .WillOnce(InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); })); | 612 .WillOnce(InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); })); |
| 616 std::vector<MediaRouteResponseCallback> route_response_callbacks; | 613 std::vector<MediaRouteResponseCallback> route_response_callbacks; |
| 617 route_response_callbacks.push_back(base::Bind( | 614 route_response_callbacks.push_back(base::Bind( |
| 618 &RouteResponseCallbackHandler::Invoke, base::Unretained(&handler))); | 615 &RouteResponseCallbackHandler::Invoke, base::Unretained(&handler))); |
| 619 router()->ConnectRouteByRouteId( | 616 router()->ConnectRouteByRouteId( |
| 620 kSource, kRouteId, GURL(kOrigin), nullptr, route_response_callbacks, | 617 kSource, kRouteId, GURL(kOrigin), nullptr, route_response_callbacks, |
| 621 base::TimeDelta::FromMilliseconds(kTimeoutMillis), true); | 618 base::TimeDelta::FromMilliseconds(kTimeoutMillis), true); |
| 622 run_loop.Run(); | 619 run_loop.Run(); |
| 623 } | 620 } |
| 624 | 621 |
| (...skipping 250 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 875 EXPECT_EQ(observer_captured, &different_routes_observer); | 872 EXPECT_EQ(observer_captured, &different_routes_observer); |
| 876 router()->RegisterMediaRoutesObserver(&routes_observer); | 873 router()->RegisterMediaRoutesObserver(&routes_observer); |
| 877 router()->RegisterMediaRoutesObserver(&extra_routes_observer); | 874 router()->RegisterMediaRoutesObserver(&extra_routes_observer); |
| 878 router()->RegisterMediaRoutesObserver(&different_routes_observer); | 875 router()->RegisterMediaRoutesObserver(&different_routes_observer); |
| 879 | 876 |
| 880 std::vector<MediaRoute> expected_routes; | 877 std::vector<MediaRoute> expected_routes; |
| 881 expected_routes.push_back(MediaRoute(kRouteId, media_source, kSinkId, | 878 expected_routes.push_back(MediaRoute(kRouteId, media_source, kSinkId, |
| 882 kDescription, false, "", false)); | 879 kDescription, false, "", false)); |
| 883 MediaRoute incognito_expected_route(kRouteId2, media_source, kSinkId, | 880 MediaRoute incognito_expected_route(kRouteId2, media_source, kSinkId, |
| 884 kDescription, false, "", false); | 881 kDescription, false, "", false); |
| 885 incognito_expected_route.set_off_the_record(true); | 882 incognito_expected_route.set_incognito(true); |
| 886 expected_routes.push_back(incognito_expected_route); | 883 expected_routes.push_back(incognito_expected_route); |
| 887 std::vector<MediaRoute::Id> expected_joinable_route_ids; | 884 std::vector<MediaRoute::Id> expected_joinable_route_ids; |
| 888 expected_joinable_route_ids.push_back(kJoinableRouteId); | 885 expected_joinable_route_ids.push_back(kJoinableRouteId); |
| 889 expected_joinable_route_ids.push_back(kJoinableRouteId2); | 886 expected_joinable_route_ids.push_back(kJoinableRouteId2); |
| 890 | 887 |
| 891 mojo::Array<mojo::String> mojo_joinable_routes(2); | 888 mojo::Array<mojo::String> mojo_joinable_routes(2); |
| 892 mojo_joinable_routes[0] = kJoinableRouteId; | 889 mojo_joinable_routes[0] = kJoinableRouteId; |
| 893 mojo_joinable_routes[1] = kJoinableRouteId2; | 890 mojo_joinable_routes[1] = kJoinableRouteId2; |
| 894 | 891 |
| 895 mojo::Array<interfaces::MediaRoutePtr> mojo_routes(2); | 892 mojo::Array<interfaces::MediaRoutePtr> mojo_routes(2); |
| 896 mojo_routes[0] = CreateMojoRoute(); | 893 mojo_routes[0] = CreateMojoRoute(); |
| 897 mojo_routes[1] = CreateMojoRoute(); | 894 mojo_routes[1] = CreateMojoRoute(); |
| 898 mojo_routes[1]->media_route_id = kRouteId2; | 895 mojo_routes[1]->media_route_id = kRouteId2; |
| 899 mojo_routes[1]->off_the_record = true; | 896 mojo_routes[1]->incognito = true; |
| 900 | 897 |
| 901 EXPECT_CALL(routes_observer, OnRoutesUpdated(SequenceEquals(expected_routes), | 898 EXPECT_CALL(routes_observer, OnRoutesUpdated(SequenceEquals(expected_routes), |
| 902 expected_joinable_route_ids)); | 899 expected_joinable_route_ids)); |
| 903 EXPECT_CALL(extra_routes_observer, | 900 EXPECT_CALL(extra_routes_observer, |
| 904 OnRoutesUpdated(SequenceEquals(expected_routes), | 901 OnRoutesUpdated(SequenceEquals(expected_routes), |
| 905 expected_joinable_route_ids)); | 902 expected_joinable_route_ids)); |
| 906 EXPECT_CALL(different_routes_observer, | 903 EXPECT_CALL(different_routes_observer, |
| 907 OnRoutesUpdated(SequenceEquals(expected_routes), | 904 OnRoutesUpdated(SequenceEquals(expected_routes), |
| 908 expected_joinable_route_ids)) | 905 expected_joinable_route_ids)) |
| 909 .Times(0); | 906 .Times(0); |
| (...skipping 722 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1632 EXPECT_CALL(mock_media_route_provider_, | 1629 EXPECT_CALL(mock_media_route_provider_, |
| 1633 UpdateMediaSinks(mojo::String(MediaSourceForDesktop().id()))) | 1630 UpdateMediaSinks(mojo::String(MediaSourceForDesktop().id()))) |
| 1634 .WillOnce(InvokeWithoutArgs([&run_loop2]() { | 1631 .WillOnce(InvokeWithoutArgs([&run_loop2]() { |
| 1635 run_loop2.Quit(); | 1632 run_loop2.Quit(); |
| 1636 })); | 1633 })); |
| 1637 | 1634 |
| 1638 run_loop2.Run(); | 1635 run_loop2.Run(); |
| 1639 } | 1636 } |
| 1640 | 1637 |
| 1641 } // namespace media_router | 1638 } // namespace media_router |
| OLD | NEW |