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 "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 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
106 const PresentationSessionStartedCallback& success_cb, | 106 const PresentationSessionStartedCallback& success_cb, |
107 const PresentationSessionErrorCallback& error_cb)); | 107 const PresentationSessionErrorCallback& error_cb)); |
108 MOCK_METHOD3(CloseConnection, | 108 MOCK_METHOD3(CloseConnection, |
109 void(int render_process_id, | 109 void(int render_process_id, |
110 int render_frame_id, | 110 int render_frame_id, |
111 const std::string& presentation_id)); | 111 const std::string& presentation_id)); |
112 MOCK_METHOD3(Terminate, | 112 MOCK_METHOD3(Terminate, |
113 void(int render_process_id, | 113 void(int render_process_id, |
114 int render_frame_id, | 114 int render_frame_id, |
115 const std::string& presentation_id)); | 115 const std::string& presentation_id)); |
116 MOCK_METHOD4(ListenForSessionMessages, | 116 MOCK_METHOD4(ListenForConnectionMessages, |
117 void(int render_process_id, | 117 void(int render_process_id, |
118 int render_frame_id, | 118 int render_frame_id, |
119 const content::PresentationSessionInfo& session, | 119 const content::PresentationSessionInfo& session, |
120 const PresentationSessionMessageCallback& message_cb)); | 120 const PresentationConnectionMessageCallback& message_cb)); |
121 MOCK_METHOD5(SendMessageRawPtr, | 121 MOCK_METHOD5(SendMessageRawPtr, |
122 void(int render_process_id, | 122 void(int render_process_id, |
123 int render_frame_id, | 123 int render_frame_id, |
124 const content::PresentationSessionInfo& session, | 124 const content::PresentationSessionInfo& session, |
125 PresentationSessionMessage* message_request, | 125 PresentationConnectionMessage* message_request, |
126 const SendMessageCallback& send_message_cb)); | 126 const SendMessageCallback& send_message_cb)); |
127 void SendMessage(int render_process_id, | 127 void SendMessage( |
128 int render_frame_id, | 128 int render_process_id, |
129 const content::PresentationSessionInfo& session, | 129 int render_frame_id, |
130 std::unique_ptr<PresentationSessionMessage> message_request, | 130 const content::PresentationSessionInfo& session, |
131 const SendMessageCallback& send_message_cb) override { | 131 std::unique_ptr<PresentationConnectionMessage> message_request, |
| 132 const SendMessageCallback& send_message_cb) override { |
132 SendMessageRawPtr(render_process_id, render_frame_id, session, | 133 SendMessageRawPtr(render_process_id, render_frame_id, session, |
133 message_request.release(), send_message_cb); | 134 message_request.release(), send_message_cb); |
134 } | 135 } |
135 MOCK_METHOD4(ListenForConnectionStateChange, | 136 MOCK_METHOD4(ListenForConnectionStateChange, |
136 void(int render_process_id, | 137 void(int render_process_id, |
137 int render_frame_id, | 138 int render_frame_id, |
138 const content::PresentationSessionInfo& connection, | 139 const content::PresentationSessionInfo& connection, |
139 const content::PresentationConnectionStateChangedCallback& | 140 const content::PresentationConnectionStateChangedCallback& |
140 state_changed_cb)); | 141 state_changed_cb)); |
141 | 142 |
(...skipping 25 matching lines...) Expand all Loading... |
167 const std::string& message) override { | 168 const std::string& message) override { |
168 OnConnectionClosed(*connection, reason, message); | 169 OnConnectionClosed(*connection, reason, message); |
169 } | 170 } |
170 MOCK_METHOD3(OnConnectionClosed, | 171 MOCK_METHOD3(OnConnectionClosed, |
171 void(const blink::mojom::PresentationSessionInfo& connection, | 172 void(const blink::mojom::PresentationSessionInfo& connection, |
172 blink::mojom::PresentationConnectionCloseReason reason, | 173 blink::mojom::PresentationConnectionCloseReason reason, |
173 const std::string& message)); | 174 const std::string& message)); |
174 | 175 |
175 MOCK_METHOD1(OnScreenAvailabilityNotSupported, void(const GURL& url)); | 176 MOCK_METHOD1(OnScreenAvailabilityNotSupported, void(const GURL& url)); |
176 | 177 |
177 void OnSessionMessagesReceived( | 178 void OnConnectionMessagesReceived( |
178 blink::mojom::PresentationSessionInfoPtr session_info, | 179 blink::mojom::PresentationSessionInfoPtr session_info, |
179 std::vector<blink::mojom::SessionMessagePtr> messages) override { | 180 std::vector<blink::mojom::ConnectionMessagePtr> messages) override { |
180 messages_received_ = std::move(messages); | 181 messages_received_ = std::move(messages); |
181 MessagesReceived(); | 182 MessagesReceived(); |
182 } | 183 } |
183 MOCK_METHOD0(MessagesReceived, void()); | 184 MOCK_METHOD0(MessagesReceived, void()); |
184 | 185 |
185 void OnDefaultSessionStarted( | 186 void OnDefaultSessionStarted( |
186 blink::mojom::PresentationSessionInfoPtr session_info) override { | 187 blink::mojom::PresentationSessionInfoPtr session_info) override { |
187 OnDefaultSessionStarted(*session_info); | 188 OnDefaultSessionStarted(*session_info); |
188 } | 189 } |
189 MOCK_METHOD1(OnDefaultSessionStarted, | 190 MOCK_METHOD1(OnDefaultSessionStarted, |
190 void(const blink::mojom::PresentationSessionInfo& session_info)); | 191 void(const blink::mojom::PresentationSessionInfo& session_info)); |
191 | 192 |
192 void OnReceiverConnectionAvailable( | 193 void OnReceiverConnectionAvailable( |
193 blink::mojom::PresentationSessionInfoPtr session_info) override { | 194 blink::mojom::PresentationSessionInfoPtr session_info) override { |
194 OnReceiverConnectionAvailable(*session_info); | 195 OnReceiverConnectionAvailable(*session_info); |
195 } | 196 } |
196 MOCK_METHOD1(OnReceiverConnectionAvailable, | 197 MOCK_METHOD1(OnReceiverConnectionAvailable, |
197 void(const blink::mojom::PresentationSessionInfo& session_info)); | 198 void(const blink::mojom::PresentationSessionInfo& session_info)); |
198 | 199 |
199 std::vector<blink::mojom::SessionMessagePtr> messages_received_; | 200 std::vector<blink::mojom::ConnectionMessagePtr> messages_received_; |
200 }; | 201 }; |
201 | 202 |
202 class PresentationServiceImplTest : public RenderViewHostImplTestHarness { | 203 class PresentationServiceImplTest : public RenderViewHostImplTestHarness { |
203 public: | 204 public: |
204 PresentationServiceImplTest() | 205 PresentationServiceImplTest() |
205 : presentation_url1_(GURL(kPresentationUrl1)), | 206 : presentation_url1_(GURL(kPresentationUrl1)), |
206 presentation_url2_(GURL(kPresentationUrl2)), | 207 presentation_url2_(GURL(kPresentationUrl2)), |
207 presentation_url3_(GURL(kPresentationUrl3)) {} | 208 presentation_url3_(GURL(kPresentationUrl3)) {} |
208 | 209 |
209 void SetUp() override { | 210 void SetUp() override { |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
281 | 282 |
282 void ExpectReset() { | 283 void ExpectReset() { |
283 EXPECT_CALL(mock_delegate_, Reset(_, _)).Times(1); | 284 EXPECT_CALL(mock_delegate_, Reset(_, _)).Times(1); |
284 } | 285 } |
285 | 286 |
286 void ExpectCleanState() { | 287 void ExpectCleanState() { |
287 EXPECT_TRUE(service_impl_->default_presentation_urls_.empty()); | 288 EXPECT_TRUE(service_impl_->default_presentation_urls_.empty()); |
288 EXPECT_EQ( | 289 EXPECT_EQ( |
289 service_impl_->screen_availability_listeners_.find(presentation_url1_), | 290 service_impl_->screen_availability_listeners_.find(presentation_url1_), |
290 service_impl_->screen_availability_listeners_.end()); | 291 service_impl_->screen_availability_listeners_.end()); |
291 EXPECT_FALSE(service_impl_->on_session_messages_callback_.get()); | 292 EXPECT_FALSE(service_impl_->on_connection_messages_callback_.get()); |
292 } | 293 } |
293 | 294 |
294 void ExpectNewSessionCallbackSuccess( | 295 void ExpectNewSessionCallbackSuccess( |
295 blink::mojom::PresentationSessionInfoPtr info, | 296 blink::mojom::PresentationSessionInfoPtr info, |
296 blink::mojom::PresentationErrorPtr error) { | 297 blink::mojom::PresentationErrorPtr error) { |
297 EXPECT_FALSE(info.is_null()); | 298 EXPECT_FALSE(info.is_null()); |
298 EXPECT_TRUE(error.is_null()); | 299 EXPECT_TRUE(error.is_null()); |
299 if (!run_loop_quit_closure_.is_null()) | 300 if (!run_loop_quit_closure_.is_null()) |
300 run_loop_quit_closure_.Run(); | 301 run_loop_quit_closure_.Run(); |
301 } | 302 } |
302 | 303 |
303 void ExpectNewSessionCallbackError( | 304 void ExpectNewSessionCallbackError( |
304 blink::mojom::PresentationSessionInfoPtr info, | 305 blink::mojom::PresentationSessionInfoPtr info, |
305 blink::mojom::PresentationErrorPtr error) { | 306 blink::mojom::PresentationErrorPtr error) { |
306 EXPECT_TRUE(info.is_null()); | 307 EXPECT_TRUE(info.is_null()); |
307 EXPECT_FALSE(error.is_null()); | 308 EXPECT_FALSE(error.is_null()); |
308 if (!run_loop_quit_closure_.is_null()) | 309 if (!run_loop_quit_closure_.is_null()) |
309 run_loop_quit_closure_.Run(); | 310 run_loop_quit_closure_.Run(); |
310 } | 311 } |
311 | 312 |
312 void ExpectSessionMessages( | 313 void ExpectConnectionMessages( |
313 const std::vector<blink::mojom::SessionMessagePtr>& expected_msgs, | 314 const std::vector<blink::mojom::ConnectionMessagePtr>& expected_msgs, |
314 const std::vector<blink::mojom::SessionMessagePtr>& actual_msgs) { | 315 const std::vector<blink::mojom::ConnectionMessagePtr>& actual_msgs) { |
315 EXPECT_EQ(expected_msgs.size(), actual_msgs.size()); | 316 EXPECT_EQ(expected_msgs.size(), actual_msgs.size()); |
316 for (size_t i = 0; i < actual_msgs.size(); ++i) | 317 for (size_t i = 0; i < actual_msgs.size(); ++i) |
317 EXPECT_TRUE(expected_msgs[i].Equals(actual_msgs[i])); | 318 EXPECT_TRUE(expected_msgs[i].Equals(actual_msgs[i])); |
318 } | 319 } |
319 | 320 |
320 void ExpectSendSessionMessageCallback(bool success) { | 321 void ExpectSendConnectionMessageCallback(bool success) { |
321 EXPECT_TRUE(success); | 322 EXPECT_TRUE(success); |
322 EXPECT_FALSE(service_impl_->send_message_callback_); | 323 EXPECT_FALSE(service_impl_->send_message_callback_); |
323 if (!run_loop_quit_closure_.is_null()) | 324 if (!run_loop_quit_closure_.is_null()) |
324 run_loop_quit_closure_.Run(); | 325 run_loop_quit_closure_.Run(); |
325 } | 326 } |
326 | 327 |
327 void RunListenForSessionMessages(const std::string& text_msg, | 328 void RunListenForConnectionMessages(const std::string& text_msg, |
328 const std::vector<uint8_t>& binary_data, | 329 const std::vector<uint8_t>& binary_data, |
329 bool pass_ownership) { | 330 bool pass_ownership) { |
330 std::vector<blink::mojom::SessionMessagePtr> expected_msgs(2); | 331 std::vector<blink::mojom::ConnectionMessagePtr> expected_msgs(2); |
331 expected_msgs[0] = blink::mojom::SessionMessage::New(); | 332 expected_msgs[0] = blink::mojom::ConnectionMessage::New(); |
332 expected_msgs[0]->type = blink::mojom::PresentationMessageType::TEXT; | 333 expected_msgs[0]->type = blink::mojom::PresentationMessageType::TEXT; |
333 expected_msgs[0]->message = text_msg; | 334 expected_msgs[0]->message = text_msg; |
334 expected_msgs[1] = blink::mojom::SessionMessage::New(); | 335 expected_msgs[1] = blink::mojom::ConnectionMessage::New(); |
335 expected_msgs[1]->type = | 336 expected_msgs[1]->type = blink::mojom::PresentationMessageType::BINARY; |
336 blink::mojom::PresentationMessageType::ARRAY_BUFFER; | |
337 expected_msgs[1]->data = binary_data; | 337 expected_msgs[1]->data = binary_data; |
338 | 338 |
339 blink::mojom::PresentationSessionInfoPtr session( | 339 blink::mojom::PresentationSessionInfoPtr session( |
340 blink::mojom::PresentationSessionInfo::New()); | 340 blink::mojom::PresentationSessionInfo::New()); |
341 session->url = presentation_url1_; | 341 session->url = presentation_url1_; |
342 session->id = kPresentationId; | 342 session->id = kPresentationId; |
343 | 343 |
344 PresentationSessionMessageCallback message_cb; | 344 PresentationConnectionMessageCallback message_cb; |
345 { | 345 { |
346 base::RunLoop run_loop; | 346 base::RunLoop run_loop; |
347 EXPECT_CALL(mock_delegate_, ListenForSessionMessages(_, _, _, _)) | 347 EXPECT_CALL(mock_delegate_, ListenForConnectionMessages(_, _, _, _)) |
348 .WillOnce(DoAll(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit), | 348 .WillOnce(DoAll(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit), |
349 SaveArg<3>(&message_cb))); | 349 SaveArg<3>(&message_cb))); |
350 service_ptr_->ListenForSessionMessages(std::move(session)); | 350 service_ptr_->ListenForConnectionMessages(std::move(session)); |
351 run_loop.Run(); | 351 run_loop.Run(); |
352 } | 352 } |
353 | 353 |
354 ScopedVector<PresentationSessionMessage> messages; | 354 ScopedVector<PresentationConnectionMessage> messages; |
355 std::unique_ptr<content::PresentationSessionMessage> message; | 355 std::unique_ptr<content::PresentationConnectionMessage> message; |
356 message.reset( | 356 message.reset(new content::PresentationConnectionMessage( |
357 new content::PresentationSessionMessage(PresentationMessageType::TEXT)); | 357 PresentationMessageType::TEXT)); |
358 message->message = text_msg; | 358 message->message = text_msg; |
359 messages.push_back(std::move(message)); | 359 messages.push_back(std::move(message)); |
360 message.reset(new content::PresentationSessionMessage( | 360 message.reset(new content::PresentationConnectionMessage( |
361 PresentationMessageType::ARRAY_BUFFER)); | 361 PresentationMessageType::BINARY)); |
362 message->data.reset(new std::vector<uint8_t>(binary_data)); | 362 message->data.reset(new std::vector<uint8_t>(binary_data)); |
363 messages.push_back(std::move(message)); | 363 messages.push_back(std::move(message)); |
364 | 364 |
365 std::vector<blink::mojom::SessionMessagePtr> actual_msgs; | 365 std::vector<blink::mojom::ConnectionMessagePtr> actual_msgs; |
366 { | 366 { |
367 base::RunLoop run_loop; | 367 base::RunLoop run_loop; |
368 EXPECT_CALL(mock_client_, MessagesReceived()) | 368 EXPECT_CALL(mock_client_, MessagesReceived()) |
369 .WillOnce(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit)); | 369 .WillOnce(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit)); |
370 message_cb.Run(std::move(messages), pass_ownership); | 370 message_cb.Run(std::move(messages), pass_ownership); |
371 run_loop.Run(); | 371 run_loop.Run(); |
372 } | 372 } |
373 ExpectSessionMessages(expected_msgs, mock_client_.messages_received_); | 373 ExpectConnectionMessages(expected_msgs, mock_client_.messages_received_); |
374 } | 374 } |
375 | 375 |
376 MockPresentationServiceDelegate mock_delegate_; | 376 MockPresentationServiceDelegate mock_delegate_; |
377 | 377 |
378 std::unique_ptr<PresentationServiceImpl> service_impl_; | 378 std::unique_ptr<PresentationServiceImpl> service_impl_; |
379 mojo::InterfacePtr<blink::mojom::PresentationService> service_ptr_; | 379 mojo::InterfacePtr<blink::mojom::PresentationService> service_ptr_; |
380 | 380 |
381 MockPresentationServiceClient mock_client_; | 381 MockPresentationServiceClient mock_client_; |
382 std::unique_ptr<mojo::Binding<blink::mojom::PresentationServiceClient>> | 382 std::unique_ptr<mojo::Binding<blink::mojom::PresentationServiceClient>> |
383 client_binding_; | 383 client_binding_; |
(...skipping 258 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
642 } | 642 } |
643 | 643 |
644 TEST_F(PresentationServiceImplTest, Terminate) { | 644 TEST_F(PresentationServiceImplTest, Terminate) { |
645 service_ptr_->Terminate(presentation_url1_, kPresentationId); | 645 service_ptr_->Terminate(presentation_url1_, kPresentationId); |
646 base::RunLoop run_loop; | 646 base::RunLoop run_loop; |
647 EXPECT_CALL(mock_delegate_, Terminate(_, _, Eq(kPresentationId))) | 647 EXPECT_CALL(mock_delegate_, Terminate(_, _, Eq(kPresentationId))) |
648 .WillOnce(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit)); | 648 .WillOnce(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit)); |
649 run_loop.Run(); | 649 run_loop.Run(); |
650 } | 650 } |
651 | 651 |
652 TEST_F(PresentationServiceImplTest, ListenForSessionMessagesPassed) { | 652 TEST_F(PresentationServiceImplTest, ListenForConnectionMessagesPassed) { |
653 std::string text_msg("123"); | 653 std::string text_msg("123"); |
654 std::vector<uint8_t> binary_data(3, '\1'); | 654 std::vector<uint8_t> binary_data(3, '\1'); |
655 RunListenForSessionMessages(text_msg, binary_data, true); | 655 RunListenForConnectionMessages(text_msg, binary_data, true); |
656 } | 656 } |
657 | 657 |
658 TEST_F(PresentationServiceImplTest, ListenForSessionMessagesCopied) { | 658 TEST_F(PresentationServiceImplTest, ListenForConnectionMessagesCopied) { |
659 std::string text_msg("123"); | 659 std::string text_msg("123"); |
660 std::vector<uint8_t> binary_data(3, '\1'); | 660 std::vector<uint8_t> binary_data(3, '\1'); |
661 RunListenForSessionMessages(text_msg, binary_data, false); | 661 RunListenForConnectionMessages(text_msg, binary_data, false); |
662 } | 662 } |
663 | 663 |
664 TEST_F(PresentationServiceImplTest, ListenForSessionMessagesWithEmptyMsg) { | 664 TEST_F(PresentationServiceImplTest, ListenForConnectionMessagesWithEmptyMsg) { |
665 std::string text_msg(""); | 665 std::string text_msg(""); |
666 std::vector<uint8_t> binary_data; | 666 std::vector<uint8_t> binary_data; |
667 RunListenForSessionMessages(text_msg, binary_data, false); | 667 RunListenForConnectionMessages(text_msg, binary_data, false); |
668 } | 668 } |
669 | 669 |
670 TEST_F(PresentationServiceImplTest, StartSessionInProgress) { | 670 TEST_F(PresentationServiceImplTest, StartSessionInProgress) { |
671 EXPECT_CALL(mock_delegate_, StartSession(_, _, presentation_urls_, _, _)) | 671 EXPECT_CALL(mock_delegate_, StartSession(_, _, presentation_urls_, _, _)) |
672 .Times(1); | 672 .Times(1); |
673 service_ptr_->StartSession(presentation_urls_, base::Bind(&DoNothing)); | 673 service_ptr_->StartSession(presentation_urls_, base::Bind(&DoNothing)); |
674 | 674 |
675 // This request should fail immediately, since there is already a StartSession | 675 // This request should fail immediately, since there is already a StartSession |
676 // in progress. | 676 // in progress. |
677 service_ptr_->StartSession( | 677 service_ptr_->StartSession( |
678 presentation_urls_, | 678 presentation_urls_, |
679 base::Bind(&PresentationServiceImplTest::ExpectNewSessionCallbackError, | 679 base::Bind(&PresentationServiceImplTest::ExpectNewSessionCallbackError, |
680 base::Unretained(this))); | 680 base::Unretained(this))); |
681 SaveQuitClosureAndRunLoop(); | 681 SaveQuitClosureAndRunLoop(); |
682 } | 682 } |
683 | 683 |
684 TEST_F(PresentationServiceImplTest, SendStringMessage) { | 684 TEST_F(PresentationServiceImplTest, SendStringMessage) { |
685 std::string message("Test presentation session message"); | 685 std::string message("Test presentation session message"); |
686 | 686 |
687 blink::mojom::PresentationSessionInfoPtr session( | 687 blink::mojom::PresentationSessionInfoPtr session( |
688 blink::mojom::PresentationSessionInfo::New()); | 688 blink::mojom::PresentationSessionInfo::New()); |
689 session->url = presentation_url1_; | 689 session->url = presentation_url1_; |
690 session->id = kPresentationId; | 690 session->id = kPresentationId; |
691 blink::mojom::SessionMessagePtr message_request( | 691 blink::mojom::ConnectionMessagePtr message_request( |
692 blink::mojom::SessionMessage::New()); | 692 blink::mojom::ConnectionMessage::New()); |
693 message_request->type = blink::mojom::PresentationMessageType::TEXT; | 693 message_request->type = blink::mojom::PresentationMessageType::TEXT; |
694 message_request->message = message; | 694 message_request->message = message; |
695 service_ptr_->SendSessionMessage( | 695 service_ptr_->SendConnectionMessage( |
696 std::move(session), std::move(message_request), | 696 std::move(session), std::move(message_request), |
697 base::Bind(&PresentationServiceImplTest::ExpectSendSessionMessageCallback, | 697 base::Bind( |
698 base::Unretained(this))); | 698 &PresentationServiceImplTest::ExpectSendConnectionMessageCallback, |
| 699 base::Unretained(this))); |
699 | 700 |
700 base::RunLoop run_loop; | 701 base::RunLoop run_loop; |
701 base::Callback<void(bool)> send_message_cb; | 702 base::Callback<void(bool)> send_message_cb; |
702 PresentationSessionMessage* test_message = nullptr; | 703 PresentationConnectionMessage* test_message = nullptr; |
703 EXPECT_CALL(mock_delegate_, SendMessageRawPtr(_, _, _, _, _)) | 704 EXPECT_CALL(mock_delegate_, SendMessageRawPtr(_, _, _, _, _)) |
704 .WillOnce(DoAll(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit), | 705 .WillOnce(DoAll(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit), |
705 SaveArg<3>(&test_message), SaveArg<4>(&send_message_cb))); | 706 SaveArg<3>(&test_message), SaveArg<4>(&send_message_cb))); |
706 run_loop.Run(); | 707 run_loop.Run(); |
707 | 708 |
708 // Make sure |test_message| gets deleted. | 709 // Make sure |test_message| gets deleted. |
709 std::unique_ptr<PresentationSessionMessage> scoped_test_message(test_message); | 710 std::unique_ptr<PresentationConnectionMessage> scoped_test_message( |
| 711 test_message); |
710 EXPECT_TRUE(test_message); | 712 EXPECT_TRUE(test_message); |
711 EXPECT_FALSE(test_message->is_binary()); | 713 EXPECT_FALSE(test_message->is_binary()); |
712 EXPECT_LE(test_message->message.size(), kMaxPresentationSessionMessageSize); | 714 EXPECT_LE(test_message->message.size(), |
| 715 kMaxPresentationConnectionMessageSize); |
713 EXPECT_EQ(message, test_message->message); | 716 EXPECT_EQ(message, test_message->message); |
714 ASSERT_FALSE(test_message->data); | 717 ASSERT_FALSE(test_message->data); |
715 send_message_cb.Run(true); | 718 send_message_cb.Run(true); |
716 SaveQuitClosureAndRunLoop(); | 719 SaveQuitClosureAndRunLoop(); |
717 } | 720 } |
718 | 721 |
719 TEST_F(PresentationServiceImplTest, SendArrayBuffer) { | 722 TEST_F(PresentationServiceImplTest, SendArrayBuffer) { |
720 // Test Array buffer data. | 723 // Test Array buffer data. |
721 const uint8_t buffer[] = {0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48}; | 724 const uint8_t buffer[] = {0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48}; |
722 std::vector<uint8_t> data; | 725 std::vector<uint8_t> data; |
723 data.assign(buffer, buffer + sizeof(buffer)); | 726 data.assign(buffer, buffer + sizeof(buffer)); |
724 | 727 |
725 blink::mojom::PresentationSessionInfoPtr session( | 728 blink::mojom::PresentationSessionInfoPtr session( |
726 blink::mojom::PresentationSessionInfo::New()); | 729 blink::mojom::PresentationSessionInfo::New()); |
727 session->url = presentation_url1_; | 730 session->url = presentation_url1_; |
728 session->id = kPresentationId; | 731 session->id = kPresentationId; |
729 blink::mojom::SessionMessagePtr message_request( | 732 blink::mojom::ConnectionMessagePtr message_request( |
730 blink::mojom::SessionMessage::New()); | 733 blink::mojom::ConnectionMessage::New()); |
731 message_request->type = blink::mojom::PresentationMessageType::ARRAY_BUFFER; | 734 message_request->type = blink::mojom::PresentationMessageType::BINARY; |
732 message_request->data = data; | 735 message_request->data = data; |
733 service_ptr_->SendSessionMessage( | 736 service_ptr_->SendConnectionMessage( |
734 std::move(session), std::move(message_request), | 737 std::move(session), std::move(message_request), |
735 base::Bind(&PresentationServiceImplTest::ExpectSendSessionMessageCallback, | 738 base::Bind( |
736 base::Unretained(this))); | 739 &PresentationServiceImplTest::ExpectSendConnectionMessageCallback, |
| 740 base::Unretained(this))); |
737 | 741 |
738 base::RunLoop run_loop; | 742 base::RunLoop run_loop; |
739 base::Callback<void(bool)> send_message_cb; | 743 base::Callback<void(bool)> send_message_cb; |
740 PresentationSessionMessage* test_message = nullptr; | 744 PresentationConnectionMessage* test_message = nullptr; |
741 EXPECT_CALL(mock_delegate_, SendMessageRawPtr(_, _, _, _, _)) | 745 EXPECT_CALL(mock_delegate_, SendMessageRawPtr(_, _, _, _, _)) |
742 .WillOnce(DoAll(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit), | 746 .WillOnce(DoAll(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit), |
743 SaveArg<3>(&test_message), SaveArg<4>(&send_message_cb))); | 747 SaveArg<3>(&test_message), SaveArg<4>(&send_message_cb))); |
744 run_loop.Run(); | 748 run_loop.Run(); |
745 | 749 |
746 // Make sure |test_message| gets deleted. | 750 // Make sure |test_message| gets deleted. |
747 std::unique_ptr<PresentationSessionMessage> scoped_test_message(test_message); | 751 std::unique_ptr<PresentationConnectionMessage> scoped_test_message( |
| 752 test_message); |
748 EXPECT_TRUE(test_message); | 753 EXPECT_TRUE(test_message); |
749 EXPECT_TRUE(test_message->is_binary()); | 754 EXPECT_TRUE(test_message->is_binary()); |
750 EXPECT_EQ(PresentationMessageType::ARRAY_BUFFER, test_message->type); | 755 EXPECT_EQ(PresentationMessageType::BINARY, test_message->type); |
751 EXPECT_TRUE(test_message->message.empty()); | 756 EXPECT_TRUE(test_message->message.empty()); |
752 ASSERT_TRUE(test_message->data); | 757 ASSERT_TRUE(test_message->data); |
753 EXPECT_EQ(data.size(), test_message->data->size()); | 758 EXPECT_EQ(data.size(), test_message->data->size()); |
754 EXPECT_LE(test_message->data->size(), kMaxPresentationSessionMessageSize); | 759 EXPECT_LE(test_message->data->size(), kMaxPresentationConnectionMessageSize); |
755 EXPECT_EQ(0, memcmp(buffer, &(*test_message->data)[0], sizeof(buffer))); | 760 EXPECT_EQ(0, memcmp(buffer, &(*test_message->data)[0], sizeof(buffer))); |
756 send_message_cb.Run(true); | 761 send_message_cb.Run(true); |
757 SaveQuitClosureAndRunLoop(); | 762 SaveQuitClosureAndRunLoop(); |
758 } | 763 } |
759 | 764 |
760 TEST_F(PresentationServiceImplTest, SendArrayBufferWithExceedingLimit) { | 765 TEST_F(PresentationServiceImplTest, SendArrayBufferWithExceedingLimit) { |
761 // Create buffer with size exceeding the limit. | 766 // Create buffer with size exceeding the limit. |
762 // Use same size as in content::kMaxPresentationSessionMessageSize. | 767 // Use same size as in content::kMaxPresentationConnectionMessageSize. |
763 const size_t kMaxBufferSizeInBytes = 64 * 1024; // 64 KB. | 768 const size_t kMaxBufferSizeInBytes = 64 * 1024; // 64 KB. |
764 uint8_t buffer[kMaxBufferSizeInBytes + 1]; | 769 uint8_t buffer[kMaxBufferSizeInBytes + 1]; |
765 memset(buffer, 0, kMaxBufferSizeInBytes+1); | 770 memset(buffer, 0, kMaxBufferSizeInBytes+1); |
766 std::vector<uint8_t> data; | 771 std::vector<uint8_t> data; |
767 data.assign(buffer, buffer + sizeof(buffer)); | 772 data.assign(buffer, buffer + sizeof(buffer)); |
768 | 773 |
769 blink::mojom::PresentationSessionInfoPtr session( | 774 blink::mojom::PresentationSessionInfoPtr session( |
770 blink::mojom::PresentationSessionInfo::New()); | 775 blink::mojom::PresentationSessionInfo::New()); |
771 session->url = presentation_url1_; | 776 session->url = presentation_url1_; |
772 session->id = kPresentationId; | 777 session->id = kPresentationId; |
773 blink::mojom::SessionMessagePtr message_request( | 778 blink::mojom::ConnectionMessagePtr message_request( |
774 blink::mojom::SessionMessage::New()); | 779 blink::mojom::ConnectionMessage::New()); |
775 message_request->type = blink::mojom::PresentationMessageType::ARRAY_BUFFER; | 780 message_request->type = blink::mojom::PresentationMessageType::BINARY; |
776 message_request->data = data; | 781 message_request->data = data; |
777 service_ptr_->SendSessionMessage( | 782 service_ptr_->SendConnectionMessage( |
778 std::move(session), std::move(message_request), | 783 std::move(session), std::move(message_request), |
779 base::Bind(&PresentationServiceImplTest::ExpectSendSessionMessageCallback, | 784 base::Bind( |
780 base::Unretained(this))); | 785 &PresentationServiceImplTest::ExpectSendConnectionMessageCallback, |
| 786 base::Unretained(this))); |
781 | 787 |
782 base::RunLoop run_loop; | 788 base::RunLoop run_loop; |
783 base::Callback<void(bool)> send_message_cb; | 789 base::Callback<void(bool)> send_message_cb; |
784 PresentationSessionMessage* test_message = nullptr; | 790 PresentationConnectionMessage* test_message = nullptr; |
785 EXPECT_CALL(mock_delegate_, SendMessageRawPtr(_, _, _, _, _)) | 791 EXPECT_CALL(mock_delegate_, SendMessageRawPtr(_, _, _, _, _)) |
786 .WillOnce(DoAll(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit), | 792 .WillOnce(DoAll(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit), |
787 SaveArg<3>(&test_message), SaveArg<4>(&send_message_cb))); | 793 SaveArg<3>(&test_message), SaveArg<4>(&send_message_cb))); |
788 run_loop.Run(); | 794 run_loop.Run(); |
789 | 795 |
790 EXPECT_FALSE(test_message); | 796 EXPECT_FALSE(test_message); |
791 send_message_cb.Run(true); | 797 send_message_cb.Run(true); |
792 SaveQuitClosureAndRunLoop(); | 798 SaveQuitClosureAndRunLoop(); |
793 } | 799 } |
794 | 800 |
795 TEST_F(PresentationServiceImplTest, SendBlobData) { | 801 TEST_F(PresentationServiceImplTest, SendBlobData) { |
796 const uint8_t buffer[] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07}; | 802 const uint8_t buffer[] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07}; |
797 std::vector<uint8_t> data; | 803 std::vector<uint8_t> data; |
798 data.assign(buffer, buffer + sizeof(buffer)); | 804 data.assign(buffer, buffer + sizeof(buffer)); |
799 | 805 |
800 blink::mojom::PresentationSessionInfoPtr session( | 806 blink::mojom::PresentationSessionInfoPtr session( |
801 blink::mojom::PresentationSessionInfo::New()); | 807 blink::mojom::PresentationSessionInfo::New()); |
802 session->url = presentation_url1_; | 808 session->url = presentation_url1_; |
803 session->id = kPresentationId; | 809 session->id = kPresentationId; |
804 blink::mojom::SessionMessagePtr message_request( | 810 blink::mojom::ConnectionMessagePtr message_request( |
805 blink::mojom::SessionMessage::New()); | 811 blink::mojom::ConnectionMessage::New()); |
806 message_request->type = blink::mojom::PresentationMessageType::BLOB; | 812 message_request->type = blink::mojom::PresentationMessageType::BINARY; |
807 message_request->data = data; | 813 message_request->data = data; |
808 service_ptr_->SendSessionMessage( | 814 service_ptr_->SendConnectionMessage( |
809 std::move(session), std::move(message_request), | 815 std::move(session), std::move(message_request), |
810 base::Bind(&PresentationServiceImplTest::ExpectSendSessionMessageCallback, | 816 base::Bind( |
811 base::Unretained(this))); | 817 &PresentationServiceImplTest::ExpectSendConnectionMessageCallback, |
| 818 base::Unretained(this))); |
812 | 819 |
813 base::RunLoop run_loop; | 820 base::RunLoop run_loop; |
814 base::Callback<void(bool)> send_message_cb; | 821 base::Callback<void(bool)> send_message_cb; |
815 PresentationSessionMessage* test_message = nullptr; | 822 PresentationConnectionMessage* test_message = nullptr; |
816 EXPECT_CALL(mock_delegate_, SendMessageRawPtr(_, _, _, _, _)) | 823 EXPECT_CALL(mock_delegate_, SendMessageRawPtr(_, _, _, _, _)) |
817 .WillOnce(DoAll(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit), | 824 .WillOnce(DoAll(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit), |
818 SaveArg<3>(&test_message), SaveArg<4>(&send_message_cb))); | 825 SaveArg<3>(&test_message), SaveArg<4>(&send_message_cb))); |
819 run_loop.Run(); | 826 run_loop.Run(); |
820 | 827 |
821 // Make sure |test_message| gets deleted. | 828 // Make sure |test_message| gets deleted. |
822 std::unique_ptr<PresentationSessionMessage> scoped_test_message(test_message); | 829 std::unique_ptr<PresentationConnectionMessage> scoped_test_message( |
| 830 test_message); |
823 EXPECT_TRUE(test_message); | 831 EXPECT_TRUE(test_message); |
824 EXPECT_TRUE(test_message->is_binary()); | 832 EXPECT_TRUE(test_message->is_binary()); |
825 EXPECT_EQ(PresentationMessageType::BLOB, test_message->type); | 833 EXPECT_EQ(PresentationMessageType::BINARY, test_message->type); |
826 EXPECT_TRUE(test_message->message.empty()); | 834 EXPECT_TRUE(test_message->message.empty()); |
827 ASSERT_TRUE(test_message->data); | 835 ASSERT_TRUE(test_message->data); |
828 EXPECT_EQ(data.size(), test_message->data->size()); | 836 EXPECT_EQ(data.size(), test_message->data->size()); |
829 EXPECT_LE(test_message->data->size(), kMaxPresentationSessionMessageSize); | 837 EXPECT_LE(test_message->data->size(), kMaxPresentationConnectionMessageSize); |
830 EXPECT_EQ(0, memcmp(buffer, &(*test_message->data)[0], sizeof(buffer))); | 838 EXPECT_EQ(0, memcmp(buffer, &(*test_message->data)[0], sizeof(buffer))); |
831 send_message_cb.Run(true); | 839 send_message_cb.Run(true); |
832 SaveQuitClosureAndRunLoop(); | 840 SaveQuitClosureAndRunLoop(); |
833 } | 841 } |
834 | 842 |
835 TEST_F(PresentationServiceImplTest, MaxPendingJoinSessionRequests) { | 843 TEST_F(PresentationServiceImplTest, MaxPendingJoinSessionRequests) { |
836 const char* presentation_url = "http://fooUrl%d"; | 844 const char* presentation_url = "http://fooUrl%d"; |
837 const char* presentation_id = "presentationId%d"; | 845 const char* presentation_id = "presentationId%d"; |
838 int num_requests = PresentationServiceImpl::kMaxNumQueuedSessionRequests; | 846 int num_requests = PresentationServiceImpl::kMaxNumQueuedSessionRequests; |
839 int i = 0; | 847 int i = 0; |
(...skipping 18 matching lines...) Expand all Loading... |
858 mock_delegate_.set_screen_availability_listening_supported(false); | 866 mock_delegate_.set_screen_availability_listening_supported(false); |
859 base::RunLoop run_loop; | 867 base::RunLoop run_loop; |
860 EXPECT_CALL(mock_client_, | 868 EXPECT_CALL(mock_client_, |
861 OnScreenAvailabilityNotSupported(presentation_url1_)) | 869 OnScreenAvailabilityNotSupported(presentation_url1_)) |
862 .WillOnce(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit)); | 870 .WillOnce(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit)); |
863 ListenForScreenAvailabilityAndWait(presentation_url1_, false); | 871 ListenForScreenAvailabilityAndWait(presentation_url1_, false); |
864 run_loop.Run(); | 872 run_loop.Run(); |
865 } | 873 } |
866 | 874 |
867 } // namespace content | 875 } // namespace content |
OLD | NEW |