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

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

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

Powered by Google App Engine
This is Rietveld 408576698