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

Side by Side Diff: content/browser/presentation/presentation_service_impl_unittest.cc

Issue 2174693004: [Presentation API] Add support to content/ for multiple URLs per PresentationRequest. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add missing TODO Created 4 years, 4 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 "content/browser/presentation/presentation_service_impl.h" 5 #include "content/browser/presentation/presentation_service_impl.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <memory> 10 #include <memory>
(...skipping 10 matching lines...) Expand all
21 #include "content/public/browser/presentation_session.h" 21 #include "content/public/browser/presentation_session.h"
22 #include "content/public/common/presentation_constants.h" 22 #include "content/public/common/presentation_constants.h"
23 #include "content/test/test_render_frame_host.h" 23 #include "content/test/test_render_frame_host.h"
24 #include "content/test/test_render_view_host.h" 24 #include "content/test/test_render_view_host.h"
25 #include "content/test/test_web_contents.h" 25 #include "content/test/test_web_contents.h"
26 #include "mojo/public/cpp/bindings/interface_ptr.h" 26 #include "mojo/public/cpp/bindings/interface_ptr.h"
27 #include "mojo/public/cpp/bindings/string.h" 27 #include "mojo/public/cpp/bindings/string.h"
28 #include "testing/gmock/include/gmock/gmock.h" 28 #include "testing/gmock/include/gmock/gmock.h"
29 29
30 using ::testing::_; 30 using ::testing::_;
31 using ::testing::ByRef;
31 using ::testing::Eq; 32 using ::testing::Eq;
32 using ::testing::InvokeWithoutArgs; 33 using ::testing::InvokeWithoutArgs;
33 using ::testing::Mock; 34 using ::testing::Mock;
34 using ::testing::Return; 35 using ::testing::Return;
35 using ::testing::SaveArg; 36 using ::testing::SaveArg;
36 37
37 namespace content { 38 namespace content {
38 39
39 namespace { 40 namespace {
40 41
41 // Matches mojo structs. 42 // Matches mojo structs.
42 MATCHER_P(Equals, expected, "") { 43 MATCHER_P(Equals, expected, "") {
43 return expected.Equals(arg); 44 return expected.Equals(arg);
44 } 45 }
45 46
46 const char *const kPresentationId = "presentationId"; 47 const char *const kPresentationId = "presentationId";
47 const char *const kPresentationUrl = "http://foo.com/index.html"; 48 const char* const kPresentationUrl1 = "http://foo.com/index.html";
49 const char* const kPresentationUrl2 = "http://example.com/index.html";
48 50
49 void DoNothing(blink::mojom::PresentationSessionInfoPtr info, 51 void DoNothing(blink::mojom::PresentationSessionInfoPtr info,
50 blink::mojom::PresentationErrorPtr error) {} 52 blink::mojom::PresentationErrorPtr error) {}
51 53
52 } // namespace 54 } // namespace
53 55
54 class MockPresentationServiceDelegate : public PresentationServiceDelegate { 56 class MockPresentationServiceDelegate : public PresentationServiceDelegate {
55 public: 57 public:
56 MOCK_METHOD3(AddObserver, 58 MOCK_METHOD3(AddObserver,
57 void(int render_process_id, 59 void(int render_process_id,
(...skipping 15 matching lines...) Expand all
73 75
74 MOCK_METHOD3(RemoveScreenAvailabilityListener, 76 MOCK_METHOD3(RemoveScreenAvailabilityListener,
75 void( 77 void(
76 int render_process_id, 78 int render_process_id,
77 int routing_id, 79 int routing_id,
78 PresentationScreenAvailabilityListener* listener)); 80 PresentationScreenAvailabilityListener* listener));
79 MOCK_METHOD2(Reset, 81 MOCK_METHOD2(Reset,
80 void( 82 void(
81 int render_process_id, 83 int render_process_id,
82 int routing_id)); 84 int routing_id));
83 MOCK_METHOD4(SetDefaultPresentationUrl, 85 MOCK_METHOD4(SetDefaultPresentationUrls,
84 void(int render_process_id, 86 void(int render_process_id,
85 int routing_id, 87 int routing_id,
86 const std::string& default_presentation_url, 88 const std::vector<std::string>& default_presentation_urls,
87 const PresentationSessionStartedCallback& callback)); 89 const PresentationSessionStartedCallback& callback));
88 MOCK_METHOD5(StartSession, 90 MOCK_METHOD5(StartSession,
89 void(int render_process_id, 91 void(int render_process_id,
90 int render_frame_id, 92 int render_frame_id,
91 const std::string& presentation_url, 93 const std::vector<std::string>& presentation_urls,
92 const PresentationSessionStartedCallback& success_cb, 94 const PresentationSessionStartedCallback& success_cb,
93 const PresentationSessionErrorCallback& error_cb)); 95 const PresentationSessionErrorCallback& error_cb));
94 MOCK_METHOD6(JoinSession, 96 MOCK_METHOD6(JoinSession,
95 void(int render_process_id, 97 void(int render_process_id,
96 int render_frame_id, 98 int render_frame_id,
97 const std::string& presentation_url, 99 const std::vector<std::string>& presentation_urls,
98 const std::string& presentation_id, 100 const std::string& presentation_id,
99 const PresentationSessionStartedCallback& success_cb, 101 const PresentationSessionStartedCallback& success_cb,
100 const PresentationSessionErrorCallback& error_cb)); 102 const PresentationSessionErrorCallback& error_cb));
101 MOCK_METHOD3(CloseConnection, 103 MOCK_METHOD3(CloseConnection,
102 void(int render_process_id, 104 void(int render_process_id,
103 int render_frame_id, 105 int render_frame_id,
104 const std::string& presentation_id)); 106 const std::string& presentation_id));
105 MOCK_METHOD3(Terminate, 107 MOCK_METHOD3(Terminate,
106 void(int render_process_id, 108 void(int render_process_id,
107 int render_frame_id, 109 int render_frame_id,
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
257 .WillOnce(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit)); 259 .WillOnce(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit));
258 listener_it->second->OnScreenAvailabilityChanged(available); 260 listener_it->second->OnScreenAvailabilityChanged(available);
259 run_loop.Run(); 261 run_loop.Run();
260 } 262 }
261 263
262 void ExpectReset() { 264 void ExpectReset() {
263 EXPECT_CALL(mock_delegate_, Reset(_, _)).Times(1); 265 EXPECT_CALL(mock_delegate_, Reset(_, _)).Times(1);
264 } 266 }
265 267
266 void ExpectCleanState() { 268 void ExpectCleanState() {
267 EXPECT_TRUE(service_impl_->default_presentation_url_.empty()); 269 EXPECT_TRUE(service_impl_->default_presentation_urls_.empty());
268 EXPECT_EQ( 270 EXPECT_EQ(
269 service_impl_->screen_availability_listeners_.find(kPresentationUrl), 271 service_impl_->screen_availability_listeners_.find(kPresentationUrl1),
270 service_impl_->screen_availability_listeners_.end()); 272 service_impl_->screen_availability_listeners_.end());
271 EXPECT_FALSE(service_impl_->on_session_messages_callback_.get()); 273 EXPECT_FALSE(service_impl_->on_session_messages_callback_.get());
272 } 274 }
273 275
274 void ExpectNewSessionCallbackSuccess( 276 void ExpectNewSessionCallbackSuccess(
275 blink::mojom::PresentationSessionInfoPtr info, 277 blink::mojom::PresentationSessionInfoPtr info,
276 blink::mojom::PresentationErrorPtr error) { 278 blink::mojom::PresentationErrorPtr error) {
277 EXPECT_FALSE(info.is_null()); 279 EXPECT_FALSE(info.is_null());
278 EXPECT_TRUE(error.is_null()); 280 EXPECT_TRUE(error.is_null());
279 if (!run_loop_quit_closure_.is_null()) 281 if (!run_loop_quit_closure_.is_null())
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
311 expected_msgs[0] = blink::mojom::SessionMessage::New(); 313 expected_msgs[0] = blink::mojom::SessionMessage::New();
312 expected_msgs[0]->type = blink::mojom::PresentationMessageType::TEXT; 314 expected_msgs[0]->type = blink::mojom::PresentationMessageType::TEXT;
313 expected_msgs[0]->message = text_msg; 315 expected_msgs[0]->message = text_msg;
314 expected_msgs[1] = blink::mojom::SessionMessage::New(); 316 expected_msgs[1] = blink::mojom::SessionMessage::New();
315 expected_msgs[1]->type = 317 expected_msgs[1]->type =
316 blink::mojom::PresentationMessageType::ARRAY_BUFFER; 318 blink::mojom::PresentationMessageType::ARRAY_BUFFER;
317 expected_msgs[1]->data = binary_data; 319 expected_msgs[1]->data = binary_data;
318 320
319 blink::mojom::PresentationSessionInfoPtr session( 321 blink::mojom::PresentationSessionInfoPtr session(
320 blink::mojom::PresentationSessionInfo::New()); 322 blink::mojom::PresentationSessionInfo::New());
321 session->url = kPresentationUrl; 323 session->url = kPresentationUrl1;
322 session->id = kPresentationId; 324 session->id = kPresentationId;
323 325
324 PresentationSessionMessageCallback message_cb; 326 PresentationSessionMessageCallback message_cb;
325 { 327 {
326 base::RunLoop run_loop; 328 base::RunLoop run_loop;
327 EXPECT_CALL(mock_delegate_, ListenForSessionMessages(_, _, _, _)) 329 EXPECT_CALL(mock_delegate_, ListenForSessionMessages(_, _, _, _))
328 .WillOnce(DoAll(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit), 330 .WillOnce(DoAll(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit),
329 SaveArg<3>(&message_cb))); 331 SaveArg<3>(&message_cb)));
330 service_ptr_->ListenForSessionMessages(session.Clone()); 332 service_ptr_->ListenForSessionMessages(std::move(session));
331 run_loop.Run(); 333 run_loop.Run();
332 } 334 }
333 335
334 ScopedVector<PresentationSessionMessage> messages; 336 ScopedVector<PresentationSessionMessage> messages;
335 std::unique_ptr<content::PresentationSessionMessage> message; 337 std::unique_ptr<content::PresentationSessionMessage> message;
336 message.reset( 338 message.reset(
337 new content::PresentationSessionMessage(PresentationMessageType::TEXT)); 339 new content::PresentationSessionMessage(PresentationMessageType::TEXT));
338 message->message = text_msg; 340 message->message = text_msg;
339 messages.push_back(std::move(message)); 341 messages.push_back(std::move(message));
340 message.reset(new content::PresentationSessionMessage( 342 message.reset(new content::PresentationSessionMessage(
(...skipping 18 matching lines...) Expand all
359 mojo::InterfacePtr<blink::mojom::PresentationService> service_ptr_; 361 mojo::InterfacePtr<blink::mojom::PresentationService> service_ptr_;
360 362
361 MockPresentationServiceClient mock_client_; 363 MockPresentationServiceClient mock_client_;
362 std::unique_ptr<mojo::Binding<blink::mojom::PresentationServiceClient>> 364 std::unique_ptr<mojo::Binding<blink::mojom::PresentationServiceClient>>
363 client_binding_; 365 client_binding_;
364 366
365 base::Closure run_loop_quit_closure_; 367 base::Closure run_loop_quit_closure_;
366 }; 368 };
367 369
368 TEST_F(PresentationServiceImplTest, ListenForScreenAvailability) { 370 TEST_F(PresentationServiceImplTest, ListenForScreenAvailability) {
369 ListenForScreenAvailabilityAndWait(kPresentationUrl, true); 371 ListenForScreenAvailabilityAndWait(kPresentationUrl1, true);
370 372
371 SimulateScreenAvailabilityChangeAndWait(kPresentationUrl, true); 373 SimulateScreenAvailabilityChangeAndWait(kPresentationUrl1, true);
372 SimulateScreenAvailabilityChangeAndWait(kPresentationUrl, false); 374 SimulateScreenAvailabilityChangeAndWait(kPresentationUrl1, false);
373 SimulateScreenAvailabilityChangeAndWait(kPresentationUrl, true); 375 SimulateScreenAvailabilityChangeAndWait(kPresentationUrl1, true);
374 } 376 }
375 377
376 TEST_F(PresentationServiceImplTest, Reset) { 378 TEST_F(PresentationServiceImplTest, Reset) {
377 ListenForScreenAvailabilityAndWait(kPresentationUrl, true); 379 ListenForScreenAvailabilityAndWait(kPresentationUrl1, true);
378 380
379 ExpectReset(); 381 ExpectReset();
380 service_impl_->Reset(); 382 service_impl_->Reset();
381 ExpectCleanState(); 383 ExpectCleanState();
382 } 384 }
383 385
384 TEST_F(PresentationServiceImplTest, DidNavigateThisFrame) { 386 TEST_F(PresentationServiceImplTest, DidNavigateThisFrame) {
385 ListenForScreenAvailabilityAndWait(kPresentationUrl, true); 387 ListenForScreenAvailabilityAndWait(kPresentationUrl1, true);
386 388
387 ExpectReset(); 389 ExpectReset();
388 service_impl_->DidNavigateAnyFrame( 390 service_impl_->DidNavigateAnyFrame(
389 contents()->GetMainFrame(), 391 contents()->GetMainFrame(),
390 content::LoadCommittedDetails(), 392 content::LoadCommittedDetails(),
391 content::FrameNavigateParams()); 393 content::FrameNavigateParams());
392 ExpectCleanState(); 394 ExpectCleanState();
393 } 395 }
394 396
395 TEST_F(PresentationServiceImplTest, DidNavigateOtherFrame) { 397 TEST_F(PresentationServiceImplTest, DidNavigateOtherFrame) {
396 ListenForScreenAvailabilityAndWait(kPresentationUrl, true); 398 ListenForScreenAvailabilityAndWait(kPresentationUrl1, true);
397 399
398 // TODO(imcheng): How to get a different RenderFrameHost? 400 // TODO(imcheng): How to get a different RenderFrameHost?
399 service_impl_->DidNavigateAnyFrame( 401 service_impl_->DidNavigateAnyFrame(
400 nullptr, 402 nullptr,
401 content::LoadCommittedDetails(), 403 content::LoadCommittedDetails(),
402 content::FrameNavigateParams()); 404 content::FrameNavigateParams());
403 405
404 // Availability is reported and callback is invoked since it was not 406 // Availability is reported and callback is invoked since it was not
405 // removed. 407 // removed.
406 SimulateScreenAvailabilityChangeAndWait(kPresentationUrl, true); 408 SimulateScreenAvailabilityChangeAndWait(kPresentationUrl1, true);
407 } 409 }
408 410
409 TEST_F(PresentationServiceImplTest, ThisRenderFrameDeleted) { 411 TEST_F(PresentationServiceImplTest, ThisRenderFrameDeleted) {
410 ListenForScreenAvailabilityAndWait(kPresentationUrl, true); 412 ListenForScreenAvailabilityAndWait(kPresentationUrl1, true);
411 413
412 ExpectReset(); 414 ExpectReset();
413 415
414 // Since the frame matched the service, |service_impl_| will be deleted. 416 // Since the frame matched the service, |service_impl_| will be deleted.
415 PresentationServiceImpl* service = service_impl_.release(); 417 PresentationServiceImpl* service = service_impl_.release();
416 EXPECT_CALL(mock_delegate_, RemoveObserver(_, _)).Times(1); 418 EXPECT_CALL(mock_delegate_, RemoveObserver(_, _)).Times(1);
417 service->RenderFrameDeleted(contents()->GetMainFrame()); 419 service->RenderFrameDeleted(contents()->GetMainFrame());
418 } 420 }
419 421
420 TEST_F(PresentationServiceImplTest, OtherRenderFrameDeleted) { 422 TEST_F(PresentationServiceImplTest, OtherRenderFrameDeleted) {
421 ListenForScreenAvailabilityAndWait(kPresentationUrl, true); 423 ListenForScreenAvailabilityAndWait(kPresentationUrl1, true);
422 424
423 // TODO(imcheng): How to get a different RenderFrameHost? 425 // TODO(imcheng): How to get a different RenderFrameHost?
424 service_impl_->RenderFrameDeleted(nullptr); 426 service_impl_->RenderFrameDeleted(nullptr);
425 427
426 // Availability is reported and callback should be invoked since listener 428 // Availability is reported and callback should be invoked since listener
427 // has not been deleted. 429 // has not been deleted.
428 SimulateScreenAvailabilityChangeAndWait(kPresentationUrl, true); 430 SimulateScreenAvailabilityChangeAndWait(kPresentationUrl1, true);
429 } 431 }
430 432
431 TEST_F(PresentationServiceImplTest, DelegateFails) { 433 TEST_F(PresentationServiceImplTest, DelegateFails) {
432 ListenForScreenAvailabilityAndWait(kPresentationUrl, false); 434 ListenForScreenAvailabilityAndWait(kPresentationUrl1, false);
433 ASSERT_EQ( 435 ASSERT_EQ(
434 service_impl_->screen_availability_listeners_.find(kPresentationUrl), 436 service_impl_->screen_availability_listeners_.find(kPresentationUrl1),
435 service_impl_->screen_availability_listeners_.end()); 437 service_impl_->screen_availability_listeners_.end());
436 } 438 }
437 439
438 TEST_F(PresentationServiceImplTest, SetDefaultPresentationUrl) { 440 TEST_F(PresentationServiceImplTest, SetDefaultPresentationUrls) {
439 std::string url1("http://fooUrl"); 441 std::vector<std::string> urls(2);
440 EXPECT_CALL(mock_delegate_, SetDefaultPresentationUrl(_, _, Eq(url1), _)) 442 urls[0] = kPresentationUrl1;
443 urls[1] = kPresentationUrl2;
444 EXPECT_CALL(mock_delegate_, SetDefaultPresentationUrls(_, _, urls, _))
441 .Times(1); 445 .Times(1);
442 service_impl_->SetDefaultPresentationURL(url1); 446 service_impl_->SetDefaultPresentationUrls(urls);
443 EXPECT_EQ(url1, service_impl_->default_presentation_url_);
444 447
445 std::string url2("http://barUrl"); 448 std::string url3("http://barUrl");
446 // Sets different DPU. 449 // Sets different DPUs.
450 std::vector<std::string> more_urls(3);
451 more_urls[0] = kPresentationUrl1;
452 more_urls[1] = kPresentationUrl2;
453 more_urls[2] = url3;
447 content::PresentationSessionStartedCallback callback; 454 content::PresentationSessionStartedCallback callback;
448 EXPECT_CALL(mock_delegate_, SetDefaultPresentationUrl(_, _, Eq(url2), _)) 455 EXPECT_CALL(mock_delegate_, SetDefaultPresentationUrls(_, _, more_urls, _))
449 .WillOnce(SaveArg<3>(&callback)); 456 .WillOnce(SaveArg<3>(&callback));
450 service_impl_->SetDefaultPresentationURL(url2); 457 service_impl_->SetDefaultPresentationUrls(more_urls);
451 EXPECT_EQ(url2, service_impl_->default_presentation_url_);
452 458
453 blink::mojom::PresentationSessionInfo session_info; 459 blink::mojom::PresentationSessionInfo session_info;
454 session_info.url = url2; 460 session_info.url = kPresentationUrl2;
455 session_info.id = kPresentationId; 461 session_info.id = kPresentationId;
456 base::RunLoop run_loop; 462 base::RunLoop run_loop;
457 EXPECT_CALL(mock_client_, OnDefaultSessionStarted(Equals(session_info))) 463 EXPECT_CALL(mock_client_, OnDefaultSessionStarted(Equals(session_info)))
458 .WillOnce(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit)); 464 .WillOnce(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit));
459 callback.Run(content::PresentationSessionInfo(url2, kPresentationId)); 465 callback.Run(
466 content::PresentationSessionInfo(kPresentationUrl2, kPresentationId));
460 run_loop.Run(); 467 run_loop.Run();
461 } 468 }
462 469
463 TEST_F(PresentationServiceImplTest, ListenForConnectionStateChange) { 470 TEST_F(PresentationServiceImplTest, ListenForConnectionStateChange) {
464 content::PresentationSessionInfo connection(kPresentationUrl, 471 content::PresentationSessionInfo connection(kPresentationUrl1,
465 kPresentationId); 472 kPresentationId);
466 content::PresentationConnectionStateChangedCallback state_changed_cb; 473 content::PresentationConnectionStateChangedCallback state_changed_cb;
467 EXPECT_CALL(mock_delegate_, ListenForConnectionStateChange(_, _, _, _)) 474 EXPECT_CALL(mock_delegate_, ListenForConnectionStateChange(_, _, _, _))
468 .WillOnce(SaveArg<3>(&state_changed_cb)); 475 .WillOnce(SaveArg<3>(&state_changed_cb));
469 service_impl_->ListenForConnectionStateChange(connection); 476 service_impl_->ListenForConnectionStateChange(connection);
470 477
471 // Trigger state change. It should be propagated back up to |mock_client_|. 478 // Trigger state change. It should be propagated back up to |mock_client_|.
472 blink::mojom::PresentationSessionInfo presentation_connection; 479 blink::mojom::PresentationSessionInfo presentation_connection;
473 presentation_connection.url = kPresentationUrl; 480 presentation_connection.url = kPresentationUrl1;
474 presentation_connection.id = kPresentationId; 481 presentation_connection.id = kPresentationId;
475 { 482 {
476 base::RunLoop run_loop; 483 base::RunLoop run_loop;
477 EXPECT_CALL(mock_client_, 484 EXPECT_CALL(mock_client_,
478 OnConnectionStateChanged( 485 OnConnectionStateChanged(
479 Equals(presentation_connection), 486 Equals(presentation_connection),
480 blink::mojom::PresentationConnectionState::TERMINATED)) 487 blink::mojom::PresentationConnectionState::TERMINATED))
481 .WillOnce(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit)); 488 .WillOnce(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit));
482 state_changed_cb.Run(PresentationConnectionStateChangeInfo( 489 state_changed_cb.Run(PresentationConnectionStateChangeInfo(
483 PRESENTATION_CONNECTION_STATE_TERMINATED)); 490 PRESENTATION_CONNECTION_STATE_TERMINATED));
484 run_loop.Run(); 491 run_loop.Run();
485 } 492 }
486 } 493 }
487 494
488 TEST_F(PresentationServiceImplTest, ListenForConnectionClose) { 495 TEST_F(PresentationServiceImplTest, ListenForConnectionClose) {
489 content::PresentationSessionInfo connection(kPresentationUrl, 496 content::PresentationSessionInfo connection(kPresentationUrl1,
490 kPresentationId); 497 kPresentationId);
491 content::PresentationConnectionStateChangedCallback state_changed_cb; 498 content::PresentationConnectionStateChangedCallback state_changed_cb;
492 EXPECT_CALL(mock_delegate_, ListenForConnectionStateChange(_, _, _, _)) 499 EXPECT_CALL(mock_delegate_, ListenForConnectionStateChange(_, _, _, _))
493 .WillOnce(SaveArg<3>(&state_changed_cb)); 500 .WillOnce(SaveArg<3>(&state_changed_cb));
494 service_impl_->ListenForConnectionStateChange(connection); 501 service_impl_->ListenForConnectionStateChange(connection);
495 502
496 // Trigger connection close. It should be propagated back up to 503 // Trigger connection close. It should be propagated back up to
497 // |mock_client_|. 504 // |mock_client_|.
498 blink::mojom::PresentationSessionInfo presentation_connection; 505 blink::mojom::PresentationSessionInfo presentation_connection;
499 presentation_connection.url = kPresentationUrl; 506 presentation_connection.url = kPresentationUrl1;
500 presentation_connection.id = kPresentationId; 507 presentation_connection.id = kPresentationId;
501 { 508 {
502 base::RunLoop run_loop; 509 base::RunLoop run_loop;
503 PresentationConnectionStateChangeInfo closed_info( 510 PresentationConnectionStateChangeInfo closed_info(
504 PRESENTATION_CONNECTION_STATE_CLOSED); 511 PRESENTATION_CONNECTION_STATE_CLOSED);
505 closed_info.close_reason = PRESENTATION_CONNECTION_CLOSE_REASON_WENT_AWAY; 512 closed_info.close_reason = PRESENTATION_CONNECTION_CLOSE_REASON_WENT_AWAY;
506 closed_info.message = "Foo"; 513 closed_info.message = "Foo";
507 514
508 EXPECT_CALL( 515 EXPECT_CALL(
509 mock_client_, 516 mock_client_,
510 OnConnectionClosed( 517 OnConnectionClosed(
511 Equals(presentation_connection), 518 Equals(presentation_connection),
512 blink::mojom::PresentationConnectionCloseReason::WENT_AWAY, "Foo")) 519 blink::mojom::PresentationConnectionCloseReason::WENT_AWAY, "Foo"))
513 .WillOnce(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit)); 520 .WillOnce(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit));
514 state_changed_cb.Run(closed_info); 521 state_changed_cb.Run(closed_info);
515 run_loop.Run(); 522 run_loop.Run();
516 } 523 }
517 } 524 }
518 525
519 TEST_F(PresentationServiceImplTest, SetSameDefaultPresentationUrl) { 526 TEST_F(PresentationServiceImplTest, SetSameDefaultPresentationUrls) {
520 EXPECT_CALL(mock_delegate_, 527 std::vector<std::string> urls(2);
521 SetDefaultPresentationUrl(_, _, Eq(kPresentationUrl), _)) 528 urls[0] = kPresentationUrl1;
529 urls[1] = kPresentationUrl2;
530 EXPECT_CALL(mock_delegate_, SetDefaultPresentationUrls(_, _, urls, _))
522 .Times(1); 531 .Times(1);
523 service_impl_->SetDefaultPresentationURL(kPresentationUrl); 532 service_impl_->SetDefaultPresentationUrls(urls);
524 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&mock_delegate_)); 533 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&mock_delegate_));
525 EXPECT_EQ(kPresentationUrl, service_impl_->default_presentation_url_);
526 534
527 // Same URL as before; no-ops. 535 // Same URLs as before; no-ops.
528 service_impl_->SetDefaultPresentationURL(kPresentationUrl); 536 service_impl_->SetDefaultPresentationUrls(urls);
529 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&mock_delegate_)); 537 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&mock_delegate_));
530 EXPECT_EQ(kPresentationUrl, service_impl_->default_presentation_url_);
531 } 538 }
532 539
533 TEST_F(PresentationServiceImplTest, StartSessionSuccess) { 540 TEST_F(PresentationServiceImplTest, StartSessionSuccess) {
541 std::vector<std::string> urls(2);
542 urls[0] = kPresentationUrl1;
543 urls[1] = kPresentationUrl2;
534 service_ptr_->StartSession( 544 service_ptr_->StartSession(
535 kPresentationUrl, 545 urls,
536 base::Bind( 546 base::Bind(&PresentationServiceImplTest::ExpectNewSessionCallbackSuccess,
537 &PresentationServiceImplTest::ExpectNewSessionCallbackSuccess, 547 base::Unretained(this)));
538 base::Unretained(this)));
539 base::RunLoop run_loop; 548 base::RunLoop run_loop;
540 base::Callback<void(const PresentationSessionInfo&)> success_cb; 549 base::Callback<void(const PresentationSessionInfo&)> success_cb;
541 EXPECT_CALL(mock_delegate_, StartSession(_, _, Eq(kPresentationUrl), _, _)) 550 EXPECT_CALL(mock_delegate_, StartSession(_, _, urls, _, _))
542 .WillOnce(DoAll( 551 .WillOnce(DoAll(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit),
543 InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit), 552 SaveArg<3>(&success_cb)));
544 SaveArg<3>(&success_cb)));
545 run_loop.Run(); 553 run_loop.Run();
546 554
547 EXPECT_CALL(mock_delegate_, ListenForConnectionStateChange(_, _, _, _)) 555 EXPECT_CALL(mock_delegate_, ListenForConnectionStateChange(_, _, _, _))
548 .Times(1); 556 .Times(1);
549 success_cb.Run(PresentationSessionInfo(kPresentationUrl, kPresentationId)); 557 success_cb.Run(PresentationSessionInfo(kPresentationUrl1, kPresentationId));
550 SaveQuitClosureAndRunLoop(); 558 SaveQuitClosureAndRunLoop();
551 } 559 }
552 560
553 TEST_F(PresentationServiceImplTest, StartSessionError) { 561 TEST_F(PresentationServiceImplTest, StartSessionError) {
562 std::vector<std::string> urls(2);
563 urls[0] = kPresentationUrl1;
564 urls[1] = kPresentationUrl2;
554 service_ptr_->StartSession( 565 service_ptr_->StartSession(
555 kPresentationUrl, 566 urls,
556 base::Bind( 567 base::Bind(&PresentationServiceImplTest::ExpectNewSessionCallbackError,
557 &PresentationServiceImplTest::ExpectNewSessionCallbackError, 568 base::Unretained(this)));
558 base::Unretained(this)));
559 base::RunLoop run_loop; 569 base::RunLoop run_loop;
560 base::Callback<void(const PresentationError&)> error_cb; 570 base::Callback<void(const PresentationError&)> error_cb;
561 EXPECT_CALL(mock_delegate_, StartSession(_, _, Eq(kPresentationUrl), _, _)) 571 EXPECT_CALL(mock_delegate_, StartSession(_, _, urls, _, _))
562 .WillOnce(DoAll( 572 .WillOnce(DoAll(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit),
563 InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit), 573 SaveArg<4>(&error_cb)));
564 SaveArg<4>(&error_cb)));
565 run_loop.Run(); 574 run_loop.Run();
566 error_cb.Run(PresentationError(PRESENTATION_ERROR_UNKNOWN, "Error message")); 575 error_cb.Run(PresentationError(PRESENTATION_ERROR_UNKNOWN, "Error message"));
567 SaveQuitClosureAndRunLoop(); 576 SaveQuitClosureAndRunLoop();
568 } 577 }
569 578
570 TEST_F(PresentationServiceImplTest, JoinSessionSuccess) { 579 TEST_F(PresentationServiceImplTest, JoinSessionSuccess) {
580 std::vector<std::string> urls(2);
581 urls[0] = kPresentationUrl1;
582 urls[1] = kPresentationUrl2;
571 service_ptr_->JoinSession( 583 service_ptr_->JoinSession(
572 kPresentationUrl, base::Optional<std::string>(kPresentationId), 584 urls, base::Optional<std::string>(kPresentationId),
573 base::Bind(&PresentationServiceImplTest::ExpectNewSessionCallbackSuccess, 585 base::Bind(&PresentationServiceImplTest::ExpectNewSessionCallbackSuccess,
574 base::Unretained(this))); 586 base::Unretained(this)));
575 base::RunLoop run_loop; 587 base::RunLoop run_loop;
576 base::Callback<void(const PresentationSessionInfo&)> success_cb; 588 base::Callback<void(const PresentationSessionInfo&)> success_cb;
577 EXPECT_CALL(mock_delegate_, JoinSession( 589 EXPECT_CALL(mock_delegate_, JoinSession(_, _, urls, kPresentationId, _, _))
578 _, _, Eq(kPresentationUrl), Eq(kPresentationId), _, _)) 590 .WillOnce(DoAll(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit),
579 .WillOnce(DoAll( 591 SaveArg<4>(&success_cb)));
580 InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit),
581 SaveArg<4>(&success_cb)));
582 run_loop.Run(); 592 run_loop.Run();
583 593
584 EXPECT_CALL(mock_delegate_, ListenForConnectionStateChange(_, _, _, _)) 594 EXPECT_CALL(mock_delegate_, ListenForConnectionStateChange(_, _, _, _))
585 .Times(1); 595 .Times(1);
586 success_cb.Run(PresentationSessionInfo(kPresentationUrl, kPresentationId)); 596 success_cb.Run(PresentationSessionInfo(kPresentationUrl1, kPresentationId));
587 SaveQuitClosureAndRunLoop(); 597 SaveQuitClosureAndRunLoop();
588 } 598 }
589 599
590 TEST_F(PresentationServiceImplTest, JoinSessionError) { 600 TEST_F(PresentationServiceImplTest, JoinSessionError) {
601 std::vector<std::string> urls(2);
602 urls[0] = kPresentationUrl1;
603 urls[1] = kPresentationUrl2;
591 service_ptr_->JoinSession( 604 service_ptr_->JoinSession(
592 kPresentationUrl, base::Optional<std::string>(kPresentationId), 605 urls, base::Optional<std::string>(kPresentationId),
593 base::Bind(&PresentationServiceImplTest::ExpectNewSessionCallbackError, 606 base::Bind(&PresentationServiceImplTest::ExpectNewSessionCallbackError,
594 base::Unretained(this))); 607 base::Unretained(this)));
595 base::RunLoop run_loop; 608 base::RunLoop run_loop;
596 base::Callback<void(const PresentationError&)> error_cb; 609 base::Callback<void(const PresentationError&)> error_cb;
597 EXPECT_CALL(mock_delegate_, JoinSession( 610 EXPECT_CALL(mock_delegate_, JoinSession(_, _, urls, kPresentationId, _, _))
598 _, _, Eq(kPresentationUrl), Eq(kPresentationId), _, _)) 611 .WillOnce(DoAll(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit),
599 .WillOnce(DoAll( 612 SaveArg<5>(&error_cb)));
600 InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit),
601 SaveArg<5>(&error_cb)));
602 run_loop.Run(); 613 run_loop.Run();
603 error_cb.Run(PresentationError(PRESENTATION_ERROR_UNKNOWN, "Error message")); 614 error_cb.Run(PresentationError(PRESENTATION_ERROR_UNKNOWN, "Error message"));
604 SaveQuitClosureAndRunLoop(); 615 SaveQuitClosureAndRunLoop();
605 } 616 }
606 617
607 TEST_F(PresentationServiceImplTest, CloseConnection) { 618 TEST_F(PresentationServiceImplTest, CloseConnection) {
608 service_ptr_->CloseConnection(kPresentationUrl, kPresentationId); 619 service_ptr_->CloseConnection(kPresentationUrl1, kPresentationId);
609 base::RunLoop run_loop; 620 base::RunLoop run_loop;
610 EXPECT_CALL(mock_delegate_, CloseConnection(_, _, Eq(kPresentationId))) 621 EXPECT_CALL(mock_delegate_, CloseConnection(_, _, Eq(kPresentationId)))
611 .WillOnce(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit)); 622 .WillOnce(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit));
612 run_loop.Run(); 623 run_loop.Run();
613 } 624 }
614 625
615 TEST_F(PresentationServiceImplTest, Terminate) { 626 TEST_F(PresentationServiceImplTest, Terminate) {
616 service_ptr_->Terminate(kPresentationUrl, kPresentationId); 627 service_ptr_->Terminate(kPresentationUrl1, kPresentationId);
617 base::RunLoop run_loop; 628 base::RunLoop run_loop;
618 EXPECT_CALL(mock_delegate_, Terminate(_, _, Eq(kPresentationId))) 629 EXPECT_CALL(mock_delegate_, Terminate(_, _, Eq(kPresentationId)))
619 .WillOnce(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit)); 630 .WillOnce(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit));
620 run_loop.Run(); 631 run_loop.Run();
621 } 632 }
622 633
623 TEST_F(PresentationServiceImplTest, ListenForSessionMessagesPassed) { 634 TEST_F(PresentationServiceImplTest, ListenForSessionMessagesPassed) {
624 std::string text_msg("123"); 635 std::string text_msg("123");
625 std::vector<uint8_t> binary_data(3, '\1'); 636 std::vector<uint8_t> binary_data(3, '\1');
626 RunListenForSessionMessages(text_msg, binary_data, true); 637 RunListenForSessionMessages(text_msg, binary_data, true);
627 } 638 }
628 639
629 TEST_F(PresentationServiceImplTest, ListenForSessionMessagesCopied) { 640 TEST_F(PresentationServiceImplTest, ListenForSessionMessagesCopied) {
630 std::string text_msg("123"); 641 std::string text_msg("123");
631 std::vector<uint8_t> binary_data(3, '\1'); 642 std::vector<uint8_t> binary_data(3, '\1');
632 RunListenForSessionMessages(text_msg, binary_data, false); 643 RunListenForSessionMessages(text_msg, binary_data, false);
633 } 644 }
634 645
635 TEST_F(PresentationServiceImplTest, ListenForSessionMessagesWithEmptyMsg) { 646 TEST_F(PresentationServiceImplTest, ListenForSessionMessagesWithEmptyMsg) {
636 std::string text_msg(""); 647 std::string text_msg("");
637 std::vector<uint8_t> binary_data; 648 std::vector<uint8_t> binary_data;
638 RunListenForSessionMessages(text_msg, binary_data, false); 649 RunListenForSessionMessages(text_msg, binary_data, false);
639 } 650 }
640 651
641 TEST_F(PresentationServiceImplTest, StartSessionInProgress) { 652 TEST_F(PresentationServiceImplTest, StartSessionInProgress) {
653 std::vector<std::string> urls(2);
642 std::string presentation_url1("http://fooUrl"); 654 std::string presentation_url1("http://fooUrl");
643 std::string presentation_url2("http://barUrl"); 655 std::string presentation_url2("http://barUrl");
644 EXPECT_CALL(mock_delegate_, StartSession(_, _, Eq(presentation_url1), _, _)) 656 urls[0] = presentation_url1;
645 .Times(1); 657 urls[1] = presentation_url2;
646 service_ptr_->StartSession(presentation_url1, 658 EXPECT_CALL(mock_delegate_, StartSession(_, _, urls, _, _)).Times(1);
647 base::Bind(&DoNothing)); 659 service_ptr_->StartSession(urls, base::Bind(&DoNothing));
648 660
649 // This request should fail immediately, since there is already a StartSession 661 // This request should fail immediately, since there is already a StartSession
650 // in progress. 662 // in progress.
651 service_ptr_->StartSession( 663 service_ptr_->StartSession(
652 presentation_url2, 664 urls,
653 base::Bind( 665 base::Bind(&PresentationServiceImplTest::ExpectNewSessionCallbackError,
654 &PresentationServiceImplTest::ExpectNewSessionCallbackError, 666 base::Unretained(this)));
655 base::Unretained(this)));
656 SaveQuitClosureAndRunLoop(); 667 SaveQuitClosureAndRunLoop();
657 } 668 }
658 669
659 TEST_F(PresentationServiceImplTest, SendStringMessage) { 670 TEST_F(PresentationServiceImplTest, SendStringMessage) {
660 std::string message("Test presentation session message"); 671 std::string message("Test presentation session message");
661 672
662 blink::mojom::PresentationSessionInfoPtr session( 673 blink::mojom::PresentationSessionInfoPtr session(
663 blink::mojom::PresentationSessionInfo::New()); 674 blink::mojom::PresentationSessionInfo::New());
664 session->url = kPresentationUrl; 675 session->url = kPresentationUrl1;
665 session->id = kPresentationId; 676 session->id = kPresentationId;
666 blink::mojom::SessionMessagePtr message_request( 677 blink::mojom::SessionMessagePtr message_request(
667 blink::mojom::SessionMessage::New()); 678 blink::mojom::SessionMessage::New());
668 message_request->type = blink::mojom::PresentationMessageType::TEXT; 679 message_request->type = blink::mojom::PresentationMessageType::TEXT;
669 message_request->message = message; 680 message_request->message = message;
670 service_ptr_->SendSessionMessage( 681 service_ptr_->SendSessionMessage(
671 std::move(session), std::move(message_request), 682 std::move(session), std::move(message_request),
672 base::Bind(&PresentationServiceImplTest::ExpectSendSessionMessageCallback, 683 base::Bind(&PresentationServiceImplTest::ExpectSendSessionMessageCallback,
673 base::Unretained(this))); 684 base::Unretained(this)));
674 685
(...skipping 17 matching lines...) Expand all
692 } 703 }
693 704
694 TEST_F(PresentationServiceImplTest, SendArrayBuffer) { 705 TEST_F(PresentationServiceImplTest, SendArrayBuffer) {
695 // Test Array buffer data. 706 // Test Array buffer data.
696 const uint8_t buffer[] = {0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48}; 707 const uint8_t buffer[] = {0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48};
697 std::vector<uint8_t> data; 708 std::vector<uint8_t> data;
698 data.assign(buffer, buffer + sizeof(buffer)); 709 data.assign(buffer, buffer + sizeof(buffer));
699 710
700 blink::mojom::PresentationSessionInfoPtr session( 711 blink::mojom::PresentationSessionInfoPtr session(
701 blink::mojom::PresentationSessionInfo::New()); 712 blink::mojom::PresentationSessionInfo::New());
702 session->url = kPresentationUrl; 713 session->url = kPresentationUrl1;
703 session->id = kPresentationId; 714 session->id = kPresentationId;
704 blink::mojom::SessionMessagePtr message_request( 715 blink::mojom::SessionMessagePtr message_request(
705 blink::mojom::SessionMessage::New()); 716 blink::mojom::SessionMessage::New());
706 message_request->type = blink::mojom::PresentationMessageType::ARRAY_BUFFER; 717 message_request->type = blink::mojom::PresentationMessageType::ARRAY_BUFFER;
707 message_request->data = data; 718 message_request->data = data;
708 service_ptr_->SendSessionMessage( 719 service_ptr_->SendSessionMessage(
709 std::move(session), std::move(message_request), 720 std::move(session), std::move(message_request),
710 base::Bind(&PresentationServiceImplTest::ExpectSendSessionMessageCallback, 721 base::Bind(&PresentationServiceImplTest::ExpectSendSessionMessageCallback,
711 base::Unretained(this))); 722 base::Unretained(this)));
712 723
(...skipping 23 matching lines...) Expand all
736 // Create buffer with size exceeding the limit. 747 // Create buffer with size exceeding the limit.
737 // Use same size as in content::kMaxPresentationSessionMessageSize. 748 // Use same size as in content::kMaxPresentationSessionMessageSize.
738 const size_t kMaxBufferSizeInBytes = 64 * 1024; // 64 KB. 749 const size_t kMaxBufferSizeInBytes = 64 * 1024; // 64 KB.
739 uint8_t buffer[kMaxBufferSizeInBytes + 1]; 750 uint8_t buffer[kMaxBufferSizeInBytes + 1];
740 memset(buffer, 0, kMaxBufferSizeInBytes+1); 751 memset(buffer, 0, kMaxBufferSizeInBytes+1);
741 std::vector<uint8_t> data; 752 std::vector<uint8_t> data;
742 data.assign(buffer, buffer + sizeof(buffer)); 753 data.assign(buffer, buffer + sizeof(buffer));
743 754
744 blink::mojom::PresentationSessionInfoPtr session( 755 blink::mojom::PresentationSessionInfoPtr session(
745 blink::mojom::PresentationSessionInfo::New()); 756 blink::mojom::PresentationSessionInfo::New());
746 session->url = kPresentationUrl; 757 session->url = kPresentationUrl1;
747 session->id = kPresentationId; 758 session->id = kPresentationId;
748 blink::mojom::SessionMessagePtr message_request( 759 blink::mojom::SessionMessagePtr message_request(
749 blink::mojom::SessionMessage::New()); 760 blink::mojom::SessionMessage::New());
750 message_request->type = blink::mojom::PresentationMessageType::ARRAY_BUFFER; 761 message_request->type = blink::mojom::PresentationMessageType::ARRAY_BUFFER;
751 message_request->data = data; 762 message_request->data = data;
752 service_ptr_->SendSessionMessage( 763 service_ptr_->SendSessionMessage(
753 std::move(session), std::move(message_request), 764 std::move(session), std::move(message_request),
754 base::Bind(&PresentationServiceImplTest::ExpectSendSessionMessageCallback, 765 base::Bind(&PresentationServiceImplTest::ExpectSendSessionMessageCallback,
755 base::Unretained(this))); 766 base::Unretained(this)));
756 767
(...skipping 10 matching lines...) Expand all
767 SaveQuitClosureAndRunLoop(); 778 SaveQuitClosureAndRunLoop();
768 } 779 }
769 780
770 TEST_F(PresentationServiceImplTest, SendBlobData) { 781 TEST_F(PresentationServiceImplTest, SendBlobData) {
771 const uint8_t buffer[] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07}; 782 const uint8_t buffer[] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07};
772 std::vector<uint8_t> data; 783 std::vector<uint8_t> data;
773 data.assign(buffer, buffer + sizeof(buffer)); 784 data.assign(buffer, buffer + sizeof(buffer));
774 785
775 blink::mojom::PresentationSessionInfoPtr session( 786 blink::mojom::PresentationSessionInfoPtr session(
776 blink::mojom::PresentationSessionInfo::New()); 787 blink::mojom::PresentationSessionInfo::New());
777 session->url = kPresentationUrl; 788 session->url = kPresentationUrl1;
778 session->id = kPresentationId; 789 session->id = kPresentationId;
779 blink::mojom::SessionMessagePtr message_request( 790 blink::mojom::SessionMessagePtr message_request(
780 blink::mojom::SessionMessage::New()); 791 blink::mojom::SessionMessage::New());
781 message_request->type = blink::mojom::PresentationMessageType::BLOB; 792 message_request->type = blink::mojom::PresentationMessageType::BLOB;
782 message_request->data = data; 793 message_request->data = data;
783 service_ptr_->SendSessionMessage( 794 service_ptr_->SendSessionMessage(
784 std::move(session), std::move(message_request), 795 std::move(session), std::move(message_request),
785 base::Bind(&PresentationServiceImplTest::ExpectSendSessionMessageCallback, 796 base::Bind(&PresentationServiceImplTest::ExpectSendSessionMessageCallback,
786 base::Unretained(this))); 797 base::Unretained(this)));
787 798
(...skipping 19 matching lines...) Expand all
807 SaveQuitClosureAndRunLoop(); 818 SaveQuitClosureAndRunLoop();
808 } 819 }
809 820
810 TEST_F(PresentationServiceImplTest, MaxPendingJoinSessionRequests) { 821 TEST_F(PresentationServiceImplTest, MaxPendingJoinSessionRequests) {
811 const char* presentation_url = "http://fooUrl%d"; 822 const char* presentation_url = "http://fooUrl%d";
812 const char* presentation_id = "presentationId%d"; 823 const char* presentation_id = "presentationId%d";
813 int num_requests = PresentationServiceImpl::kMaxNumQueuedSessionRequests; 824 int num_requests = PresentationServiceImpl::kMaxNumQueuedSessionRequests;
814 int i = 0; 825 int i = 0;
815 EXPECT_CALL(mock_delegate_, JoinSession(_, _, _, _, _, _)) 826 EXPECT_CALL(mock_delegate_, JoinSession(_, _, _, _, _, _))
816 .Times(num_requests); 827 .Times(num_requests);
828 std::vector<std::string> urls(1);
817 for (; i < num_requests; ++i) { 829 for (; i < num_requests; ++i) {
818 service_ptr_->JoinSession( 830 urls[0] = base::StringPrintf(presentation_url, i);
819 base::StringPrintf(presentation_url, i), 831 service_ptr_->JoinSession(urls, base::StringPrintf(presentation_id, i),
820 base::StringPrintf(presentation_id, i), 832 base::Bind(&DoNothing));
821 base::Bind(&DoNothing));
822 } 833 }
823 834
835 urls[0] = base::StringPrintf(presentation_url, i);
824 // Exceeded maximum queue size, should invoke mojo callback with error. 836 // Exceeded maximum queue size, should invoke mojo callback with error.
825 service_ptr_->JoinSession( 837 service_ptr_->JoinSession(
826 base::StringPrintf(presentation_url, i), 838 urls, base::StringPrintf(presentation_id, i),
827 base::StringPrintf(presentation_id, i), 839 base::Bind(&PresentationServiceImplTest::ExpectNewSessionCallbackError,
828 base::Bind( 840 base::Unretained(this)));
829 &PresentationServiceImplTest::ExpectNewSessionCallbackError,
830 base::Unretained(this)));
831 SaveQuitClosureAndRunLoop(); 841 SaveQuitClosureAndRunLoop();
832 } 842 }
833 843
834 TEST_F(PresentationServiceImplTest, ScreenAvailabilityNotSupported) { 844 TEST_F(PresentationServiceImplTest, ScreenAvailabilityNotSupported) {
835 mock_delegate_.set_screen_availability_listening_supported(false); 845 mock_delegate_.set_screen_availability_listening_supported(false);
836 base::RunLoop run_loop; 846 base::RunLoop run_loop;
837 EXPECT_CALL(mock_client_, 847 EXPECT_CALL(mock_client_,
838 OnScreenAvailabilityNotSupported(Eq(kPresentationUrl))) 848 OnScreenAvailabilityNotSupported(Eq(kPresentationUrl1)))
839 .WillOnce(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit)); 849 .WillOnce(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit));
840 ListenForScreenAvailabilityAndWait(kPresentationUrl, false); 850 ListenForScreenAvailabilityAndWait(kPresentationUrl1, false);
841 run_loop.Run(); 851 run_loop.Run();
842 } 852 }
843 853
844 } // namespace content 854 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698