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

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

Issue 2622993002: [Presentation API] Move presentation.mojom to content/common/presentation (Closed)
Patch Set: Fix #include and OWNERS 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 27 matching lines...) Expand all
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 PresentationSessionInfo passed by reference. 46 // Matches PresentationSessionInfo passed by reference.
47 MATCHER_P(SessionInfoEquals, expected, "") { 47 MATCHER_P(SessionInfoEquals, expected, "") {
48 blink::mojom::PresentationSessionInfo& expected_value = expected; 48 content::mojom::PresentationSessionInfo& expected_value = expected;
49 return expected_value.Equals(arg); 49 return expected_value.Equals(arg);
50 } 50 }
51 51
52 const char kPresentationId[] = "presentationId"; 52 const char kPresentationId[] = "presentationId";
53 const char kPresentationUrl1[] = "http://foo.com/index.html"; 53 const char kPresentationUrl1[] = "http://foo.com/index.html";
54 const char kPresentationUrl2[] = "http://example.com/index.html"; 54 const char kPresentationUrl2[] = "http://example.com/index.html";
55 const char kPresentationUrl3[] = "http://example.net/index.html"; 55 const char kPresentationUrl3[] = "http://example.net/index.html";
56 56
57 void DoNothing(blink::mojom::PresentationSessionInfoPtr info, 57 void DoNothing(content::mojom::PresentationSessionInfoPtr info,
58 blink::mojom::PresentationErrorPtr error) {} 58 content::mojom::PresentationErrorPtr error) {}
59 59
60 } // namespace 60 } // namespace
61 61
62 class MockPresentationServiceDelegate : public PresentationServiceDelegate { 62 class MockPresentationServiceDelegate : public PresentationServiceDelegate {
63 public: 63 public:
64 MOCK_METHOD3(AddObserver, 64 MOCK_METHOD3(AddObserver,
65 void(int render_process_id, 65 void(int render_process_id,
66 int render_frame_id, 66 int render_frame_id,
67 PresentationServiceDelegate::Observer* observer)); 67 PresentationServiceDelegate::Observer* observer));
68 MOCK_METHOD2(RemoveObserver, 68 MOCK_METHOD2(RemoveObserver,
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
141 141
142 void set_screen_availability_listening_supported(bool value) { 142 void set_screen_availability_listening_supported(bool value) {
143 screen_availability_listening_supported_ = value; 143 screen_availability_listening_supported_ = value;
144 } 144 }
145 145
146 private: 146 private:
147 bool screen_availability_listening_supported_ = true; 147 bool screen_availability_listening_supported_ = true;
148 }; 148 };
149 149
150 class MockPresentationServiceClient 150 class MockPresentationServiceClient
151 : public blink::mojom::PresentationServiceClient { 151 : public content::mojom::PresentationServiceClient {
152 public: 152 public:
153 MOCK_METHOD2(OnScreenAvailabilityUpdated, 153 MOCK_METHOD2(OnScreenAvailabilityUpdated,
154 void(const GURL& url, bool available)); 154 void(const GURL& url, bool available));
155 void OnConnectionStateChanged( 155 void OnConnectionStateChanged(
156 blink::mojom::PresentationSessionInfoPtr connection, 156 content::mojom::PresentationSessionInfoPtr connection,
157 blink::mojom::PresentationConnectionState new_state) override { 157 content::mojom::PresentationConnectionState new_state) override {
158 OnConnectionStateChanged(*connection, new_state); 158 OnConnectionStateChanged(*connection, new_state);
159 } 159 }
160 MOCK_METHOD2(OnConnectionStateChanged, 160 MOCK_METHOD2(OnConnectionStateChanged,
161 void(const blink::mojom::PresentationSessionInfo& connection, 161 void(const content::mojom::PresentationSessionInfo& connection,
162 blink::mojom::PresentationConnectionState new_state)); 162 content::mojom::PresentationConnectionState new_state));
163 163
164 void OnConnectionClosed( 164 void OnConnectionClosed(
165 blink::mojom::PresentationSessionInfoPtr connection, 165 content::mojom::PresentationSessionInfoPtr connection,
166 blink::mojom::PresentationConnectionCloseReason reason, 166 content::mojom::PresentationConnectionCloseReason reason,
167 const std::string& message) override { 167 const std::string& message) override {
168 OnConnectionClosed(*connection, reason, message); 168 OnConnectionClosed(*connection, reason, message);
169 } 169 }
170 MOCK_METHOD3(OnConnectionClosed, 170 MOCK_METHOD3(OnConnectionClosed,
171 void(const blink::mojom::PresentationSessionInfo& connection, 171 void(const content::mojom::PresentationSessionInfo& connection,
172 blink::mojom::PresentationConnectionCloseReason reason, 172 content::mojom::PresentationConnectionCloseReason reason,
173 const std::string& message)); 173 const std::string& message));
174 174
175 MOCK_METHOD1(OnScreenAvailabilityNotSupported, void(const GURL& url)); 175 MOCK_METHOD1(OnScreenAvailabilityNotSupported, void(const GURL& url));
176 176
177 void OnConnectionMessagesReceived( 177 void OnConnectionMessagesReceived(
178 blink::mojom::PresentationSessionInfoPtr session_info, 178 content::mojom::PresentationSessionInfoPtr session_info,
179 std::vector<blink::mojom::ConnectionMessagePtr> messages) override { 179 std::vector<content::mojom::ConnectionMessagePtr> messages) override {
180 messages_received_ = std::move(messages); 180 messages_received_ = std::move(messages);
181 MessagesReceived(); 181 MessagesReceived();
182 } 182 }
183 MOCK_METHOD0(MessagesReceived, void()); 183 MOCK_METHOD0(MessagesReceived, void());
184 184
185 void OnDefaultSessionStarted( 185 void OnDefaultSessionStarted(
186 blink::mojom::PresentationSessionInfoPtr session_info) override { 186 content::mojom::PresentationSessionInfoPtr session_info) override {
187 OnDefaultSessionStarted(*session_info); 187 OnDefaultSessionStarted(*session_info);
188 } 188 }
189 MOCK_METHOD1(OnDefaultSessionStarted, 189 MOCK_METHOD1(
190 void(const blink::mojom::PresentationSessionInfo& session_info)); 190 OnDefaultSessionStarted,
191 void(const content::mojom::PresentationSessionInfo& session_info));
191 192
192 void OnReceiverConnectionAvailable( 193 void OnReceiverConnectionAvailable(
193 blink::mojom::PresentationSessionInfoPtr session_info) override { 194 content::mojom::PresentationSessionInfoPtr session_info) override {
194 OnReceiverConnectionAvailable(*session_info); 195 OnReceiverConnectionAvailable(*session_info);
195 } 196 }
196 MOCK_METHOD1(OnReceiverConnectionAvailable, 197 MOCK_METHOD1(
197 void(const blink::mojom::PresentationSessionInfo& session_info)); 198 OnReceiverConnectionAvailable,
199 void(const content::mojom::PresentationSessionInfo& session_info));
198 200
199 std::vector<blink::mojom::ConnectionMessagePtr> messages_received_; 201 std::vector<content::mojom::ConnectionMessagePtr> messages_received_;
200 }; 202 };
201 203
202 class PresentationServiceImplTest : public RenderViewHostImplTestHarness { 204 class PresentationServiceImplTest : public RenderViewHostImplTestHarness {
203 public: 205 public:
204 PresentationServiceImplTest() 206 PresentationServiceImplTest()
205 : presentation_url1_(GURL(kPresentationUrl1)), 207 : presentation_url1_(GURL(kPresentationUrl1)),
206 presentation_url2_(GURL(kPresentationUrl2)), 208 presentation_url2_(GURL(kPresentationUrl2)),
207 presentation_url3_(GURL(kPresentationUrl3)) {} 209 presentation_url3_(GURL(kPresentationUrl3)) {}
208 210
209 void SetUp() override { 211 void SetUp() override {
210 RenderViewHostImplTestHarness::SetUp(); 212 RenderViewHostImplTestHarness::SetUp();
211 213
212 auto request = mojo::MakeRequest(&service_ptr_); 214 auto request = mojo::MakeRequest(&service_ptr_);
213 EXPECT_CALL(mock_delegate_, AddObserver(_, _, _)).Times(1); 215 EXPECT_CALL(mock_delegate_, AddObserver(_, _, _)).Times(1);
214 TestRenderFrameHost* render_frame_host = contents()->GetMainFrame(); 216 TestRenderFrameHost* render_frame_host = contents()->GetMainFrame();
215 render_frame_host->InitializeRenderFrameIfNeeded(); 217 render_frame_host->InitializeRenderFrameIfNeeded();
216 service_impl_.reset(new PresentationServiceImpl( 218 service_impl_.reset(new PresentationServiceImpl(
217 render_frame_host, contents(), &mock_delegate_)); 219 render_frame_host, contents(), &mock_delegate_));
218 service_impl_->Bind(std::move(request)); 220 service_impl_->Bind(std::move(request));
219 221
220 blink::mojom::PresentationServiceClientPtr client_ptr; 222 content::mojom::PresentationServiceClientPtr client_ptr;
221 client_binding_.reset( 223 client_binding_.reset(
222 new mojo::Binding<blink::mojom::PresentationServiceClient>( 224 new mojo::Binding<content::mojom::PresentationServiceClient>(
223 &mock_client_, mojo::MakeRequest(&client_ptr))); 225 &mock_client_, mojo::MakeRequest(&client_ptr)));
224 service_impl_->SetClient(std::move(client_ptr)); 226 service_impl_->SetClient(std::move(client_ptr));
225 227
226 presentation_urls_.push_back(presentation_url1_); 228 presentation_urls_.push_back(presentation_url1_);
227 presentation_urls_.push_back(presentation_url2_); 229 presentation_urls_.push_back(presentation_url2_);
228 } 230 }
229 231
230 void TearDown() override { 232 void TearDown() override {
231 service_ptr_.reset(); 233 service_ptr_.reset();
232 if (service_impl_.get()) { 234 if (service_impl_.get()) {
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
285 287
286 void ExpectCleanState() { 288 void ExpectCleanState() {
287 EXPECT_TRUE(service_impl_->default_presentation_urls_.empty()); 289 EXPECT_TRUE(service_impl_->default_presentation_urls_.empty());
288 EXPECT_EQ( 290 EXPECT_EQ(
289 service_impl_->screen_availability_listeners_.find(presentation_url1_), 291 service_impl_->screen_availability_listeners_.find(presentation_url1_),
290 service_impl_->screen_availability_listeners_.end()); 292 service_impl_->screen_availability_listeners_.end());
291 EXPECT_FALSE(service_impl_->on_connection_messages_callback_.get()); 293 EXPECT_FALSE(service_impl_->on_connection_messages_callback_.get());
292 } 294 }
293 295
294 void ExpectNewSessionCallbackSuccess( 296 void ExpectNewSessionCallbackSuccess(
295 blink::mojom::PresentationSessionInfoPtr info, 297 content::mojom::PresentationSessionInfoPtr info,
296 blink::mojom::PresentationErrorPtr error) { 298 content::mojom::PresentationErrorPtr error) {
297 EXPECT_FALSE(info.is_null()); 299 EXPECT_FALSE(info.is_null());
298 EXPECT_TRUE(error.is_null()); 300 EXPECT_TRUE(error.is_null());
299 if (!run_loop_quit_closure_.is_null()) 301 if (!run_loop_quit_closure_.is_null())
300 run_loop_quit_closure_.Run(); 302 run_loop_quit_closure_.Run();
301 } 303 }
302 304
303 void ExpectNewSessionCallbackError( 305 void ExpectNewSessionCallbackError(
304 blink::mojom::PresentationSessionInfoPtr info, 306 content::mojom::PresentationSessionInfoPtr info,
305 blink::mojom::PresentationErrorPtr error) { 307 content::mojom::PresentationErrorPtr error) {
306 EXPECT_TRUE(info.is_null()); 308 EXPECT_TRUE(info.is_null());
307 EXPECT_FALSE(error.is_null()); 309 EXPECT_FALSE(error.is_null());
308 if (!run_loop_quit_closure_.is_null()) 310 if (!run_loop_quit_closure_.is_null())
309 run_loop_quit_closure_.Run(); 311 run_loop_quit_closure_.Run();
310 } 312 }
311 313
312 void ExpectConnectionMessages( 314 void ExpectConnectionMessages(
313 const std::vector<blink::mojom::ConnectionMessagePtr>& expected_msgs, 315 const std::vector<content::mojom::ConnectionMessagePtr>& expected_msgs,
314 const std::vector<blink::mojom::ConnectionMessagePtr>& actual_msgs) { 316 const std::vector<content::mojom::ConnectionMessagePtr>& actual_msgs) {
315 EXPECT_EQ(expected_msgs.size(), actual_msgs.size()); 317 EXPECT_EQ(expected_msgs.size(), actual_msgs.size());
316 for (size_t i = 0; i < actual_msgs.size(); ++i) 318 for (size_t i = 0; i < actual_msgs.size(); ++i)
317 EXPECT_TRUE(expected_msgs[i].Equals(actual_msgs[i])); 319 EXPECT_TRUE(expected_msgs[i].Equals(actual_msgs[i]));
318 } 320 }
319 321
320 void ExpectSendConnectionMessageCallback(bool success) { 322 void ExpectSendConnectionMessageCallback(bool success) {
321 EXPECT_TRUE(success); 323 EXPECT_TRUE(success);
322 EXPECT_FALSE(service_impl_->send_message_callback_); 324 EXPECT_FALSE(service_impl_->send_message_callback_);
323 if (!run_loop_quit_closure_.is_null()) 325 if (!run_loop_quit_closure_.is_null())
324 run_loop_quit_closure_.Run(); 326 run_loop_quit_closure_.Run();
325 } 327 }
326 328
327 void RunListenForConnectionMessages(const std::string& text_msg, 329 void RunListenForConnectionMessages(const std::string& text_msg,
328 const std::vector<uint8_t>& binary_data, 330 const std::vector<uint8_t>& binary_data,
329 bool pass_ownership) { 331 bool pass_ownership) {
330 std::vector<blink::mojom::ConnectionMessagePtr> expected_msgs(2); 332 std::vector<content::mojom::ConnectionMessagePtr> expected_msgs(2);
331 expected_msgs[0] = blink::mojom::ConnectionMessage::New(); 333 expected_msgs[0] = content::mojom::ConnectionMessage::New();
332 expected_msgs[0]->type = blink::mojom::PresentationMessageType::TEXT; 334 expected_msgs[0]->type = content::mojom::PresentationMessageType::TEXT;
333 expected_msgs[0]->message = text_msg; 335 expected_msgs[0]->message = text_msg;
334 expected_msgs[1] = blink::mojom::ConnectionMessage::New(); 336 expected_msgs[1] = content::mojom::ConnectionMessage::New();
335 expected_msgs[1]->type = blink::mojom::PresentationMessageType::BINARY; 337 expected_msgs[1]->type = content::mojom::PresentationMessageType::BINARY;
336 expected_msgs[1]->data = binary_data; 338 expected_msgs[1]->data = binary_data;
337 339
338 blink::mojom::PresentationSessionInfoPtr session( 340 content::mojom::PresentationSessionInfoPtr session(
339 blink::mojom::PresentationSessionInfo::New()); 341 content::mojom::PresentationSessionInfo::New());
340 session->url = presentation_url1_; 342 session->url = presentation_url1_;
341 session->id = kPresentationId; 343 session->id = kPresentationId;
342 344
343 PresentationConnectionMessageCallback message_cb; 345 PresentationConnectionMessageCallback message_cb;
344 { 346 {
345 base::RunLoop run_loop; 347 base::RunLoop run_loop;
346 EXPECT_CALL(mock_delegate_, ListenForConnectionMessages(_, _, _, _)) 348 EXPECT_CALL(mock_delegate_, ListenForConnectionMessages(_, _, _, _))
347 .WillOnce(DoAll(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit), 349 .WillOnce(DoAll(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit),
348 SaveArg<3>(&message_cb))); 350 SaveArg<3>(&message_cb)));
349 service_ptr_->ListenForConnectionMessages(std::move(session)); 351 service_ptr_->ListenForConnectionMessages(std::move(session));
350 run_loop.Run(); 352 run_loop.Run();
351 } 353 }
352 354
353 std::vector<std::unique_ptr<PresentationConnectionMessage>> messages; 355 std::vector<std::unique_ptr<PresentationConnectionMessage>> messages;
354 std::unique_ptr<content::PresentationConnectionMessage> message; 356 std::unique_ptr<content::PresentationConnectionMessage> message;
355 message.reset(new content::PresentationConnectionMessage( 357 message.reset(new content::PresentationConnectionMessage(
356 PresentationMessageType::TEXT)); 358 PresentationMessageType::TEXT));
357 message->message = text_msg; 359 message->message = text_msg;
358 messages.push_back(std::move(message)); 360 messages.push_back(std::move(message));
359 message.reset(new content::PresentationConnectionMessage( 361 message.reset(new content::PresentationConnectionMessage(
360 PresentationMessageType::BINARY)); 362 PresentationMessageType::BINARY));
361 message->data.reset(new std::vector<uint8_t>(binary_data)); 363 message->data.reset(new std::vector<uint8_t>(binary_data));
362 messages.push_back(std::move(message)); 364 messages.push_back(std::move(message));
363 365
364 std::vector<blink::mojom::ConnectionMessagePtr> actual_msgs; 366 std::vector<content::mojom::ConnectionMessagePtr> actual_msgs;
365 { 367 {
366 base::RunLoop run_loop; 368 base::RunLoop run_loop;
367 EXPECT_CALL(mock_client_, MessagesReceived()) 369 EXPECT_CALL(mock_client_, MessagesReceived())
368 .WillOnce(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit)); 370 .WillOnce(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit));
369 message_cb.Run(std::move(messages), pass_ownership); 371 message_cb.Run(std::move(messages), pass_ownership);
370 run_loop.Run(); 372 run_loop.Run();
371 } 373 }
372 ExpectConnectionMessages(expected_msgs, mock_client_.messages_received_); 374 ExpectConnectionMessages(expected_msgs, mock_client_.messages_received_);
373 } 375 }
374 376
375 MockPresentationServiceDelegate mock_delegate_; 377 MockPresentationServiceDelegate mock_delegate_;
376 378
377 std::unique_ptr<PresentationServiceImpl> service_impl_; 379 std::unique_ptr<PresentationServiceImpl> service_impl_;
378 mojo::InterfacePtr<blink::mojom::PresentationService> service_ptr_; 380 mojo::InterfacePtr<content::mojom::PresentationService> service_ptr_;
379 381
380 MockPresentationServiceClient mock_client_; 382 MockPresentationServiceClient mock_client_;
381 std::unique_ptr<mojo::Binding<blink::mojom::PresentationServiceClient>> 383 std::unique_ptr<mojo::Binding<content::mojom::PresentationServiceClient>>
382 client_binding_; 384 client_binding_;
383 385
384 base::Closure run_loop_quit_closure_; 386 base::Closure run_loop_quit_closure_;
385 387
386 GURL presentation_url1_; 388 GURL presentation_url1_;
387 GURL presentation_url2_; 389 GURL presentation_url2_;
388 GURL presentation_url3_; 390 GURL presentation_url3_;
389 std::vector<GURL> presentation_urls_; 391 std::vector<GURL> presentation_urls_;
390 }; 392 };
391 393
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
468 470
469 // Sets different DPUs. 471 // Sets different DPUs.
470 std::vector<GURL> more_urls = presentation_urls_; 472 std::vector<GURL> more_urls = presentation_urls_;
471 more_urls.push_back(presentation_url3_); 473 more_urls.push_back(presentation_url3_);
472 474
473 content::PresentationSessionStartedCallback callback; 475 content::PresentationSessionStartedCallback callback;
474 EXPECT_CALL(mock_delegate_, SetDefaultPresentationUrls(_, _, more_urls, _)) 476 EXPECT_CALL(mock_delegate_, SetDefaultPresentationUrls(_, _, more_urls, _))
475 .WillOnce(SaveArg<3>(&callback)); 477 .WillOnce(SaveArg<3>(&callback));
476 service_impl_->SetDefaultPresentationUrls(more_urls); 478 service_impl_->SetDefaultPresentationUrls(more_urls);
477 479
478 blink::mojom::PresentationSessionInfo session_info; 480 content::mojom::PresentationSessionInfo session_info;
479 session_info.url = presentation_url2_; 481 session_info.url = presentation_url2_;
480 session_info.id = kPresentationId; 482 session_info.id = kPresentationId;
481 483
482 base::RunLoop run_loop; 484 base::RunLoop run_loop;
483 EXPECT_CALL(mock_client_, 485 EXPECT_CALL(mock_client_,
484 OnDefaultSessionStarted(SessionInfoEquals(ByRef(session_info)))) 486 OnDefaultSessionStarted(SessionInfoEquals(ByRef(session_info))))
485 .WillOnce(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit)); 487 .WillOnce(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit));
486 EXPECT_CALL(mock_delegate_, ListenForConnectionStateChange(_, _, _, _)); 488 EXPECT_CALL(mock_delegate_, ListenForConnectionStateChange(_, _, _, _));
487 callback.Run( 489 callback.Run(
488 content::PresentationSessionInfo(presentation_url2_, kPresentationId)); 490 content::PresentationSessionInfo(presentation_url2_, kPresentationId));
489 run_loop.Run(); 491 run_loop.Run();
490 } 492 }
491 493
492 TEST_F(PresentationServiceImplTest, 494 TEST_F(PresentationServiceImplTest,
493 ListenForConnectionStateChangeAndChangeState) { 495 ListenForConnectionStateChangeAndChangeState) {
494 content::PresentationSessionInfo connection(presentation_url1_, 496 content::PresentationSessionInfo connection(presentation_url1_,
495 kPresentationId); 497 kPresentationId);
496 content::PresentationConnectionStateChangedCallback state_changed_cb; 498 content::PresentationConnectionStateChangedCallback state_changed_cb;
497 // Trigger state change. It should be propagated back up to |mock_client_|. 499 // Trigger state change. It should be propagated back up to |mock_client_|.
498 blink::mojom::PresentationSessionInfo presentation_connection; 500 content::mojom::PresentationSessionInfo presentation_connection;
499 presentation_connection.url = presentation_url1_; 501 presentation_connection.url = presentation_url1_;
500 presentation_connection.id = kPresentationId; 502 presentation_connection.id = kPresentationId;
501 503
502 EXPECT_CALL(mock_delegate_, ListenForConnectionStateChange(_, _, _, _)) 504 EXPECT_CALL(mock_delegate_, ListenForConnectionStateChange(_, _, _, _))
503 .WillOnce(SaveArg<3>(&state_changed_cb)); 505 .WillOnce(SaveArg<3>(&state_changed_cb));
504 EXPECT_CALL(mock_client_, 506 EXPECT_CALL(mock_client_,
505 OnConnectionStateChanged( 507 OnConnectionStateChanged(
506 SessionInfoEquals(ByRef(presentation_connection)), 508 SessionInfoEquals(ByRef(presentation_connection)),
507 blink::mojom::PresentationConnectionState::CONNECTED)); 509 content::mojom::PresentationConnectionState::CONNECTED));
508 service_impl_->ListenForConnectionStateChangeAndChangeState(connection); 510 service_impl_->ListenForConnectionStateChangeAndChangeState(connection);
509 511
510 { 512 {
511 base::RunLoop run_loop; 513 base::RunLoop run_loop;
512 EXPECT_CALL(mock_client_, 514 EXPECT_CALL(mock_client_,
513 OnConnectionStateChanged( 515 OnConnectionStateChanged(
514 SessionInfoEquals(ByRef(presentation_connection)), 516 SessionInfoEquals(ByRef(presentation_connection)),
515 blink::mojom::PresentationConnectionState::TERMINATED)) 517 content::mojom::PresentationConnectionState::TERMINATED))
516 .WillOnce(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit)); 518 .WillOnce(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit));
517 state_changed_cb.Run(PresentationConnectionStateChangeInfo( 519 state_changed_cb.Run(PresentationConnectionStateChangeInfo(
518 PRESENTATION_CONNECTION_STATE_TERMINATED)); 520 PRESENTATION_CONNECTION_STATE_TERMINATED));
519 run_loop.Run(); 521 run_loop.Run();
520 } 522 }
521 } 523 }
522 524
523 TEST_F(PresentationServiceImplTest, ListenForConnectionClose) { 525 TEST_F(PresentationServiceImplTest, ListenForConnectionClose) {
524 content::PresentationSessionInfo connection(presentation_url1_, 526 content::PresentationSessionInfo connection(presentation_url1_,
525 kPresentationId); 527 kPresentationId);
526 content::PresentationConnectionStateChangedCallback state_changed_cb; 528 content::PresentationConnectionStateChangedCallback state_changed_cb;
527 EXPECT_CALL(mock_delegate_, ListenForConnectionStateChange(_, _, _, _)) 529 EXPECT_CALL(mock_delegate_, ListenForConnectionStateChange(_, _, _, _))
528 .WillOnce(SaveArg<3>(&state_changed_cb)); 530 .WillOnce(SaveArg<3>(&state_changed_cb));
529 service_impl_->ListenForConnectionStateChangeAndChangeState(connection); 531 service_impl_->ListenForConnectionStateChangeAndChangeState(connection);
530 532
531 // Trigger connection close. It should be propagated back up to 533 // Trigger connection close. It should be propagated back up to
532 // |mock_client_|. 534 // |mock_client_|.
533 blink::mojom::PresentationSessionInfo presentation_connection; 535 content::mojom::PresentationSessionInfo presentation_connection;
534 presentation_connection.url = presentation_url1_; 536 presentation_connection.url = presentation_url1_;
535 presentation_connection.id = kPresentationId; 537 presentation_connection.id = kPresentationId;
536 { 538 {
537 base::RunLoop run_loop; 539 base::RunLoop run_loop;
538 PresentationConnectionStateChangeInfo closed_info( 540 PresentationConnectionStateChangeInfo closed_info(
539 PRESENTATION_CONNECTION_STATE_CLOSED); 541 PRESENTATION_CONNECTION_STATE_CLOSED);
540 closed_info.close_reason = PRESENTATION_CONNECTION_CLOSE_REASON_WENT_AWAY; 542 closed_info.close_reason = PRESENTATION_CONNECTION_CLOSE_REASON_WENT_AWAY;
541 closed_info.message = "Foo"; 543 closed_info.message = "Foo";
542 544
543 EXPECT_CALL( 545 EXPECT_CALL(
544 mock_client_, 546 mock_client_,
545 OnConnectionClosed( 547 OnConnectionClosed(
546 SessionInfoEquals(ByRef(presentation_connection)), 548 SessionInfoEquals(ByRef(presentation_connection)),
547 blink::mojom::PresentationConnectionCloseReason::WENT_AWAY, "Foo")) 549 content::mojom::PresentationConnectionCloseReason::WENT_AWAY,
550 "Foo"))
548 .WillOnce(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit)); 551 .WillOnce(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit));
549 state_changed_cb.Run(closed_info); 552 state_changed_cb.Run(closed_info);
550 run_loop.Run(); 553 run_loop.Run();
551 } 554 }
552 } 555 }
553 556
554 TEST_F(PresentationServiceImplTest, SetSameDefaultPresentationUrls) { 557 TEST_F(PresentationServiceImplTest, SetSameDefaultPresentationUrls) {
555 EXPECT_CALL(mock_delegate_, 558 EXPECT_CALL(mock_delegate_,
556 SetDefaultPresentationUrls(_, _, presentation_urls_, _)) 559 SetDefaultPresentationUrls(_, _, presentation_urls_, _))
557 .Times(1); 560 .Times(1);
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
676 service_ptr_->StartSession( 679 service_ptr_->StartSession(
677 presentation_urls_, 680 presentation_urls_,
678 base::Bind(&PresentationServiceImplTest::ExpectNewSessionCallbackError, 681 base::Bind(&PresentationServiceImplTest::ExpectNewSessionCallbackError,
679 base::Unretained(this))); 682 base::Unretained(this)));
680 SaveQuitClosureAndRunLoop(); 683 SaveQuitClosureAndRunLoop();
681 } 684 }
682 685
683 TEST_F(PresentationServiceImplTest, SendStringMessage) { 686 TEST_F(PresentationServiceImplTest, SendStringMessage) {
684 std::string message("Test presentation session message"); 687 std::string message("Test presentation session message");
685 688
686 blink::mojom::PresentationSessionInfoPtr session( 689 content::mojom::PresentationSessionInfoPtr session(
687 blink::mojom::PresentationSessionInfo::New()); 690 content::mojom::PresentationSessionInfo::New());
688 session->url = presentation_url1_; 691 session->url = presentation_url1_;
689 session->id = kPresentationId; 692 session->id = kPresentationId;
690 blink::mojom::ConnectionMessagePtr message_request( 693 content::mojom::ConnectionMessagePtr message_request(
691 blink::mojom::ConnectionMessage::New()); 694 content::mojom::ConnectionMessage::New());
692 message_request->type = blink::mojom::PresentationMessageType::TEXT; 695 message_request->type = content::mojom::PresentationMessageType::TEXT;
693 message_request->message = message; 696 message_request->message = message;
694 service_ptr_->SendConnectionMessage( 697 service_ptr_->SendConnectionMessage(
695 std::move(session), std::move(message_request), 698 std::move(session), std::move(message_request),
696 base::Bind( 699 base::Bind(
697 &PresentationServiceImplTest::ExpectSendConnectionMessageCallback, 700 &PresentationServiceImplTest::ExpectSendConnectionMessageCallback,
698 base::Unretained(this))); 701 base::Unretained(this)));
699 702
700 base::RunLoop run_loop; 703 base::RunLoop run_loop;
701 base::Callback<void(bool)> send_message_cb; 704 base::Callback<void(bool)> send_message_cb;
702 PresentationConnectionMessage* test_message = nullptr; 705 PresentationConnectionMessage* test_message = nullptr;
(...skipping 14 matching lines...) Expand all
717 send_message_cb.Run(true); 720 send_message_cb.Run(true);
718 SaveQuitClosureAndRunLoop(); 721 SaveQuitClosureAndRunLoop();
719 } 722 }
720 723
721 TEST_F(PresentationServiceImplTest, SendArrayBuffer) { 724 TEST_F(PresentationServiceImplTest, SendArrayBuffer) {
722 // Test Array buffer data. 725 // Test Array buffer data.
723 const uint8_t buffer[] = {0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48}; 726 const uint8_t buffer[] = {0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48};
724 std::vector<uint8_t> data; 727 std::vector<uint8_t> data;
725 data.assign(buffer, buffer + sizeof(buffer)); 728 data.assign(buffer, buffer + sizeof(buffer));
726 729
727 blink::mojom::PresentationSessionInfoPtr session( 730 content::mojom::PresentationSessionInfoPtr session(
728 blink::mojom::PresentationSessionInfo::New()); 731 content::mojom::PresentationSessionInfo::New());
729 session->url = presentation_url1_; 732 session->url = presentation_url1_;
730 session->id = kPresentationId; 733 session->id = kPresentationId;
731 blink::mojom::ConnectionMessagePtr message_request( 734 content::mojom::ConnectionMessagePtr message_request(
732 blink::mojom::ConnectionMessage::New()); 735 content::mojom::ConnectionMessage::New());
733 message_request->type = blink::mojom::PresentationMessageType::BINARY; 736 message_request->type = content::mojom::PresentationMessageType::BINARY;
734 message_request->data = data; 737 message_request->data = data;
735 service_ptr_->SendConnectionMessage( 738 service_ptr_->SendConnectionMessage(
736 std::move(session), std::move(message_request), 739 std::move(session), std::move(message_request),
737 base::Bind( 740 base::Bind(
738 &PresentationServiceImplTest::ExpectSendConnectionMessageCallback, 741 &PresentationServiceImplTest::ExpectSendConnectionMessageCallback,
739 base::Unretained(this))); 742 base::Unretained(this)));
740 743
741 base::RunLoop run_loop; 744 base::RunLoop run_loop;
742 base::Callback<void(bool)> send_message_cb; 745 base::Callback<void(bool)> send_message_cb;
743 PresentationConnectionMessage* test_message = nullptr; 746 PresentationConnectionMessage* test_message = nullptr;
(...skipping 19 matching lines...) Expand all
763 766
764 TEST_F(PresentationServiceImplTest, SendArrayBufferWithExceedingLimit) { 767 TEST_F(PresentationServiceImplTest, SendArrayBufferWithExceedingLimit) {
765 // Create buffer with size exceeding the limit. 768 // Create buffer with size exceeding the limit.
766 // Use same size as in content::kMaxPresentationConnectionMessageSize. 769 // Use same size as in content::kMaxPresentationConnectionMessageSize.
767 const size_t kMaxBufferSizeInBytes = 64 * 1024; // 64 KB. 770 const size_t kMaxBufferSizeInBytes = 64 * 1024; // 64 KB.
768 uint8_t buffer[kMaxBufferSizeInBytes + 1]; 771 uint8_t buffer[kMaxBufferSizeInBytes + 1];
769 memset(buffer, 0, kMaxBufferSizeInBytes+1); 772 memset(buffer, 0, kMaxBufferSizeInBytes+1);
770 std::vector<uint8_t> data; 773 std::vector<uint8_t> data;
771 data.assign(buffer, buffer + sizeof(buffer)); 774 data.assign(buffer, buffer + sizeof(buffer));
772 775
773 blink::mojom::PresentationSessionInfoPtr session( 776 content::mojom::PresentationSessionInfoPtr session(
774 blink::mojom::PresentationSessionInfo::New()); 777 content::mojom::PresentationSessionInfo::New());
775 session->url = presentation_url1_; 778 session->url = presentation_url1_;
776 session->id = kPresentationId; 779 session->id = kPresentationId;
777 blink::mojom::ConnectionMessagePtr message_request( 780 content::mojom::ConnectionMessagePtr message_request(
778 blink::mojom::ConnectionMessage::New()); 781 content::mojom::ConnectionMessage::New());
779 message_request->type = blink::mojom::PresentationMessageType::BINARY; 782 message_request->type = content::mojom::PresentationMessageType::BINARY;
780 message_request->data = data; 783 message_request->data = data;
781 service_ptr_->SendConnectionMessage( 784 service_ptr_->SendConnectionMessage(
782 std::move(session), std::move(message_request), 785 std::move(session), std::move(message_request),
783 base::Bind( 786 base::Bind(
784 &PresentationServiceImplTest::ExpectSendConnectionMessageCallback, 787 &PresentationServiceImplTest::ExpectSendConnectionMessageCallback,
785 base::Unretained(this))); 788 base::Unretained(this)));
786 789
787 base::RunLoop run_loop; 790 base::RunLoop run_loop;
788 base::Callback<void(bool)> send_message_cb; 791 base::Callback<void(bool)> send_message_cb;
789 PresentationConnectionMessage* test_message = nullptr; 792 PresentationConnectionMessage* test_message = nullptr;
790 EXPECT_CALL(mock_delegate_, SendMessageRawPtr(_, _, _, _, _)) 793 EXPECT_CALL(mock_delegate_, SendMessageRawPtr(_, _, _, _, _))
791 .WillOnce(DoAll(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit), 794 .WillOnce(DoAll(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit),
792 SaveArg<3>(&test_message), SaveArg<4>(&send_message_cb))); 795 SaveArg<3>(&test_message), SaveArg<4>(&send_message_cb)));
793 run_loop.Run(); 796 run_loop.Run();
794 797
795 EXPECT_FALSE(test_message); 798 EXPECT_FALSE(test_message);
796 send_message_cb.Run(true); 799 send_message_cb.Run(true);
797 SaveQuitClosureAndRunLoop(); 800 SaveQuitClosureAndRunLoop();
798 } 801 }
799 802
800 TEST_F(PresentationServiceImplTest, SendBlobData) { 803 TEST_F(PresentationServiceImplTest, SendBlobData) {
801 const uint8_t buffer[] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07}; 804 const uint8_t buffer[] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07};
802 std::vector<uint8_t> data; 805 std::vector<uint8_t> data;
803 data.assign(buffer, buffer + sizeof(buffer)); 806 data.assign(buffer, buffer + sizeof(buffer));
804 807
805 blink::mojom::PresentationSessionInfoPtr session( 808 content::mojom::PresentationSessionInfoPtr session(
806 blink::mojom::PresentationSessionInfo::New()); 809 content::mojom::PresentationSessionInfo::New());
807 session->url = presentation_url1_; 810 session->url = presentation_url1_;
808 session->id = kPresentationId; 811 session->id = kPresentationId;
809 blink::mojom::ConnectionMessagePtr message_request( 812 content::mojom::ConnectionMessagePtr message_request(
810 blink::mojom::ConnectionMessage::New()); 813 content::mojom::ConnectionMessage::New());
811 message_request->type = blink::mojom::PresentationMessageType::BINARY; 814 message_request->type = content::mojom::PresentationMessageType::BINARY;
812 message_request->data = data; 815 message_request->data = data;
813 service_ptr_->SendConnectionMessage( 816 service_ptr_->SendConnectionMessage(
814 std::move(session), std::move(message_request), 817 std::move(session), std::move(message_request),
815 base::Bind( 818 base::Bind(
816 &PresentationServiceImplTest::ExpectSendConnectionMessageCallback, 819 &PresentationServiceImplTest::ExpectSendConnectionMessageCallback,
817 base::Unretained(this))); 820 base::Unretained(this)));
818 821
819 base::RunLoop run_loop; 822 base::RunLoop run_loop;
820 base::Callback<void(bool)> send_message_cb; 823 base::Callback<void(bool)> send_message_cb;
821 PresentationConnectionMessage* test_message = nullptr; 824 PresentationConnectionMessage* test_message = nullptr;
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
865 mock_delegate_.set_screen_availability_listening_supported(false); 868 mock_delegate_.set_screen_availability_listening_supported(false);
866 base::RunLoop run_loop; 869 base::RunLoop run_loop;
867 EXPECT_CALL(mock_client_, 870 EXPECT_CALL(mock_client_,
868 OnScreenAvailabilityNotSupported(presentation_url1_)) 871 OnScreenAvailabilityNotSupported(presentation_url1_))
869 .WillOnce(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit)); 872 .WillOnce(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit));
870 ListenForScreenAvailabilityAndWait(presentation_url1_, false); 873 ListenForScreenAvailabilityAndWait(presentation_url1_, false);
871 run_loop.Run(); 874 run_loop.Run();
872 } 875 }
873 876
874 } // namespace content 877 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698