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

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

Issue 2613153003: [Presentation API] Replaces type converters with typemaps (Closed)
Patch Set: Add more OWNERS foo Created 3 years, 11 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 25 matching lines...) Expand all
36 36
37 namespace content { 37 namespace content {
38 38
39 namespace { 39 namespace {
40 40
41 // Matches Mojo structs. 41 // Matches Mojo structs.
42 MATCHER_P(Equals, expected, "") { 42 MATCHER_P(Equals, expected, "") {
43 return expected.Equals(arg); 43 return expected.Equals(arg);
44 } 44 }
45 45
46 // Matches blink::mojom::PresentationSessionInfo passed by reference. 46 // Matches content::PresentationSessionInfo passed by reference.
47 MATCHER_P(SessionInfoEquals, expected, "") { 47 MATCHER_P(SessionInfoEquals, expected, "") {
48 blink::mojom::PresentationSessionInfo& expected_value = expected;
49 return expected_value.Equals(arg);
50 }
51
52 // Matches content::PresentationSessionInfo passed by reference.
53 MATCHER_P(ContentSessionInfoEquals, expected, "") {
54 const content::PresentationSessionInfo& expected_value = expected; 48 const content::PresentationSessionInfo& expected_value = expected;
imcheng 2017/01/24 23:31:40 nit: |expected_value| seems unnecessary; can it be
mark a. foltz 2017/01/27 22:41:07 It's needed to unpack the reference passed via ByR
55 return expected_value.presentation_url == arg.presentation_url && 49 return expected_value.presentation_url == arg.presentation_url &&
56 expected_value.presentation_id == arg.presentation_id; 50 expected_value.presentation_id == arg.presentation_id;
57 } 51 }
58 52
59 const char kPresentationId[] = "presentationId"; 53 const char kPresentationId[] = "presentationId";
60 const char kPresentationUrl1[] = "http://foo.com/index.html"; 54 const char kPresentationUrl1[] = "http://foo.com/index.html";
61 const char kPresentationUrl2[] = "http://example.com/index.html"; 55 const char kPresentationUrl2[] = "http://example.com/index.html";
62 const char kPresentationUrl3[] = "http://example.net/index.html"; 56 const char kPresentationUrl3[] = "http://example.net/index.html";
63 57
64 void DoNothing(blink::mojom::PresentationSessionInfoPtr info, 58 void DoNothing(const base::Optional<content::PresentationSessionInfo>& info,
65 blink::mojom::PresentationErrorPtr error) {} 59 const base::Optional<content::PresentationError>& error) {}
66 60
67 } // namespace 61 } // namespace
68 62
69 class MockPresentationServiceDelegate 63 class MockPresentationServiceDelegate
70 : public ControllerPresentationServiceDelegate { 64 : public ControllerPresentationServiceDelegate {
71 public: 65 public:
72 MOCK_METHOD3(AddObserver, 66 MOCK_METHOD3(AddObserver,
73 void(int render_process_id, 67 void(int render_process_id,
74 int render_frame_id, 68 int render_frame_id,
75 PresentationServiceDelegate::Observer* observer)); 69 PresentationServiceDelegate::Observer* observer));
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
186 }; 180 };
187 181
188 class MockPresentationConnection : public blink::mojom::PresentationConnection { 182 class MockPresentationConnection : public blink::mojom::PresentationConnection {
189 public: 183 public:
190 void OnMessage(blink::mojom::ConnectionMessagePtr message, 184 void OnMessage(blink::mojom::ConnectionMessagePtr message,
191 const base::Callback<void(bool)>& send_message_cb) override { 185 const base::Callback<void(bool)>& send_message_cb) override {
192 OnConnectionMessageReceived(*message); 186 OnConnectionMessageReceived(*message);
193 } 187 }
194 MOCK_METHOD1(OnConnectionMessageReceived, 188 MOCK_METHOD1(OnConnectionMessageReceived,
195 void(const blink::mojom::ConnectionMessage& message)); 189 void(const blink::mojom::ConnectionMessage& message));
196 MOCK_METHOD1(DidChangeState, 190 MOCK_METHOD1(DidChangeState, void(PresentationConnectionState state));
197 void(blink::mojom::PresentationConnectionState state));
198 }; 191 };
199 192
200 class MockPresentationServiceClient 193 class MockPresentationServiceClient
201 : public blink::mojom::PresentationServiceClient { 194 : public blink::mojom::PresentationServiceClient {
202 public: 195 public:
203 MOCK_METHOD2(OnScreenAvailabilityUpdated, 196 MOCK_METHOD2(OnScreenAvailabilityUpdated,
204 void(const GURL& url, bool available)); 197 void(const GURL& url, bool available));
205 void OnConnectionStateChanged(
206 blink::mojom::PresentationSessionInfoPtr connection,
207 blink::mojom::PresentationConnectionState new_state) override {
208 OnConnectionStateChanged(*connection, new_state);
209 }
210 MOCK_METHOD2(OnConnectionStateChanged, 198 MOCK_METHOD2(OnConnectionStateChanged,
211 void(const blink::mojom::PresentationSessionInfo& connection, 199 void(const content::PresentationSessionInfo& connection,
212 blink::mojom::PresentationConnectionState new_state)); 200 PresentationConnectionState new_state));
213
214 void OnConnectionClosed(
215 blink::mojom::PresentationSessionInfoPtr connection,
216 blink::mojom::PresentationConnectionCloseReason reason,
217 const std::string& message) override {
218 OnConnectionClosed(*connection, reason, message);
219 }
220 MOCK_METHOD3(OnConnectionClosed, 201 MOCK_METHOD3(OnConnectionClosed,
221 void(const blink::mojom::PresentationSessionInfo& connection, 202 void(const content::PresentationSessionInfo& connection,
222 blink::mojom::PresentationConnectionCloseReason reason, 203 PresentationConnectionCloseReason reason,
223 const std::string& message)); 204 const std::string& message));
224
225 MOCK_METHOD1(OnScreenAvailabilityNotSupported, void(const GURL& url)); 205 MOCK_METHOD1(OnScreenAvailabilityNotSupported, void(const GURL& url));
226 206
227 void OnConnectionMessagesReceived( 207 void OnConnectionMessagesReceived(
228 blink::mojom::PresentationSessionInfoPtr session_info, 208 const content::PresentationSessionInfo& session_info,
229 std::vector<blink::mojom::ConnectionMessagePtr> messages) override { 209 std::vector<blink::mojom::ConnectionMessagePtr> messages) override {
230 messages_received_ = std::move(messages); 210 messages_received_ = std::move(messages);
231 MessagesReceived(); 211 MessagesReceived();
232 } 212 }
233 MOCK_METHOD0(MessagesReceived, void()); 213 MOCK_METHOD0(MessagesReceived, void());
234 214
235 void OnDefaultSessionStarted(
236 blink::mojom::PresentationSessionInfoPtr session_info) override {
237 OnDefaultSessionStarted(*session_info);
238 }
239 MOCK_METHOD1(OnDefaultSessionStarted, 215 MOCK_METHOD1(OnDefaultSessionStarted,
240 void(const blink::mojom::PresentationSessionInfo& session_info)); 216 void(const content::PresentationSessionInfo& session_info));
241 217
242 void OnReceiverConnectionAvailable( 218 void OnReceiverConnectionAvailable(
243 blink::mojom::PresentationSessionInfoPtr session_info, 219 const content::PresentationSessionInfo& session_info,
244 blink::mojom::PresentationConnectionPtr controller_conn_ptr, 220 blink::mojom::PresentationConnectionPtr controller_conn_ptr,
245 blink::mojom::PresentationConnectionRequest receiver_conn_request) 221 blink::mojom::PresentationConnectionRequest receiver_conn_request)
246 override { 222 override {
247 OnReceiverConnectionAvailable(*session_info); 223 OnReceiverConnectionAvailable(session_info);
248 } 224 }
249 MOCK_METHOD1(OnReceiverConnectionAvailable, 225 MOCK_METHOD1(OnReceiverConnectionAvailable,
250 void(const blink::mojom::PresentationSessionInfo& session_info)); 226 void(const content::PresentationSessionInfo& session_info));
251 227
252 std::vector<blink::mojom::ConnectionMessagePtr> messages_received_; 228 std::vector<blink::mojom::ConnectionMessagePtr> messages_received_;
253 }; 229 };
254 230
255 class PresentationServiceImplTest : public RenderViewHostImplTestHarness { 231 class PresentationServiceImplTest : public RenderViewHostImplTestHarness {
256 public: 232 public:
257 PresentationServiceImplTest() 233 PresentationServiceImplTest()
258 : presentation_url1_(GURL(kPresentationUrl1)), 234 : presentation_url1_(GURL(kPresentationUrl1)),
259 presentation_url2_(GURL(kPresentationUrl2)), 235 presentation_url2_(GURL(kPresentationUrl2)),
260 presentation_url3_(GURL(kPresentationUrl3)) {} 236 presentation_url3_(GURL(kPresentationUrl3)) {}
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
338 314
339 void ExpectCleanState() { 315 void ExpectCleanState() {
340 EXPECT_TRUE(service_impl_->default_presentation_urls_.empty()); 316 EXPECT_TRUE(service_impl_->default_presentation_urls_.empty());
341 EXPECT_EQ( 317 EXPECT_EQ(
342 service_impl_->screen_availability_listeners_.find(presentation_url1_), 318 service_impl_->screen_availability_listeners_.find(presentation_url1_),
343 service_impl_->screen_availability_listeners_.end()); 319 service_impl_->screen_availability_listeners_.end());
344 EXPECT_FALSE(service_impl_->on_connection_messages_callback_.get()); 320 EXPECT_FALSE(service_impl_->on_connection_messages_callback_.get());
345 } 321 }
346 322
347 void ExpectNewSessionCallbackSuccess( 323 void ExpectNewSessionCallbackSuccess(
348 blink::mojom::PresentationSessionInfoPtr info, 324 const base::Optional<content::PresentationSessionInfo>& info,
349 blink::mojom::PresentationErrorPtr error) { 325 const base::Optional<content::PresentationError>& error) {
350 EXPECT_FALSE(info.is_null()); 326 EXPECT_TRUE(info);
351 EXPECT_TRUE(error.is_null()); 327 EXPECT_FALSE(error);
352 if (!run_loop_quit_closure_.is_null()) 328 if (!run_loop_quit_closure_.is_null())
353 run_loop_quit_closure_.Run(); 329 run_loop_quit_closure_.Run();
354 } 330 }
355 331
356 void ExpectNewSessionCallbackError( 332 void ExpectNewSessionCallbackError(
357 blink::mojom::PresentationSessionInfoPtr info, 333 const base::Optional<content::PresentationSessionInfo>& info,
358 blink::mojom::PresentationErrorPtr error) { 334 const base::Optional<content::PresentationError>& error) {
359 EXPECT_TRUE(info.is_null()); 335 EXPECT_FALSE(info);
360 EXPECT_FALSE(error.is_null()); 336 EXPECT_TRUE(error);
361 if (!run_loop_quit_closure_.is_null()) 337 if (!run_loop_quit_closure_.is_null())
362 run_loop_quit_closure_.Run(); 338 run_loop_quit_closure_.Run();
363 } 339 }
364 340
365 void ExpectConnectionMessages( 341 void ExpectConnectionMessages(
366 const std::vector<blink::mojom::ConnectionMessagePtr>& expected_msgs, 342 const std::vector<blink::mojom::ConnectionMessagePtr>& expected_msgs,
367 const std::vector<blink::mojom::ConnectionMessagePtr>& actual_msgs) { 343 const std::vector<blink::mojom::ConnectionMessagePtr>& actual_msgs) {
368 EXPECT_EQ(expected_msgs.size(), actual_msgs.size()); 344 EXPECT_EQ(expected_msgs.size(), actual_msgs.size());
369 for (size_t i = 0; i < actual_msgs.size(); ++i) 345 for (size_t i = 0; i < actual_msgs.size(); ++i)
370 EXPECT_TRUE(expected_msgs[i].Equals(actual_msgs[i])); 346 EXPECT_TRUE(expected_msgs[i].Equals(actual_msgs[i]));
(...skipping 10 matching lines...) Expand all
381 const std::vector<uint8_t>& binary_data, 357 const std::vector<uint8_t>& binary_data,
382 bool pass_ownership) { 358 bool pass_ownership) {
383 std::vector<blink::mojom::ConnectionMessagePtr> expected_msgs(2); 359 std::vector<blink::mojom::ConnectionMessagePtr> expected_msgs(2);
384 expected_msgs[0] = blink::mojom::ConnectionMessage::New(); 360 expected_msgs[0] = blink::mojom::ConnectionMessage::New();
385 expected_msgs[0]->type = blink::mojom::PresentationMessageType::TEXT; 361 expected_msgs[0]->type = blink::mojom::PresentationMessageType::TEXT;
386 expected_msgs[0]->message = text_msg; 362 expected_msgs[0]->message = text_msg;
387 expected_msgs[1] = blink::mojom::ConnectionMessage::New(); 363 expected_msgs[1] = blink::mojom::ConnectionMessage::New();
388 expected_msgs[1]->type = blink::mojom::PresentationMessageType::BINARY; 364 expected_msgs[1]->type = blink::mojom::PresentationMessageType::BINARY;
389 expected_msgs[1]->data = binary_data; 365 expected_msgs[1]->data = binary_data;
390 366
391 blink::mojom::PresentationSessionInfoPtr session( 367 content::PresentationSessionInfo session(presentation_url1_,
392 blink::mojom::PresentationSessionInfo::New()); 368 kPresentationId);
393 session->url = presentation_url1_;
394 session->id = kPresentationId;
395 369
396 PresentationConnectionMessageCallback message_cb; 370 PresentationConnectionMessageCallback message_cb;
397 { 371 {
398 base::RunLoop run_loop; 372 base::RunLoop run_loop;
399 EXPECT_CALL(mock_delegate_, ListenForConnectionMessages(_, _, _, _)) 373 EXPECT_CALL(mock_delegate_, ListenForConnectionMessages(_, _, _, _))
400 .WillOnce(DoAll(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit), 374 .WillOnce(DoAll(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit),
401 SaveArg<3>(&message_cb))); 375 SaveArg<3>(&message_cb)));
402 service_ptr_->ListenForConnectionMessages(std::move(session)); 376 service_ptr_->ListenForConnectionMessages(session);
403 run_loop.Run(); 377 run_loop.Run();
404 } 378 }
405 379
406 std::vector<std::unique_ptr<PresentationConnectionMessage>> messages; 380 std::vector<std::unique_ptr<PresentationConnectionMessage>> messages;
407 std::unique_ptr<content::PresentationConnectionMessage> message; 381 std::unique_ptr<content::PresentationConnectionMessage> message;
408 message.reset(new content::PresentationConnectionMessage( 382 message.reset(new content::PresentationConnectionMessage(
409 PresentationMessageType::TEXT)); 383 PresentationMessageType::TEXT));
410 message->message = text_msg; 384 message->message = text_msg;
411 messages.push_back(std::move(message)); 385 messages.push_back(std::move(message));
412 message.reset(new content::PresentationConnectionMessage( 386 message.reset(new content::PresentationConnectionMessage(
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
522 496
523 // Sets different DPUs. 497 // Sets different DPUs.
524 std::vector<GURL> more_urls = presentation_urls_; 498 std::vector<GURL> more_urls = presentation_urls_;
525 more_urls.push_back(presentation_url3_); 499 more_urls.push_back(presentation_url3_);
526 500
527 content::PresentationSessionStartedCallback callback; 501 content::PresentationSessionStartedCallback callback;
528 EXPECT_CALL(mock_delegate_, SetDefaultPresentationUrls(_, _, more_urls, _)) 502 EXPECT_CALL(mock_delegate_, SetDefaultPresentationUrls(_, _, more_urls, _))
529 .WillOnce(SaveArg<3>(&callback)); 503 .WillOnce(SaveArg<3>(&callback));
530 service_impl_->SetDefaultPresentationUrls(more_urls); 504 service_impl_->SetDefaultPresentationUrls(more_urls);
531 505
532 blink::mojom::PresentationSessionInfo session_info; 506 content::PresentationSessionInfo session_info(presentation_url2_,
533 session_info.url = presentation_url2_; 507 kPresentationId);
534 session_info.id = kPresentationId;
535 508
536 base::RunLoop run_loop; 509 base::RunLoop run_loop;
537 EXPECT_CALL(mock_client_, 510 EXPECT_CALL(mock_client_,
538 OnDefaultSessionStarted(SessionInfoEquals(ByRef(session_info)))) 511 OnDefaultSessionStarted(SessionInfoEquals(ByRef(session_info))))
imcheng 2017/01/24 23:31:40 Is ByRef still needed?
mark a. foltz 2017/01/27 22:41:08 Shouldn't be. Removed.
539 .WillOnce(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit)); 512 .WillOnce(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit));
540 EXPECT_CALL(mock_delegate_, ListenForConnectionStateChange(_, _, _, _)); 513 EXPECT_CALL(mock_delegate_, ListenForConnectionStateChange(_, _, _, _));
541 callback.Run( 514 callback.Run(
542 content::PresentationSessionInfo(presentation_url2_, kPresentationId)); 515 content::PresentationSessionInfo(presentation_url2_, kPresentationId));
543 run_loop.Run(); 516 run_loop.Run();
544 } 517 }
545 518
546 TEST_F(PresentationServiceImplTest, 519 TEST_F(PresentationServiceImplTest,
547 ListenForConnectionStateChangeAndChangeState) { 520 ListenForConnectionStateChangeAndChangeState) {
548 content::PresentationSessionInfo connection(presentation_url1_, 521 content::PresentationSessionInfo connection(presentation_url1_,
549 kPresentationId); 522 kPresentationId);
550 content::PresentationConnectionStateChangedCallback state_changed_cb; 523 content::PresentationConnectionStateChangedCallback state_changed_cb;
551 // Trigger state change. It should be propagated back up to |mock_client_|. 524 // Trigger state change. It should be propagated back up to |mock_client_|.
552 blink::mojom::PresentationSessionInfo presentation_connection; 525 content::PresentationSessionInfo presentation_connection(presentation_url1_,
553 presentation_connection.url = presentation_url1_; 526 kPresentationId);
554 presentation_connection.id = kPresentationId;
555 527
556 EXPECT_CALL(mock_delegate_, ListenForConnectionStateChange(_, _, _, _)) 528 EXPECT_CALL(mock_delegate_, ListenForConnectionStateChange(_, _, _, _))
557 .WillOnce(SaveArg<3>(&state_changed_cb)); 529 .WillOnce(SaveArg<3>(&state_changed_cb));
558 EXPECT_CALL(mock_client_, 530 EXPECT_CALL(mock_client_,
559 OnConnectionStateChanged( 531 OnConnectionStateChanged(
560 SessionInfoEquals(ByRef(presentation_connection)), 532 SessionInfoEquals(ByRef(presentation_connection)),
561 blink::mojom::PresentationConnectionState::CONNECTED)); 533 content::PRESENTATION_CONNECTION_STATE_CONNECTED));
562 service_impl_->ListenForConnectionStateChangeAndChangeState(connection); 534 service_impl_->ListenForConnectionStateChangeAndChangeState(connection);
563 535
564 { 536 {
565 base::RunLoop run_loop; 537 base::RunLoop run_loop;
566 EXPECT_CALL(mock_client_, 538 EXPECT_CALL(mock_client_,
567 OnConnectionStateChanged( 539 OnConnectionStateChanged(
568 SessionInfoEquals(ByRef(presentation_connection)), 540 SessionInfoEquals(ByRef(presentation_connection)),
569 blink::mojom::PresentationConnectionState::TERMINATED)) 541 content::PRESENTATION_CONNECTION_STATE_TERMINATED))
570 .WillOnce(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit)); 542 .WillOnce(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit));
571 state_changed_cb.Run(PresentationConnectionStateChangeInfo( 543 state_changed_cb.Run(PresentationConnectionStateChangeInfo(
572 PRESENTATION_CONNECTION_STATE_TERMINATED)); 544 PRESENTATION_CONNECTION_STATE_TERMINATED));
573 run_loop.Run(); 545 run_loop.Run();
574 } 546 }
575 } 547 }
576 548
577 TEST_F(PresentationServiceImplTest, ListenForConnectionClose) { 549 TEST_F(PresentationServiceImplTest, ListenForConnectionClose) {
578 content::PresentationSessionInfo connection(presentation_url1_, 550 content::PresentationSessionInfo connection(presentation_url1_,
579 kPresentationId); 551 kPresentationId);
580 content::PresentationConnectionStateChangedCallback state_changed_cb; 552 content::PresentationConnectionStateChangedCallback state_changed_cb;
581 EXPECT_CALL(mock_delegate_, ListenForConnectionStateChange(_, _, _, _)) 553 EXPECT_CALL(mock_delegate_, ListenForConnectionStateChange(_, _, _, _))
582 .WillOnce(SaveArg<3>(&state_changed_cb)); 554 .WillOnce(SaveArg<3>(&state_changed_cb));
583 service_impl_->ListenForConnectionStateChangeAndChangeState(connection); 555 service_impl_->ListenForConnectionStateChangeAndChangeState(connection);
584 556
585 // Trigger connection close. It should be propagated back up to 557 // Trigger connection close. It should be propagated back up to
586 // |mock_client_|. 558 // |mock_client_|.
587 blink::mojom::PresentationSessionInfo presentation_connection; 559 content::PresentationSessionInfo presentation_connection(presentation_url1_,
588 presentation_connection.url = presentation_url1_; 560 kPresentationId);
589 presentation_connection.id = kPresentationId;
590 { 561 {
591 base::RunLoop run_loop; 562 base::RunLoop run_loop;
592 PresentationConnectionStateChangeInfo closed_info( 563 PresentationConnectionStateChangeInfo closed_info(
593 PRESENTATION_CONNECTION_STATE_CLOSED); 564 PRESENTATION_CONNECTION_STATE_CLOSED);
594 closed_info.close_reason = PRESENTATION_CONNECTION_CLOSE_REASON_WENT_AWAY; 565 closed_info.close_reason = PRESENTATION_CONNECTION_CLOSE_REASON_WENT_AWAY;
595 closed_info.message = "Foo"; 566 closed_info.message = "Foo";
596 567
597 EXPECT_CALL( 568 EXPECT_CALL(mock_client_,
598 mock_client_, 569 OnConnectionClosed(
599 OnConnectionClosed( 570 SessionInfoEquals(ByRef(presentation_connection)),
600 SessionInfoEquals(ByRef(presentation_connection)), 571 PRESENTATION_CONNECTION_CLOSE_REASON_WENT_AWAY, "Foo"))
601 blink::mojom::PresentationConnectionCloseReason::WENT_AWAY, "Foo"))
602 .WillOnce(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit)); 572 .WillOnce(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit));
603 state_changed_cb.Run(closed_info); 573 state_changed_cb.Run(closed_info);
604 run_loop.Run(); 574 run_loop.Run();
605 } 575 }
606 } 576 }
607 577
608 TEST_F(PresentationServiceImplTest, SetSameDefaultPresentationUrls) { 578 TEST_F(PresentationServiceImplTest, SetSameDefaultPresentationUrls) {
609 EXPECT_CALL(mock_delegate_, 579 EXPECT_CALL(mock_delegate_,
610 SetDefaultPresentationUrls(_, _, presentation_urls_, _)) 580 SetDefaultPresentationUrls(_, _, presentation_urls_, _))
611 .Times(1); 581 .Times(1);
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
714 RunListenForConnectionMessages(text_msg, binary_data, false); 684 RunListenForConnectionMessages(text_msg, binary_data, false);
715 } 685 }
716 686
717 TEST_F(PresentationServiceImplTest, ListenForConnectionMessagesWithEmptyMsg) { 687 TEST_F(PresentationServiceImplTest, ListenForConnectionMessagesWithEmptyMsg) {
718 std::string text_msg(""); 688 std::string text_msg("");
719 std::vector<uint8_t> binary_data; 689 std::vector<uint8_t> binary_data;
720 RunListenForConnectionMessages(text_msg, binary_data, false); 690 RunListenForConnectionMessages(text_msg, binary_data, false);
721 } 691 }
722 692
723 TEST_F(PresentationServiceImplTest, SetPresentationConnection) { 693 TEST_F(PresentationServiceImplTest, SetPresentationConnection) {
724 blink::mojom::PresentationSessionInfoPtr session( 694 content::PresentationSessionInfo session(presentation_url1_, kPresentationId);
725 blink::mojom::PresentationSessionInfo::New());
726 session->url = presentation_url1_;
727 session->id = kPresentationId;
728 695
729 blink::mojom::PresentationConnectionPtr connection; 696 blink::mojom::PresentationConnectionPtr connection;
730 MockPresentationConnection mock_presentation_connection; 697 MockPresentationConnection mock_presentation_connection;
731 mojo::Binding<blink::mojom::PresentationConnection> connection_binding( 698 mojo::Binding<blink::mojom::PresentationConnection> connection_binding(
732 &mock_presentation_connection, mojo::MakeRequest(&connection)); 699 &mock_presentation_connection, mojo::MakeRequest(&connection));
733 blink::mojom::PresentationConnectionPtr receiver_connection; 700 blink::mojom::PresentationConnectionPtr receiver_connection;
734 auto request = mojo::MakeRequest(&receiver_connection); 701 auto request = mojo::MakeRequest(&receiver_connection);
735 702
736 content::PresentationSessionInfo expected(presentation_url1_, 703 content::PresentationSessionInfo expected(presentation_url1_,
737 kPresentationId); 704 kPresentationId);
738 EXPECT_CALL(mock_delegate_, 705 EXPECT_CALL(mock_delegate_, RegisterOffscreenPresentationConnectionRaw(
739 RegisterOffscreenPresentationConnectionRaw( 706 _, _, SessionInfoEquals(ByRef(expected)), _));
740 _, _, ContentSessionInfoEquals(ByRef(expected)), _));
741 707
742 service_impl_->SetPresentationConnection( 708 service_impl_->SetPresentationConnection(session, std::move(connection),
743 std::move(session), std::move(connection), std::move(request)); 709 std::move(request));
744 } 710 }
745 711
746 TEST_F(PresentationServiceImplTest, ReceiverPresentationServiceDelegate) { 712 TEST_F(PresentationServiceImplTest, ReceiverPresentationServiceDelegate) {
747 MockReceiverPresentationServiceDelegate mock_receiver_delegate; 713 MockReceiverPresentationServiceDelegate mock_receiver_delegate;
748 714
749 PresentationServiceImpl service_impl(contents()->GetMainFrame(), contents(), 715 PresentationServiceImpl service_impl(contents()->GetMainFrame(), contents(),
750 nullptr, &mock_receiver_delegate); 716 nullptr, &mock_receiver_delegate);
751 717
752 ReceiverConnectionAvailableCallback callback; 718 ReceiverConnectionAvailableCallback callback;
753 EXPECT_CALL(mock_receiver_delegate, 719 EXPECT_CALL(mock_receiver_delegate,
754 RegisterReceiverConnectionAvailableCallback(_)) 720 RegisterReceiverConnectionAvailableCallback(_))
755 .WillOnce(SaveArg<0>(&callback)); 721 .WillOnce(SaveArg<0>(&callback));
756 722
757 blink::mojom::PresentationServiceClientPtr client_ptr; 723 blink::mojom::PresentationServiceClientPtr client_ptr;
758 client_binding_.reset( 724 client_binding_.reset(
759 new mojo::Binding<blink::mojom::PresentationServiceClient>( 725 new mojo::Binding<blink::mojom::PresentationServiceClient>(
760 &mock_client_, mojo::MakeRequest(&client_ptr))); 726 &mock_client_, mojo::MakeRequest(&client_ptr)));
761 service_impl.controller_delegate_ = nullptr; 727 service_impl.controller_delegate_ = nullptr;
762 service_impl.SetClient(std::move(client_ptr)); 728 service_impl.SetClient(std::move(client_ptr));
763 EXPECT_FALSE(callback.is_null()); 729 EXPECT_FALSE(callback.is_null());
764 730
765 // NO-OP for ControllerPresentationServiceDelegate API functions 731 // NO-OP for ControllerPresentationServiceDelegate API functions
766 EXPECT_CALL(mock_delegate_, ListenForConnectionMessages(_, _, _, _)).Times(0); 732 EXPECT_CALL(mock_delegate_, ListenForConnectionMessages(_, _, _, _)).Times(0);
767 733
768 blink::mojom::PresentationSessionInfoPtr session( 734 content::PresentationSessionInfo session(presentation_url1_, kPresentationId);
769 blink::mojom::PresentationSessionInfo::New()); 735 service_impl.ListenForConnectionMessages(session);
770 session->url = GURL(kPresentationUrl1);
771 session->id = kPresentationId;
772
773 service_impl.ListenForConnectionMessages(std::move(session));
774 } 736 }
775 737
776 TEST_F(PresentationServiceImplTest, StartSessionInProgress) { 738 TEST_F(PresentationServiceImplTest, StartSessionInProgress) {
777 EXPECT_CALL(mock_delegate_, StartSession(_, _, presentation_urls_, _, _)) 739 EXPECT_CALL(mock_delegate_, StartSession(_, _, presentation_urls_, _, _))
778 .Times(1); 740 .Times(1);
779 service_ptr_->StartSession(presentation_urls_, base::Bind(&DoNothing)); 741 service_ptr_->StartSession(presentation_urls_, base::Bind(&DoNothing));
780 742
781 // This request should fail immediately, since there is already a StartSession 743 // This request should fail immediately, since there is already a StartSession
782 // in progress. 744 // in progress.
783 service_ptr_->StartSession( 745 service_ptr_->StartSession(
784 presentation_urls_, 746 presentation_urls_,
785 base::Bind(&PresentationServiceImplTest::ExpectNewSessionCallbackError, 747 base::Bind(&PresentationServiceImplTest::ExpectNewSessionCallbackError,
786 base::Unretained(this))); 748 base::Unretained(this)));
787 SaveQuitClosureAndRunLoop(); 749 SaveQuitClosureAndRunLoop();
788 } 750 }
789 751
790 TEST_F(PresentationServiceImplTest, SendStringMessage) { 752 TEST_F(PresentationServiceImplTest, SendStringMessage) {
791 std::string message("Test presentation session message"); 753 std::string message("Test presentation session message");
792 754
793 blink::mojom::PresentationSessionInfoPtr session( 755 content::PresentationSessionInfo session(presentation_url1_, kPresentationId);
794 blink::mojom::PresentationSessionInfo::New());
795 session->url = presentation_url1_;
796 session->id = kPresentationId;
797 blink::mojom::ConnectionMessagePtr message_request( 756 blink::mojom::ConnectionMessagePtr message_request(
798 blink::mojom::ConnectionMessage::New()); 757 blink::mojom::ConnectionMessage::New());
799 message_request->type = blink::mojom::PresentationMessageType::TEXT; 758 message_request->type = blink::mojom::PresentationMessageType::TEXT;
800 message_request->message = message; 759 message_request->message = message;
801 service_ptr_->SendConnectionMessage( 760 service_ptr_->SendConnectionMessage(
802 std::move(session), std::move(message_request), 761 session, std::move(message_request),
803 base::Bind( 762 base::Bind(
804 &PresentationServiceImplTest::ExpectSendConnectionMessageCallback, 763 &PresentationServiceImplTest::ExpectSendConnectionMessageCallback,
805 base::Unretained(this))); 764 base::Unretained(this)));
806 765
807 base::RunLoop run_loop; 766 base::RunLoop run_loop;
808 base::Callback<void(bool)> send_message_cb; 767 base::Callback<void(bool)> send_message_cb;
809 PresentationConnectionMessage* test_message = nullptr; 768 PresentationConnectionMessage* test_message = nullptr;
810 EXPECT_CALL(mock_delegate_, SendMessageRawPtr(_, _, _, _, _)) 769 EXPECT_CALL(mock_delegate_, SendMessageRawPtr(_, _, _, _, _))
811 .WillOnce(DoAll(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit), 770 .WillOnce(DoAll(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit),
812 SaveArg<3>(&test_message), SaveArg<4>(&send_message_cb))); 771 SaveArg<3>(&test_message), SaveArg<4>(&send_message_cb)));
(...skipping 11 matching lines...) Expand all
824 send_message_cb.Run(true); 783 send_message_cb.Run(true);
825 SaveQuitClosureAndRunLoop(); 784 SaveQuitClosureAndRunLoop();
826 } 785 }
827 786
828 TEST_F(PresentationServiceImplTest, SendArrayBuffer) { 787 TEST_F(PresentationServiceImplTest, SendArrayBuffer) {
829 // Test Array buffer data. 788 // Test Array buffer data.
830 const uint8_t buffer[] = {0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48}; 789 const uint8_t buffer[] = {0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48};
831 std::vector<uint8_t> data; 790 std::vector<uint8_t> data;
832 data.assign(buffer, buffer + sizeof(buffer)); 791 data.assign(buffer, buffer + sizeof(buffer));
833 792
834 blink::mojom::PresentationSessionInfoPtr session( 793 content::PresentationSessionInfo session(presentation_url1_, kPresentationId);
835 blink::mojom::PresentationSessionInfo::New());
836 session->url = presentation_url1_;
837 session->id = kPresentationId;
838 blink::mojom::ConnectionMessagePtr message_request( 794 blink::mojom::ConnectionMessagePtr message_request(
839 blink::mojom::ConnectionMessage::New()); 795 blink::mojom::ConnectionMessage::New());
840 message_request->type = blink::mojom::PresentationMessageType::BINARY; 796 message_request->type = blink::mojom::PresentationMessageType::BINARY;
841 message_request->data = data; 797 message_request->data = data;
842 service_ptr_->SendConnectionMessage( 798 service_ptr_->SendConnectionMessage(
843 std::move(session), std::move(message_request), 799 session, std::move(message_request),
844 base::Bind( 800 base::Bind(
845 &PresentationServiceImplTest::ExpectSendConnectionMessageCallback, 801 &PresentationServiceImplTest::ExpectSendConnectionMessageCallback,
846 base::Unretained(this))); 802 base::Unretained(this)));
847 803
848 base::RunLoop run_loop; 804 base::RunLoop run_loop;
849 base::Callback<void(bool)> send_message_cb; 805 base::Callback<void(bool)> send_message_cb;
850 PresentationConnectionMessage* test_message = nullptr; 806 PresentationConnectionMessage* test_message = nullptr;
851 EXPECT_CALL(mock_delegate_, SendMessageRawPtr(_, _, _, _, _)) 807 EXPECT_CALL(mock_delegate_, SendMessageRawPtr(_, _, _, _, _))
852 .WillOnce(DoAll(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit), 808 .WillOnce(DoAll(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit),
853 SaveArg<3>(&test_message), SaveArg<4>(&send_message_cb))); 809 SaveArg<3>(&test_message), SaveArg<4>(&send_message_cb)));
(...skipping 16 matching lines...) Expand all
870 826
871 TEST_F(PresentationServiceImplTest, SendArrayBufferWithExceedingLimit) { 827 TEST_F(PresentationServiceImplTest, SendArrayBufferWithExceedingLimit) {
872 // Create buffer with size exceeding the limit. 828 // Create buffer with size exceeding the limit.
873 // Use same size as in content::kMaxPresentationConnectionMessageSize. 829 // Use same size as in content::kMaxPresentationConnectionMessageSize.
874 const size_t kMaxBufferSizeInBytes = 64 * 1024; // 64 KB. 830 const size_t kMaxBufferSizeInBytes = 64 * 1024; // 64 KB.
875 uint8_t buffer[kMaxBufferSizeInBytes + 1]; 831 uint8_t buffer[kMaxBufferSizeInBytes + 1];
876 memset(buffer, 0, kMaxBufferSizeInBytes+1); 832 memset(buffer, 0, kMaxBufferSizeInBytes+1);
877 std::vector<uint8_t> data; 833 std::vector<uint8_t> data;
878 data.assign(buffer, buffer + sizeof(buffer)); 834 data.assign(buffer, buffer + sizeof(buffer));
879 835
880 blink::mojom::PresentationSessionInfoPtr session( 836 content::PresentationSessionInfo session(presentation_url1_, kPresentationId);
881 blink::mojom::PresentationSessionInfo::New());
882 session->url = presentation_url1_;
883 session->id = kPresentationId;
884 blink::mojom::ConnectionMessagePtr message_request( 837 blink::mojom::ConnectionMessagePtr message_request(
885 blink::mojom::ConnectionMessage::New()); 838 blink::mojom::ConnectionMessage::New());
886 message_request->type = blink::mojom::PresentationMessageType::BINARY; 839 message_request->type = blink::mojom::PresentationMessageType::BINARY;
887 message_request->data = data; 840 message_request->data = data;
888 service_ptr_->SendConnectionMessage( 841 service_ptr_->SendConnectionMessage(
889 std::move(session), std::move(message_request), 842 session, std::move(message_request),
890 base::Bind( 843 base::Bind(
891 &PresentationServiceImplTest::ExpectSendConnectionMessageCallback, 844 &PresentationServiceImplTest::ExpectSendConnectionMessageCallback,
892 base::Unretained(this))); 845 base::Unretained(this)));
893 846
894 base::RunLoop run_loop; 847 base::RunLoop run_loop;
895 base::Callback<void(bool)> send_message_cb; 848 base::Callback<void(bool)> send_message_cb;
896 PresentationConnectionMessage* test_message = nullptr; 849 PresentationConnectionMessage* test_message = nullptr;
897 EXPECT_CALL(mock_delegate_, SendMessageRawPtr(_, _, _, _, _)) 850 EXPECT_CALL(mock_delegate_, SendMessageRawPtr(_, _, _, _, _))
898 .WillOnce(DoAll(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit), 851 .WillOnce(DoAll(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit),
899 SaveArg<3>(&test_message), SaveArg<4>(&send_message_cb))); 852 SaveArg<3>(&test_message), SaveArg<4>(&send_message_cb)));
900 run_loop.Run(); 853 run_loop.Run();
901 854
902 EXPECT_FALSE(test_message); 855 EXPECT_FALSE(test_message);
903 send_message_cb.Run(true); 856 send_message_cb.Run(true);
904 SaveQuitClosureAndRunLoop(); 857 SaveQuitClosureAndRunLoop();
905 } 858 }
906 859
907 TEST_F(PresentationServiceImplTest, SendBlobData) { 860 TEST_F(PresentationServiceImplTest, SendBlobData) {
908 const uint8_t buffer[] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07}; 861 const uint8_t buffer[] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07};
909 std::vector<uint8_t> data; 862 std::vector<uint8_t> data;
910 data.assign(buffer, buffer + sizeof(buffer)); 863 data.assign(buffer, buffer + sizeof(buffer));
911 864
912 blink::mojom::PresentationSessionInfoPtr session( 865 content::PresentationSessionInfo session(presentation_url1_, kPresentationId);
913 blink::mojom::PresentationSessionInfo::New());
914 session->url = presentation_url1_;
915 session->id = kPresentationId;
916 blink::mojom::ConnectionMessagePtr message_request( 866 blink::mojom::ConnectionMessagePtr message_request(
917 blink::mojom::ConnectionMessage::New()); 867 blink::mojom::ConnectionMessage::New());
918 message_request->type = blink::mojom::PresentationMessageType::BINARY; 868 message_request->type = blink::mojom::PresentationMessageType::BINARY;
919 message_request->data = data; 869 message_request->data = data;
920 service_ptr_->SendConnectionMessage( 870 service_ptr_->SendConnectionMessage(
921 std::move(session), std::move(message_request), 871 session, std::move(message_request),
922 base::Bind( 872 base::Bind(
923 &PresentationServiceImplTest::ExpectSendConnectionMessageCallback, 873 &PresentationServiceImplTest::ExpectSendConnectionMessageCallback,
924 base::Unretained(this))); 874 base::Unretained(this)));
925 875
926 base::RunLoop run_loop; 876 base::RunLoop run_loop;
927 base::Callback<void(bool)> send_message_cb; 877 base::Callback<void(bool)> send_message_cb;
928 PresentationConnectionMessage* test_message = nullptr; 878 PresentationConnectionMessage* test_message = nullptr;
929 EXPECT_CALL(mock_delegate_, SendMessageRawPtr(_, _, _, _, _)) 879 EXPECT_CALL(mock_delegate_, SendMessageRawPtr(_, _, _, _, _))
930 .WillOnce(DoAll(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit), 880 .WillOnce(DoAll(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit),
931 SaveArg<3>(&test_message), SaveArg<4>(&send_message_cb))); 881 SaveArg<3>(&test_message), SaveArg<4>(&send_message_cb)));
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
972 mock_delegate_.set_screen_availability_listening_supported(false); 922 mock_delegate_.set_screen_availability_listening_supported(false);
973 base::RunLoop run_loop; 923 base::RunLoop run_loop;
974 EXPECT_CALL(mock_client_, 924 EXPECT_CALL(mock_client_,
975 OnScreenAvailabilityNotSupported(presentation_url1_)) 925 OnScreenAvailabilityNotSupported(presentation_url1_))
976 .WillOnce(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit)); 926 .WillOnce(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit));
977 ListenForScreenAvailabilityAndWait(presentation_url1_, false); 927 ListenForScreenAvailabilityAndWait(presentation_url1_, false);
978 run_loop.Run(); 928 run_loop.Run();
979 } 929 }
980 930
981 } // namespace content 931 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698