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

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

Issue 2386633003: [Media Router] Convert MediaRouter to use GURL for presentation URLs. (Closed)
Patch Set: Respond to dcheng@ comment Created 4 years, 2 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 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
46 46
47 // Matches PresentationSessionInfo passed by reference. 47 // Matches PresentationSessionInfo passed by reference.
48 MATCHER_P(SessionInfoEquals, expected, "") { 48 MATCHER_P(SessionInfoEquals, expected, "") {
49 blink::mojom::PresentationSessionInfo& expected_value = expected; 49 blink::mojom::PresentationSessionInfo& expected_value = expected;
50 return expected_value.Equals(arg); 50 return expected_value.Equals(arg);
51 } 51 }
52 52
53 const char kPresentationId[] = "presentationId"; 53 const char kPresentationId[] = "presentationId";
54 const char kPresentationUrl1[] = "http://foo.com/index.html"; 54 const char kPresentationUrl1[] = "http://foo.com/index.html";
55 const char kPresentationUrl2[] = "http://example.com/index.html"; 55 const char kPresentationUrl2[] = "http://example.com/index.html";
56 const char kPresentationUrl3[] = "http://example.net/index.html";
56 57
57 void DoNothing(blink::mojom::PresentationSessionInfoPtr info, 58 void DoNothing(blink::mojom::PresentationSessionInfoPtr info,
58 blink::mojom::PresentationErrorPtr error) {} 59 blink::mojom::PresentationErrorPtr error) {}
59 60
60 // TODO(crbug.com/632623): Convert downstream APIs to GURL and remove
61 // conversions.
62 std::vector<GURL> ToGURLs(const std::vector<std::string>& urls) {
63 std::vector<GURL> gurls(urls.size());
64 std::transform(urls.begin(), urls.end(), gurls.begin(),
65 [](const std::string& url) { return GURL(url); });
66 return gurls;
67 }
68
69 } // namespace 61 } // namespace
70 62
71 class MockPresentationServiceDelegate : public PresentationServiceDelegate { 63 class MockPresentationServiceDelegate : public PresentationServiceDelegate {
72 public: 64 public:
73 MOCK_METHOD3(AddObserver, 65 MOCK_METHOD3(AddObserver,
74 void(int render_process_id, 66 void(int render_process_id,
75 int render_frame_id, 67 int render_frame_id,
76 PresentationServiceDelegate::Observer* observer)); 68 PresentationServiceDelegate::Observer* observer));
77 MOCK_METHOD2(RemoveObserver, 69 MOCK_METHOD2(RemoveObserver,
78 void(int render_process_id, int render_frame_id)); 70 void(int render_process_id, int render_frame_id));
(...skipping 12 matching lines...) Expand all
91 MOCK_METHOD3(RemoveScreenAvailabilityListener, 83 MOCK_METHOD3(RemoveScreenAvailabilityListener,
92 void(int render_process_id, 84 void(int render_process_id,
93 int routing_id, 85 int routing_id,
94 PresentationScreenAvailabilityListener* listener)); 86 PresentationScreenAvailabilityListener* listener));
95 MOCK_METHOD2(Reset, 87 MOCK_METHOD2(Reset,
96 void(int render_process_id, 88 void(int render_process_id,
97 int routing_id)); 89 int routing_id));
98 MOCK_METHOD4(SetDefaultPresentationUrls, 90 MOCK_METHOD4(SetDefaultPresentationUrls,
99 void(int render_process_id, 91 void(int render_process_id,
100 int routing_id, 92 int routing_id,
101 const std::vector<std::string>& default_presentation_urls, 93 const std::vector<GURL>& default_presentation_urls,
102 const PresentationSessionStartedCallback& callback)); 94 const PresentationSessionStartedCallback& callback));
103 MOCK_METHOD5(StartSession, 95 MOCK_METHOD5(StartSession,
104 void(int render_process_id, 96 void(int render_process_id,
105 int render_frame_id, 97 int render_frame_id,
106 const std::vector<std::string>& presentation_urls, 98 const std::vector<GURL>& presentation_urls,
107 const PresentationSessionStartedCallback& success_cb, 99 const PresentationSessionStartedCallback& success_cb,
108 const PresentationSessionErrorCallback& error_cb)); 100 const PresentationSessionErrorCallback& error_cb));
109 MOCK_METHOD6(JoinSession, 101 MOCK_METHOD6(JoinSession,
110 void(int render_process_id, 102 void(int render_process_id,
111 int render_frame_id, 103 int render_frame_id,
112 const std::vector<std::string>& presentation_urls, 104 const std::vector<GURL>& presentation_urls,
113 const std::string& presentation_id, 105 const std::string& presentation_id,
114 const PresentationSessionStartedCallback& success_cb, 106 const PresentationSessionStartedCallback& success_cb,
115 const PresentationSessionErrorCallback& error_cb)); 107 const PresentationSessionErrorCallback& error_cb));
116 MOCK_METHOD3(CloseConnection, 108 MOCK_METHOD3(CloseConnection,
117 void(int render_process_id, 109 void(int render_process_id,
118 int render_frame_id, 110 int render_frame_id,
119 const std::string& presentation_id)); 111 const std::string& presentation_id));
120 MOCK_METHOD3(Terminate, 112 MOCK_METHOD3(Terminate,
121 void(int render_process_id, 113 void(int render_process_id,
122 int render_frame_id, 114 int render_frame_id,
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
202 OnReceiverConnectionAvailable(*session_info); 194 OnReceiverConnectionAvailable(*session_info);
203 } 195 }
204 MOCK_METHOD1(OnReceiverConnectionAvailable, 196 MOCK_METHOD1(OnReceiverConnectionAvailable,
205 void(const blink::mojom::PresentationSessionInfo& session_info)); 197 void(const blink::mojom::PresentationSessionInfo& session_info));
206 198
207 std::vector<blink::mojom::SessionMessagePtr> messages_received_; 199 std::vector<blink::mojom::SessionMessagePtr> messages_received_;
208 }; 200 };
209 201
210 class PresentationServiceImplTest : public RenderViewHostImplTestHarness { 202 class PresentationServiceImplTest : public RenderViewHostImplTestHarness {
211 public: 203 public:
212 PresentationServiceImplTest() {} 204 PresentationServiceImplTest()
205 : presentation_url1_(GURL(kPresentationUrl1)),
206 presentation_url2_(GURL(kPresentationUrl2)),
207 presentation_url3_(GURL(kPresentationUrl3)) {}
213 208
214 void SetUp() override { 209 void SetUp() override {
215 RenderViewHostImplTestHarness::SetUp(); 210 RenderViewHostImplTestHarness::SetUp();
216 211
217 auto request = mojo::GetProxy(&service_ptr_); 212 auto request = mojo::GetProxy(&service_ptr_);
218 EXPECT_CALL(mock_delegate_, AddObserver(_, _, _)).Times(1); 213 EXPECT_CALL(mock_delegate_, AddObserver(_, _, _)).Times(1);
219 TestRenderFrameHost* render_frame_host = contents()->GetMainFrame(); 214 TestRenderFrameHost* render_frame_host = contents()->GetMainFrame();
220 render_frame_host->InitializeRenderFrameIfNeeded(); 215 render_frame_host->InitializeRenderFrameIfNeeded();
221 service_impl_.reset(new PresentationServiceImpl( 216 service_impl_.reset(new PresentationServiceImpl(
222 render_frame_host, contents(), &mock_delegate_)); 217 render_frame_host, contents(), &mock_delegate_));
223 service_impl_->Bind(std::move(request)); 218 service_impl_->Bind(std::move(request));
224 219
225 blink::mojom::PresentationServiceClientPtr client_ptr; 220 blink::mojom::PresentationServiceClientPtr client_ptr;
226 client_binding_.reset( 221 client_binding_.reset(
227 new mojo::Binding<blink::mojom::PresentationServiceClient>( 222 new mojo::Binding<blink::mojom::PresentationServiceClient>(
228 &mock_client_, mojo::GetProxy(&client_ptr))); 223 &mock_client_, mojo::GetProxy(&client_ptr)));
229 service_impl_->SetClient(std::move(client_ptr)); 224 service_impl_->SetClient(std::move(client_ptr));
225
226 presentation_urls_.push_back(presentation_url1_);
227 presentation_urls_.push_back(presentation_url2_);
230 } 228 }
231 229
232 void TearDown() override { 230 void TearDown() override {
233 service_ptr_.reset(); 231 service_ptr_.reset();
234 if (service_impl_.get()) { 232 if (service_impl_.get()) {
235 EXPECT_CALL(mock_delegate_, RemoveObserver(_, _)).Times(1); 233 EXPECT_CALL(mock_delegate_, RemoveObserver(_, _)).Times(1);
236 service_impl_.reset(); 234 service_impl_.reset();
237 } 235 }
238 RenderViewHostImplTestHarness::TearDown(); 236 RenderViewHostImplTestHarness::TearDown();
239 } 237 }
240 238
241 void ListenForScreenAvailabilityAndWait(const std::string& url, 239 void ListenForScreenAvailabilityAndWait(const GURL& url,
242 bool delegate_success) { 240 bool delegate_success) {
243 base::RunLoop run_loop; 241 base::RunLoop run_loop;
244 // This will call to |service_impl_| via mojo. Process the message 242 // This will call to |service_impl_| via mojo. Process the message
245 // using RunLoop. 243 // using RunLoop.
246 // The callback shouldn't be invoked since there is no availability 244 // The callback shouldn't be invoked since there is no availability
247 // result yet. 245 // result yet.
248 EXPECT_CALL(mock_delegate_, AddScreenAvailabilityListener()) 246 EXPECT_CALL(mock_delegate_, AddScreenAvailabilityListener())
249 .WillOnce(DoAll( 247 .WillOnce(DoAll(
250 InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit), 248 InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit),
251 Return(delegate_success))); 249 Return(delegate_success)));
252 service_ptr_->ListenForScreenAvailability(GURL(url)); 250 service_ptr_->ListenForScreenAvailability(url);
253 run_loop.Run(); 251 run_loop.Run();
254 252
255 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&mock_delegate_)); 253 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&mock_delegate_));
256 } 254 }
257 255
258 void RunLoopFor(base::TimeDelta duration) { 256 void RunLoopFor(base::TimeDelta duration) {
259 base::RunLoop run_loop; 257 base::RunLoop run_loop;
260 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( 258 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
261 FROM_HERE, run_loop.QuitClosure(), duration); 259 FROM_HERE, run_loop.QuitClosure(), duration);
262 run_loop.Run(); 260 run_loop.Run();
263 } 261 }
264 262
265 void SaveQuitClosureAndRunLoop() { 263 void SaveQuitClosureAndRunLoop() {
266 base::RunLoop run_loop; 264 base::RunLoop run_loop;
267 run_loop_quit_closure_ = run_loop.QuitClosure(); 265 run_loop_quit_closure_ = run_loop.QuitClosure();
268 run_loop.Run(); 266 run_loop.Run();
269 run_loop_quit_closure_.Reset(); 267 run_loop_quit_closure_.Reset();
270 } 268 }
271 269
272 void SimulateScreenAvailabilityChangeAndWait( 270 void SimulateScreenAvailabilityChangeAndWait(const GURL& url,
273 const std::string& url, bool available) { 271 bool available) {
274 auto listener_it = service_impl_->screen_availability_listeners_.find(url); 272 auto listener_it = service_impl_->screen_availability_listeners_.find(url);
275 ASSERT_TRUE(listener_it->second); 273 ASSERT_TRUE(listener_it->second);
276 274
277 base::RunLoop run_loop; 275 base::RunLoop run_loop;
278 EXPECT_CALL(mock_client_, OnScreenAvailabilityUpdated(GURL(url), available)) 276 EXPECT_CALL(mock_client_, OnScreenAvailabilityUpdated(url, available))
279 .WillOnce(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit)); 277 .WillOnce(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit));
280 listener_it->second->OnScreenAvailabilityChanged(available); 278 listener_it->second->OnScreenAvailabilityChanged(available);
281 run_loop.Run(); 279 run_loop.Run();
282 } 280 }
283 281
284 void ExpectReset() { 282 void ExpectReset() {
285 EXPECT_CALL(mock_delegate_, Reset(_, _)).Times(1); 283 EXPECT_CALL(mock_delegate_, Reset(_, _)).Times(1);
286 } 284 }
287 285
288 void ExpectCleanState() { 286 void ExpectCleanState() {
289 EXPECT_TRUE(service_impl_->default_presentation_urls_.empty()); 287 EXPECT_TRUE(service_impl_->default_presentation_urls_.empty());
290 EXPECT_EQ( 288 EXPECT_EQ(
291 service_impl_->screen_availability_listeners_.find(kPresentationUrl1), 289 service_impl_->screen_availability_listeners_.find(presentation_url1_),
292 service_impl_->screen_availability_listeners_.end()); 290 service_impl_->screen_availability_listeners_.end());
293 EXPECT_FALSE(service_impl_->on_session_messages_callback_.get()); 291 EXPECT_FALSE(service_impl_->on_session_messages_callback_.get());
294 } 292 }
295 293
296 void ExpectNewSessionCallbackSuccess( 294 void ExpectNewSessionCallbackSuccess(
297 blink::mojom::PresentationSessionInfoPtr info, 295 blink::mojom::PresentationSessionInfoPtr info,
298 blink::mojom::PresentationErrorPtr error) { 296 blink::mojom::PresentationErrorPtr error) {
299 EXPECT_FALSE(info.is_null()); 297 EXPECT_FALSE(info.is_null());
300 EXPECT_TRUE(error.is_null()); 298 EXPECT_TRUE(error.is_null());
301 if (!run_loop_quit_closure_.is_null()) 299 if (!run_loop_quit_closure_.is_null())
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
333 expected_msgs[0] = blink::mojom::SessionMessage::New(); 331 expected_msgs[0] = blink::mojom::SessionMessage::New();
334 expected_msgs[0]->type = blink::mojom::PresentationMessageType::TEXT; 332 expected_msgs[0]->type = blink::mojom::PresentationMessageType::TEXT;
335 expected_msgs[0]->message = text_msg; 333 expected_msgs[0]->message = text_msg;
336 expected_msgs[1] = blink::mojom::SessionMessage::New(); 334 expected_msgs[1] = blink::mojom::SessionMessage::New();
337 expected_msgs[1]->type = 335 expected_msgs[1]->type =
338 blink::mojom::PresentationMessageType::ARRAY_BUFFER; 336 blink::mojom::PresentationMessageType::ARRAY_BUFFER;
339 expected_msgs[1]->data = binary_data; 337 expected_msgs[1]->data = binary_data;
340 338
341 blink::mojom::PresentationSessionInfoPtr session( 339 blink::mojom::PresentationSessionInfoPtr session(
342 blink::mojom::PresentationSessionInfo::New()); 340 blink::mojom::PresentationSessionInfo::New());
343 session->url = GURL(kPresentationUrl1); 341 session->url = presentation_url1_;
344 session->id = kPresentationId; 342 session->id = kPresentationId;
345 343
346 PresentationSessionMessageCallback message_cb; 344 PresentationSessionMessageCallback message_cb;
347 { 345 {
348 base::RunLoop run_loop; 346 base::RunLoop run_loop;
349 EXPECT_CALL(mock_delegate_, ListenForSessionMessages(_, _, _, _)) 347 EXPECT_CALL(mock_delegate_, ListenForSessionMessages(_, _, _, _))
350 .WillOnce(DoAll(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit), 348 .WillOnce(DoAll(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit),
351 SaveArg<3>(&message_cb))); 349 SaveArg<3>(&message_cb)));
352 service_ptr_->ListenForSessionMessages(std::move(session)); 350 service_ptr_->ListenForSessionMessages(std::move(session));
353 run_loop.Run(); 351 run_loop.Run();
(...skipping 24 matching lines...) Expand all
378 MockPresentationServiceDelegate mock_delegate_; 376 MockPresentationServiceDelegate mock_delegate_;
379 377
380 std::unique_ptr<PresentationServiceImpl> service_impl_; 378 std::unique_ptr<PresentationServiceImpl> service_impl_;
381 mojo::InterfacePtr<blink::mojom::PresentationService> service_ptr_; 379 mojo::InterfacePtr<blink::mojom::PresentationService> service_ptr_;
382 380
383 MockPresentationServiceClient mock_client_; 381 MockPresentationServiceClient mock_client_;
384 std::unique_ptr<mojo::Binding<blink::mojom::PresentationServiceClient>> 382 std::unique_ptr<mojo::Binding<blink::mojom::PresentationServiceClient>>
385 client_binding_; 383 client_binding_;
386 384
387 base::Closure run_loop_quit_closure_; 385 base::Closure run_loop_quit_closure_;
386
387 GURL presentation_url1_;
388 GURL presentation_url2_;
389 GURL presentation_url3_;
390 std::vector<GURL> presentation_urls_;
388 }; 391 };
389 392
390 TEST_F(PresentationServiceImplTest, ListenForScreenAvailability) { 393 TEST_F(PresentationServiceImplTest, ListenForScreenAvailability) {
391 ListenForScreenAvailabilityAndWait(kPresentationUrl1, true); 394 ListenForScreenAvailabilityAndWait(presentation_url1_, true);
392 395
393 SimulateScreenAvailabilityChangeAndWait(kPresentationUrl1, true); 396 SimulateScreenAvailabilityChangeAndWait(presentation_url1_, true);
394 SimulateScreenAvailabilityChangeAndWait(kPresentationUrl1, false); 397 SimulateScreenAvailabilityChangeAndWait(presentation_url1_, false);
395 SimulateScreenAvailabilityChangeAndWait(kPresentationUrl1, true); 398 SimulateScreenAvailabilityChangeAndWait(presentation_url1_, true);
396 } 399 }
397 400
398 TEST_F(PresentationServiceImplTest, Reset) { 401 TEST_F(PresentationServiceImplTest, Reset) {
399 ListenForScreenAvailabilityAndWait(kPresentationUrl1, true); 402 ListenForScreenAvailabilityAndWait(presentation_url1_, true);
400 403
401 ExpectReset(); 404 ExpectReset();
402 service_impl_->Reset(); 405 service_impl_->Reset();
403 ExpectCleanState(); 406 ExpectCleanState();
404 } 407 }
405 408
406 TEST_F(PresentationServiceImplTest, DidNavigateThisFrame) { 409 TEST_F(PresentationServiceImplTest, DidNavigateThisFrame) {
407 ListenForScreenAvailabilityAndWait(kPresentationUrl1, true); 410 ListenForScreenAvailabilityAndWait(presentation_url1_, true);
408 411
409 ExpectReset(); 412 ExpectReset();
410 service_impl_->DidNavigateAnyFrame( 413 service_impl_->DidNavigateAnyFrame(
411 contents()->GetMainFrame(), 414 contents()->GetMainFrame(),
412 content::LoadCommittedDetails(), 415 content::LoadCommittedDetails(),
413 content::FrameNavigateParams()); 416 content::FrameNavigateParams());
414 ExpectCleanState(); 417 ExpectCleanState();
415 } 418 }
416 419
417 TEST_F(PresentationServiceImplTest, DidNavigateOtherFrame) { 420 TEST_F(PresentationServiceImplTest, DidNavigateOtherFrame) {
418 ListenForScreenAvailabilityAndWait(kPresentationUrl1, true); 421 ListenForScreenAvailabilityAndWait(presentation_url1_, true);
419 422
420 // TODO(imcheng): How to get a different RenderFrameHost? 423 // TODO(imcheng): How to get a different RenderFrameHost?
421 service_impl_->DidNavigateAnyFrame( 424 service_impl_->DidNavigateAnyFrame(
422 nullptr, 425 nullptr,
423 content::LoadCommittedDetails(), 426 content::LoadCommittedDetails(),
424 content::FrameNavigateParams()); 427 content::FrameNavigateParams());
425 428
426 // Availability is reported and callback is invoked since it was not 429 // Availability is reported and callback is invoked since it was not
427 // removed. 430 // removed.
428 SimulateScreenAvailabilityChangeAndWait(kPresentationUrl1, true); 431 SimulateScreenAvailabilityChangeAndWait(presentation_url1_, true);
429 } 432 }
430 433
431 TEST_F(PresentationServiceImplTest, ThisRenderFrameDeleted) { 434 TEST_F(PresentationServiceImplTest, ThisRenderFrameDeleted) {
432 ListenForScreenAvailabilityAndWait(kPresentationUrl1, true); 435 ListenForScreenAvailabilityAndWait(presentation_url1_, true);
433 436
434 ExpectReset(); 437 ExpectReset();
435 438
436 // Since the frame matched the service, |service_impl_| will be deleted. 439 // Since the frame matched the service, |service_impl_| will be deleted.
437 PresentationServiceImpl* service = service_impl_.release(); 440 PresentationServiceImpl* service = service_impl_.release();
438 EXPECT_CALL(mock_delegate_, RemoveObserver(_, _)).Times(1); 441 EXPECT_CALL(mock_delegate_, RemoveObserver(_, _)).Times(1);
439 service->RenderFrameDeleted(contents()->GetMainFrame()); 442 service->RenderFrameDeleted(contents()->GetMainFrame());
440 } 443 }
441 444
442 TEST_F(PresentationServiceImplTest, OtherRenderFrameDeleted) { 445 TEST_F(PresentationServiceImplTest, OtherRenderFrameDeleted) {
443 ListenForScreenAvailabilityAndWait(kPresentationUrl1, true); 446 ListenForScreenAvailabilityAndWait(presentation_url1_, true);
444 447
445 // TODO(imcheng): How to get a different RenderFrameHost? 448 // TODO(imcheng): How to get a different RenderFrameHost?
446 service_impl_->RenderFrameDeleted(nullptr); 449 service_impl_->RenderFrameDeleted(nullptr);
447 450
448 // Availability is reported and callback should be invoked since listener 451 // Availability is reported and callback should be invoked since listener
449 // has not been deleted. 452 // has not been deleted.
450 SimulateScreenAvailabilityChangeAndWait(kPresentationUrl1, true); 453 SimulateScreenAvailabilityChangeAndWait(presentation_url1_, true);
451 } 454 }
452 455
453 TEST_F(PresentationServiceImplTest, DelegateFails) { 456 TEST_F(PresentationServiceImplTest, DelegateFails) {
454 ListenForScreenAvailabilityAndWait(kPresentationUrl1, false); 457 ListenForScreenAvailabilityAndWait(presentation_url1_, false);
455 ASSERT_EQ( 458 ASSERT_EQ(
456 service_impl_->screen_availability_listeners_.find(kPresentationUrl1), 459 service_impl_->screen_availability_listeners_.find(presentation_url1_),
457 service_impl_->screen_availability_listeners_.end()); 460 service_impl_->screen_availability_listeners_.end());
458 } 461 }
459 462
460 TEST_F(PresentationServiceImplTest, SetDefaultPresentationUrls) { 463 TEST_F(PresentationServiceImplTest, SetDefaultPresentationUrls) {
461 std::vector<std::string> urls({kPresentationUrl1, kPresentationUrl2}); 464 EXPECT_CALL(mock_delegate_,
462 EXPECT_CALL(mock_delegate_, SetDefaultPresentationUrls(_, _, urls, _)) 465 SetDefaultPresentationUrls(_, _, presentation_urls_, _))
463 .Times(1); 466 .Times(1);
464 467
465 service_impl_->SetDefaultPresentationUrls(ToGURLs(urls)); 468 service_impl_->SetDefaultPresentationUrls(presentation_urls_);
466 469
467 // Sets different DPUs. 470 // Sets different DPUs.
468 std::vector<std::string> more_urls( 471 std::vector<GURL> more_urls = presentation_urls_;
469 {kPresentationUrl1, kPresentationUrl2, "http://barurl.com/"}); 472 more_urls.push_back(presentation_url3_);
470 473
471 content::PresentationSessionStartedCallback callback; 474 content::PresentationSessionStartedCallback callback;
472 EXPECT_CALL(mock_delegate_, SetDefaultPresentationUrls(_, _, more_urls, _)) 475 EXPECT_CALL(mock_delegate_, SetDefaultPresentationUrls(_, _, more_urls, _))
473 .WillOnce(SaveArg<3>(&callback)); 476 .WillOnce(SaveArg<3>(&callback));
474 service_impl_->SetDefaultPresentationUrls(ToGURLs(more_urls)); 477 service_impl_->SetDefaultPresentationUrls(more_urls);
475 478
476 blink::mojom::PresentationSessionInfo session_info; 479 blink::mojom::PresentationSessionInfo session_info;
477 session_info.url = GURL(kPresentationUrl2); 480 session_info.url = presentation_url2_;
478 session_info.id = kPresentationId; 481 session_info.id = kPresentationId;
482
479 base::RunLoop run_loop; 483 base::RunLoop run_loop;
480 EXPECT_CALL(mock_client_, 484 EXPECT_CALL(mock_client_,
481 OnDefaultSessionStarted(SessionInfoEquals(ByRef(session_info)))) 485 OnDefaultSessionStarted(SessionInfoEquals(ByRef(session_info))))
482 .WillOnce(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit)); 486 .WillOnce(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit));
487 EXPECT_CALL(mock_delegate_, ListenForConnectionStateChange(_, _, _, _));
483 callback.Run( 488 callback.Run(
484 content::PresentationSessionInfo(kPresentationUrl2, kPresentationId)); 489 content::PresentationSessionInfo(presentation_url2_, kPresentationId));
485 run_loop.Run(); 490 run_loop.Run();
486 } 491 }
487 492
488 TEST_F(PresentationServiceImplTest, ListenForConnectionStateChange) { 493 TEST_F(PresentationServiceImplTest, ListenForConnectionStateChange) {
489 content::PresentationSessionInfo connection(kPresentationUrl1, 494 content::PresentationSessionInfo connection(presentation_url1_,
490 kPresentationId); 495 kPresentationId);
491 content::PresentationConnectionStateChangedCallback state_changed_cb; 496 content::PresentationConnectionStateChangedCallback state_changed_cb;
492 EXPECT_CALL(mock_delegate_, ListenForConnectionStateChange(_, _, _, _)) 497 EXPECT_CALL(mock_delegate_, ListenForConnectionStateChange(_, _, _, _))
493 .WillOnce(SaveArg<3>(&state_changed_cb)); 498 .WillOnce(SaveArg<3>(&state_changed_cb));
494 service_impl_->ListenForConnectionStateChange(connection); 499 service_impl_->ListenForConnectionStateChange(connection);
495 500
496 // Trigger state change. It should be propagated back up to |mock_client_|. 501 // Trigger state change. It should be propagated back up to |mock_client_|.
497 blink::mojom::PresentationSessionInfo presentation_connection; 502 blink::mojom::PresentationSessionInfo presentation_connection;
498 presentation_connection.url = GURL(kPresentationUrl1); 503 presentation_connection.url = presentation_url1_;
499 presentation_connection.id = kPresentationId; 504 presentation_connection.id = kPresentationId;
500 { 505 {
501 base::RunLoop run_loop; 506 base::RunLoop run_loop;
502 EXPECT_CALL(mock_client_, 507 EXPECT_CALL(mock_client_,
503 OnConnectionStateChanged( 508 OnConnectionStateChanged(
504 SessionInfoEquals(ByRef(presentation_connection)), 509 SessionInfoEquals(ByRef(presentation_connection)),
505 blink::mojom::PresentationConnectionState::TERMINATED)) 510 blink::mojom::PresentationConnectionState::TERMINATED))
506 .WillOnce(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit)); 511 .WillOnce(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit));
507 state_changed_cb.Run(PresentationConnectionStateChangeInfo( 512 state_changed_cb.Run(PresentationConnectionStateChangeInfo(
508 PRESENTATION_CONNECTION_STATE_TERMINATED)); 513 PRESENTATION_CONNECTION_STATE_TERMINATED));
509 run_loop.Run(); 514 run_loop.Run();
510 } 515 }
511 } 516 }
512 517
513 TEST_F(PresentationServiceImplTest, ListenForConnectionClose) { 518 TEST_F(PresentationServiceImplTest, ListenForConnectionClose) {
514 content::PresentationSessionInfo connection(kPresentationUrl1, 519 content::PresentationSessionInfo connection(presentation_url1_,
515 kPresentationId); 520 kPresentationId);
516 content::PresentationConnectionStateChangedCallback state_changed_cb; 521 content::PresentationConnectionStateChangedCallback state_changed_cb;
517 EXPECT_CALL(mock_delegate_, ListenForConnectionStateChange(_, _, _, _)) 522 EXPECT_CALL(mock_delegate_, ListenForConnectionStateChange(_, _, _, _))
518 .WillOnce(SaveArg<3>(&state_changed_cb)); 523 .WillOnce(SaveArg<3>(&state_changed_cb));
519 service_impl_->ListenForConnectionStateChange(connection); 524 service_impl_->ListenForConnectionStateChange(connection);
520 525
521 // Trigger connection close. It should be propagated back up to 526 // Trigger connection close. It should be propagated back up to
522 // |mock_client_|. 527 // |mock_client_|.
523 blink::mojom::PresentationSessionInfo presentation_connection; 528 blink::mojom::PresentationSessionInfo presentation_connection;
524 presentation_connection.url = GURL(kPresentationUrl1); 529 presentation_connection.url = presentation_url1_;
525 presentation_connection.id = kPresentationId; 530 presentation_connection.id = kPresentationId;
526 { 531 {
527 base::RunLoop run_loop; 532 base::RunLoop run_loop;
528 PresentationConnectionStateChangeInfo closed_info( 533 PresentationConnectionStateChangeInfo closed_info(
529 PRESENTATION_CONNECTION_STATE_CLOSED); 534 PRESENTATION_CONNECTION_STATE_CLOSED);
530 closed_info.close_reason = PRESENTATION_CONNECTION_CLOSE_REASON_WENT_AWAY; 535 closed_info.close_reason = PRESENTATION_CONNECTION_CLOSE_REASON_WENT_AWAY;
531 closed_info.message = "Foo"; 536 closed_info.message = "Foo";
532 537
533 EXPECT_CALL( 538 EXPECT_CALL(
534 mock_client_, 539 mock_client_,
535 OnConnectionClosed( 540 OnConnectionClosed(
536 SessionInfoEquals(ByRef(presentation_connection)), 541 SessionInfoEquals(ByRef(presentation_connection)),
537 blink::mojom::PresentationConnectionCloseReason::WENT_AWAY, "Foo")) 542 blink::mojom::PresentationConnectionCloseReason::WENT_AWAY, "Foo"))
538 .WillOnce(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit)); 543 .WillOnce(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit));
539 state_changed_cb.Run(closed_info); 544 state_changed_cb.Run(closed_info);
540 run_loop.Run(); 545 run_loop.Run();
541 } 546 }
542 } 547 }
543 548
544 TEST_F(PresentationServiceImplTest, SetSameDefaultPresentationUrls) { 549 TEST_F(PresentationServiceImplTest, SetSameDefaultPresentationUrls) {
545 std::vector<std::string> urls({kPresentationUrl1, kPresentationUrl2}); 550 EXPECT_CALL(mock_delegate_,
546 551 SetDefaultPresentationUrls(_, _, presentation_urls_, _))
547 EXPECT_CALL(mock_delegate_, SetDefaultPresentationUrls(_, _, urls, _))
548 .Times(1); 552 .Times(1);
549 service_impl_->SetDefaultPresentationUrls(ToGURLs(urls)); 553 service_impl_->SetDefaultPresentationUrls(presentation_urls_);
550 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&mock_delegate_)); 554 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&mock_delegate_));
551 555
552 // Same URLs as before; no-ops. 556 // Same URLs as before; no-ops.
553 service_impl_->SetDefaultPresentationUrls(ToGURLs(urls)); 557 service_impl_->SetDefaultPresentationUrls(presentation_urls_);
554 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&mock_delegate_)); 558 EXPECT_TRUE(Mock::VerifyAndClearExpectations(&mock_delegate_));
555 } 559 }
556 560
557 TEST_F(PresentationServiceImplTest, StartSessionSuccess) { 561 TEST_F(PresentationServiceImplTest, StartSessionSuccess) {
558 std::vector<std::string> urls({kPresentationUrl1, kPresentationUrl2});
559
560 service_ptr_->StartSession( 562 service_ptr_->StartSession(
561 ToGURLs(urls), 563 presentation_urls_,
562 base::Bind(&PresentationServiceImplTest::ExpectNewSessionCallbackSuccess, 564 base::Bind(&PresentationServiceImplTest::ExpectNewSessionCallbackSuccess,
563 base::Unretained(this))); 565 base::Unretained(this)));
564 base::RunLoop run_loop; 566 base::RunLoop run_loop;
565 base::Callback<void(const PresentationSessionInfo&)> success_cb; 567 base::Callback<void(const PresentationSessionInfo&)> success_cb;
566 EXPECT_CALL(mock_delegate_, StartSession(_, _, urls, _, _)) 568 EXPECT_CALL(mock_delegate_, StartSession(_, _, presentation_urls_, _, _))
567 .WillOnce(DoAll(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit), 569 .WillOnce(DoAll(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit),
568 SaveArg<3>(&success_cb))); 570 SaveArg<3>(&success_cb)));
569 run_loop.Run(); 571 run_loop.Run();
570 572
571 EXPECT_CALL(mock_delegate_, ListenForConnectionStateChange(_, _, _, _)) 573 EXPECT_CALL(mock_delegate_, ListenForConnectionStateChange(_, _, _, _))
572 .Times(1); 574 .Times(1);
573 success_cb.Run(PresentationSessionInfo(kPresentationUrl1, kPresentationId)); 575 success_cb.Run(PresentationSessionInfo(presentation_url1_, kPresentationId));
574 SaveQuitClosureAndRunLoop(); 576 SaveQuitClosureAndRunLoop();
575 } 577 }
576 578
577 TEST_F(PresentationServiceImplTest, StartSessionError) { 579 TEST_F(PresentationServiceImplTest, StartSessionError) {
578 std::vector<std::string> urls({kPresentationUrl1, kPresentationUrl2});
579
580 service_ptr_->StartSession( 580 service_ptr_->StartSession(
581 ToGURLs(urls), 581 presentation_urls_,
582 base::Bind(&PresentationServiceImplTest::ExpectNewSessionCallbackError, 582 base::Bind(&PresentationServiceImplTest::ExpectNewSessionCallbackError,
583 base::Unretained(this))); 583 base::Unretained(this)));
584 base::RunLoop run_loop; 584 base::RunLoop run_loop;
585 base::Callback<void(const PresentationError&)> error_cb; 585 base::Callback<void(const PresentationError&)> error_cb;
586 EXPECT_CALL(mock_delegate_, StartSession(_, _, urls, _, _)) 586 EXPECT_CALL(mock_delegate_, StartSession(_, _, presentation_urls_, _, _))
587 .WillOnce(DoAll(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit), 587 .WillOnce(DoAll(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit),
588 SaveArg<4>(&error_cb))); 588 SaveArg<4>(&error_cb)));
589 run_loop.Run(); 589 run_loop.Run();
590 error_cb.Run(PresentationError(PRESENTATION_ERROR_UNKNOWN, "Error message")); 590 error_cb.Run(PresentationError(PRESENTATION_ERROR_UNKNOWN, "Error message"));
591 SaveQuitClosureAndRunLoop(); 591 SaveQuitClosureAndRunLoop();
592 } 592 }
593 593
594 TEST_F(PresentationServiceImplTest, JoinSessionSuccess) { 594 TEST_F(PresentationServiceImplTest, JoinSessionSuccess) {
595 std::vector<std::string> urls({kPresentationUrl1, kPresentationUrl2});
596
597 service_ptr_->JoinSession( 595 service_ptr_->JoinSession(
598 ToGURLs(urls), base::Optional<std::string>(kPresentationId), 596 presentation_urls_, base::Optional<std::string>(kPresentationId),
599 base::Bind(&PresentationServiceImplTest::ExpectNewSessionCallbackSuccess, 597 base::Bind(&PresentationServiceImplTest::ExpectNewSessionCallbackSuccess,
600 base::Unretained(this))); 598 base::Unretained(this)));
601 base::RunLoop run_loop; 599 base::RunLoop run_loop;
602 base::Callback<void(const PresentationSessionInfo&)> success_cb; 600 base::Callback<void(const PresentationSessionInfo&)> success_cb;
603 EXPECT_CALL(mock_delegate_, JoinSession(_, _, urls, kPresentationId, _, _)) 601 EXPECT_CALL(mock_delegate_,
602 JoinSession(_, _, presentation_urls_, kPresentationId, _, _))
604 .WillOnce(DoAll(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit), 603 .WillOnce(DoAll(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit),
605 SaveArg<4>(&success_cb))); 604 SaveArg<4>(&success_cb)));
606 run_loop.Run(); 605 run_loop.Run();
607 606
608 EXPECT_CALL(mock_delegate_, ListenForConnectionStateChange(_, _, _, _)) 607 EXPECT_CALL(mock_delegate_, ListenForConnectionStateChange(_, _, _, _))
609 .Times(1); 608 .Times(1);
610 success_cb.Run(PresentationSessionInfo(kPresentationUrl1, kPresentationId)); 609 success_cb.Run(PresentationSessionInfo(presentation_url1_, kPresentationId));
611 SaveQuitClosureAndRunLoop(); 610 SaveQuitClosureAndRunLoop();
612 } 611 }
613 612
614 TEST_F(PresentationServiceImplTest, JoinSessionError) { 613 TEST_F(PresentationServiceImplTest, JoinSessionError) {
615 std::vector<std::string> urls({kPresentationUrl1, kPresentationUrl2});
616
617 service_ptr_->JoinSession( 614 service_ptr_->JoinSession(
618 ToGURLs(urls), base::Optional<std::string>(kPresentationId), 615 presentation_urls_, base::Optional<std::string>(kPresentationId),
619 base::Bind(&PresentationServiceImplTest::ExpectNewSessionCallbackError, 616 base::Bind(&PresentationServiceImplTest::ExpectNewSessionCallbackError,
620 base::Unretained(this))); 617 base::Unretained(this)));
621 base::RunLoop run_loop; 618 base::RunLoop run_loop;
622 base::Callback<void(const PresentationError&)> error_cb; 619 base::Callback<void(const PresentationError&)> error_cb;
623 EXPECT_CALL(mock_delegate_, JoinSession(_, _, urls, kPresentationId, _, _)) 620 EXPECT_CALL(mock_delegate_,
621 JoinSession(_, _, presentation_urls_, kPresentationId, _, _))
624 .WillOnce(DoAll(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit), 622 .WillOnce(DoAll(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit),
625 SaveArg<5>(&error_cb))); 623 SaveArg<5>(&error_cb)));
626 run_loop.Run(); 624 run_loop.Run();
627 error_cb.Run(PresentationError(PRESENTATION_ERROR_UNKNOWN, "Error message")); 625 error_cb.Run(PresentationError(PRESENTATION_ERROR_UNKNOWN, "Error message"));
628 SaveQuitClosureAndRunLoop(); 626 SaveQuitClosureAndRunLoop();
629 } 627 }
630 628
631 TEST_F(PresentationServiceImplTest, CloseConnection) { 629 TEST_F(PresentationServiceImplTest, CloseConnection) {
632 GURL url(kPresentationUrl1); 630 service_ptr_->CloseConnection(presentation_url1_, kPresentationId);
633 service_ptr_->CloseConnection(url, kPresentationId);
634 631
635 base::RunLoop run_loop; 632 base::RunLoop run_loop;
636 EXPECT_CALL(mock_delegate_, CloseConnection(_, _, Eq(kPresentationId))) 633 EXPECT_CALL(mock_delegate_, CloseConnection(_, _, Eq(kPresentationId)))
637 .WillOnce(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit)); 634 .WillOnce(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit));
638 run_loop.Run(); 635 run_loop.Run();
639 } 636 }
640 637
641 TEST_F(PresentationServiceImplTest, Terminate) { 638 TEST_F(PresentationServiceImplTest, Terminate) {
642 GURL url(kPresentationUrl1); 639 service_ptr_->Terminate(presentation_url1_, kPresentationId);
643 service_ptr_->Terminate(url, kPresentationId);
644 base::RunLoop run_loop; 640 base::RunLoop run_loop;
645 EXPECT_CALL(mock_delegate_, Terminate(_, _, Eq(kPresentationId))) 641 EXPECT_CALL(mock_delegate_, Terminate(_, _, Eq(kPresentationId)))
646 .WillOnce(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit)); 642 .WillOnce(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit));
647 run_loop.Run(); 643 run_loop.Run();
648 } 644 }
649 645
650 TEST_F(PresentationServiceImplTest, ListenForSessionMessagesPassed) { 646 TEST_F(PresentationServiceImplTest, ListenForSessionMessagesPassed) {
651 std::string text_msg("123"); 647 std::string text_msg("123");
652 std::vector<uint8_t> binary_data(3, '\1'); 648 std::vector<uint8_t> binary_data(3, '\1');
653 RunListenForSessionMessages(text_msg, binary_data, true); 649 RunListenForSessionMessages(text_msg, binary_data, true);
654 } 650 }
655 651
656 TEST_F(PresentationServiceImplTest, ListenForSessionMessagesCopied) { 652 TEST_F(PresentationServiceImplTest, ListenForSessionMessagesCopied) {
657 std::string text_msg("123"); 653 std::string text_msg("123");
658 std::vector<uint8_t> binary_data(3, '\1'); 654 std::vector<uint8_t> binary_data(3, '\1');
659 RunListenForSessionMessages(text_msg, binary_data, false); 655 RunListenForSessionMessages(text_msg, binary_data, false);
660 } 656 }
661 657
662 TEST_F(PresentationServiceImplTest, ListenForSessionMessagesWithEmptyMsg) { 658 TEST_F(PresentationServiceImplTest, ListenForSessionMessagesWithEmptyMsg) {
663 std::string text_msg(""); 659 std::string text_msg("");
664 std::vector<uint8_t> binary_data; 660 std::vector<uint8_t> binary_data;
665 RunListenForSessionMessages(text_msg, binary_data, false); 661 RunListenForSessionMessages(text_msg, binary_data, false);
666 } 662 }
667 663
668 TEST_F(PresentationServiceImplTest, StartSessionInProgress) { 664 TEST_F(PresentationServiceImplTest, StartSessionInProgress) {
669 std::vector<std::string> urls({"http://foourl.com/", "http://barurl.com/"}); 665 EXPECT_CALL(mock_delegate_, StartSession(_, _, presentation_urls_, _, _))
670 666 .Times(1);
671 EXPECT_CALL(mock_delegate_, StartSession(_, _, urls, _, _)).Times(1); 667 service_ptr_->StartSession(presentation_urls_, base::Bind(&DoNothing));
672 service_ptr_->StartSession(ToGURLs(urls), base::Bind(&DoNothing));
673 668
674 // This request should fail immediately, since there is already a StartSession 669 // This request should fail immediately, since there is already a StartSession
675 // in progress. 670 // in progress.
676 service_ptr_->StartSession( 671 service_ptr_->StartSession(
677 ToGURLs(urls), 672 presentation_urls_,
678 base::Bind(&PresentationServiceImplTest::ExpectNewSessionCallbackError, 673 base::Bind(&PresentationServiceImplTest::ExpectNewSessionCallbackError,
679 base::Unretained(this))); 674 base::Unretained(this)));
680 SaveQuitClosureAndRunLoop(); 675 SaveQuitClosureAndRunLoop();
681 } 676 }
682 677
683 TEST_F(PresentationServiceImplTest, SendStringMessage) { 678 TEST_F(PresentationServiceImplTest, SendStringMessage) {
684 std::string message("Test presentation session message"); 679 std::string message("Test presentation session message");
685 680
686 blink::mojom::PresentationSessionInfoPtr session( 681 blink::mojom::PresentationSessionInfoPtr session(
687 blink::mojom::PresentationSessionInfo::New()); 682 blink::mojom::PresentationSessionInfo::New());
688 session->url = GURL(kPresentationUrl1); 683 session->url = presentation_url1_;
689 session->id = kPresentationId; 684 session->id = kPresentationId;
690 blink::mojom::SessionMessagePtr message_request( 685 blink::mojom::SessionMessagePtr message_request(
691 blink::mojom::SessionMessage::New()); 686 blink::mojom::SessionMessage::New());
692 message_request->type = blink::mojom::PresentationMessageType::TEXT; 687 message_request->type = blink::mojom::PresentationMessageType::TEXT;
693 message_request->message = message; 688 message_request->message = message;
694 service_ptr_->SendSessionMessage( 689 service_ptr_->SendSessionMessage(
695 std::move(session), std::move(message_request), 690 std::move(session), std::move(message_request),
696 base::Bind(&PresentationServiceImplTest::ExpectSendSessionMessageCallback, 691 base::Bind(&PresentationServiceImplTest::ExpectSendSessionMessageCallback,
697 base::Unretained(this))); 692 base::Unretained(this)));
698 693
(...skipping 17 matching lines...) Expand all
716 } 711 }
717 712
718 TEST_F(PresentationServiceImplTest, SendArrayBuffer) { 713 TEST_F(PresentationServiceImplTest, SendArrayBuffer) {
719 // Test Array buffer data. 714 // Test Array buffer data.
720 const uint8_t buffer[] = {0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48}; 715 const uint8_t buffer[] = {0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48};
721 std::vector<uint8_t> data; 716 std::vector<uint8_t> data;
722 data.assign(buffer, buffer + sizeof(buffer)); 717 data.assign(buffer, buffer + sizeof(buffer));
723 718
724 blink::mojom::PresentationSessionInfoPtr session( 719 blink::mojom::PresentationSessionInfoPtr session(
725 blink::mojom::PresentationSessionInfo::New()); 720 blink::mojom::PresentationSessionInfo::New());
726 session->url = GURL(kPresentationUrl1); 721 session->url = presentation_url1_;
727 session->id = kPresentationId; 722 session->id = kPresentationId;
728 blink::mojom::SessionMessagePtr message_request( 723 blink::mojom::SessionMessagePtr message_request(
729 blink::mojom::SessionMessage::New()); 724 blink::mojom::SessionMessage::New());
730 message_request->type = blink::mojom::PresentationMessageType::ARRAY_BUFFER; 725 message_request->type = blink::mojom::PresentationMessageType::ARRAY_BUFFER;
731 message_request->data = data; 726 message_request->data = data;
732 service_ptr_->SendSessionMessage( 727 service_ptr_->SendSessionMessage(
733 std::move(session), std::move(message_request), 728 std::move(session), std::move(message_request),
734 base::Bind(&PresentationServiceImplTest::ExpectSendSessionMessageCallback, 729 base::Bind(&PresentationServiceImplTest::ExpectSendSessionMessageCallback,
735 base::Unretained(this))); 730 base::Unretained(this)));
736 731
(...skipping 23 matching lines...) Expand all
760 // Create buffer with size exceeding the limit. 755 // Create buffer with size exceeding the limit.
761 // Use same size as in content::kMaxPresentationSessionMessageSize. 756 // Use same size as in content::kMaxPresentationSessionMessageSize.
762 const size_t kMaxBufferSizeInBytes = 64 * 1024; // 64 KB. 757 const size_t kMaxBufferSizeInBytes = 64 * 1024; // 64 KB.
763 uint8_t buffer[kMaxBufferSizeInBytes + 1]; 758 uint8_t buffer[kMaxBufferSizeInBytes + 1];
764 memset(buffer, 0, kMaxBufferSizeInBytes+1); 759 memset(buffer, 0, kMaxBufferSizeInBytes+1);
765 std::vector<uint8_t> data; 760 std::vector<uint8_t> data;
766 data.assign(buffer, buffer + sizeof(buffer)); 761 data.assign(buffer, buffer + sizeof(buffer));
767 762
768 blink::mojom::PresentationSessionInfoPtr session( 763 blink::mojom::PresentationSessionInfoPtr session(
769 blink::mojom::PresentationSessionInfo::New()); 764 blink::mojom::PresentationSessionInfo::New());
770 session->url = GURL(kPresentationUrl1); 765 session->url = presentation_url1_;
771 session->id = kPresentationId; 766 session->id = kPresentationId;
772 blink::mojom::SessionMessagePtr message_request( 767 blink::mojom::SessionMessagePtr message_request(
773 blink::mojom::SessionMessage::New()); 768 blink::mojom::SessionMessage::New());
774 message_request->type = blink::mojom::PresentationMessageType::ARRAY_BUFFER; 769 message_request->type = blink::mojom::PresentationMessageType::ARRAY_BUFFER;
775 message_request->data = data; 770 message_request->data = data;
776 service_ptr_->SendSessionMessage( 771 service_ptr_->SendSessionMessage(
777 std::move(session), std::move(message_request), 772 std::move(session), std::move(message_request),
778 base::Bind(&PresentationServiceImplTest::ExpectSendSessionMessageCallback, 773 base::Bind(&PresentationServiceImplTest::ExpectSendSessionMessageCallback,
779 base::Unretained(this))); 774 base::Unretained(this)));
780 775
(...skipping 10 matching lines...) Expand all
791 SaveQuitClosureAndRunLoop(); 786 SaveQuitClosureAndRunLoop();
792 } 787 }
793 788
794 TEST_F(PresentationServiceImplTest, SendBlobData) { 789 TEST_F(PresentationServiceImplTest, SendBlobData) {
795 const uint8_t buffer[] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07}; 790 const uint8_t buffer[] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07};
796 std::vector<uint8_t> data; 791 std::vector<uint8_t> data;
797 data.assign(buffer, buffer + sizeof(buffer)); 792 data.assign(buffer, buffer + sizeof(buffer));
798 793
799 blink::mojom::PresentationSessionInfoPtr session( 794 blink::mojom::PresentationSessionInfoPtr session(
800 blink::mojom::PresentationSessionInfo::New()); 795 blink::mojom::PresentationSessionInfo::New());
801 session->url = GURL(kPresentationUrl1); 796 session->url = presentation_url1_;
802 session->id = kPresentationId; 797 session->id = kPresentationId;
803 blink::mojom::SessionMessagePtr message_request( 798 blink::mojom::SessionMessagePtr message_request(
804 blink::mojom::SessionMessage::New()); 799 blink::mojom::SessionMessage::New());
805 message_request->type = blink::mojom::PresentationMessageType::BLOB; 800 message_request->type = blink::mojom::PresentationMessageType::BLOB;
806 message_request->data = data; 801 message_request->data = data;
807 service_ptr_->SendSessionMessage( 802 service_ptr_->SendSessionMessage(
808 std::move(session), std::move(message_request), 803 std::move(session), std::move(message_request),
809 base::Bind(&PresentationServiceImplTest::ExpectSendSessionMessageCallback, 804 base::Bind(&PresentationServiceImplTest::ExpectSendSessionMessageCallback,
810 base::Unretained(this))); 805 base::Unretained(this)));
811 806
(...skipping 20 matching lines...) Expand all
832 } 827 }
833 828
834 TEST_F(PresentationServiceImplTest, MaxPendingJoinSessionRequests) { 829 TEST_F(PresentationServiceImplTest, MaxPendingJoinSessionRequests) {
835 const char* presentation_url = "http://fooUrl%d"; 830 const char* presentation_url = "http://fooUrl%d";
836 const char* presentation_id = "presentationId%d"; 831 const char* presentation_id = "presentationId%d";
837 int num_requests = PresentationServiceImpl::kMaxNumQueuedSessionRequests; 832 int num_requests = PresentationServiceImpl::kMaxNumQueuedSessionRequests;
838 int i = 0; 833 int i = 0;
839 EXPECT_CALL(mock_delegate_, JoinSession(_, _, _, _, _, _)) 834 EXPECT_CALL(mock_delegate_, JoinSession(_, _, _, _, _, _))
840 .Times(num_requests); 835 .Times(num_requests);
841 for (; i < num_requests; ++i) { 836 for (; i < num_requests; ++i) {
842 std::vector<GURL> urls({GURL(base::StringPrintf(presentation_url, i))}); 837 std::vector<GURL> urls = {GURL(base::StringPrintf(presentation_url, i))};
843 service_ptr_->JoinSession(urls, base::StringPrintf(presentation_id, i), 838 service_ptr_->JoinSession(urls, base::StringPrintf(presentation_id, i),
844 base::Bind(&DoNothing)); 839 base::Bind(&DoNothing));
845 } 840 }
846 841
847 std::vector<GURL> urls({GURL(base::StringPrintf(presentation_url, i))}); 842 std::vector<GURL> urls = {GURL(base::StringPrintf(presentation_url, i))};
848 // Exceeded maximum queue size, should invoke mojo callback with error. 843 // Exceeded maximum queue size, should invoke mojo callback with error.
849 service_ptr_->JoinSession( 844 service_ptr_->JoinSession(
850 urls, base::StringPrintf(presentation_id, i), 845 urls, base::StringPrintf(presentation_id, i),
851 base::Bind(&PresentationServiceImplTest::ExpectNewSessionCallbackError, 846 base::Bind(&PresentationServiceImplTest::ExpectNewSessionCallbackError,
852 base::Unretained(this))); 847 base::Unretained(this)));
853 SaveQuitClosureAndRunLoop(); 848 SaveQuitClosureAndRunLoop();
854 } 849 }
855 850
856 TEST_F(PresentationServiceImplTest, ScreenAvailabilityNotSupported) { 851 TEST_F(PresentationServiceImplTest, ScreenAvailabilityNotSupported) {
857 mock_delegate_.set_screen_availability_listening_supported(false); 852 mock_delegate_.set_screen_availability_listening_supported(false);
858 GURL url(kPresentationUrl1);
859 base::RunLoop run_loop; 853 base::RunLoop run_loop;
860 EXPECT_CALL(mock_client_, OnScreenAvailabilityNotSupported(url)) 854 EXPECT_CALL(mock_client_,
855 OnScreenAvailabilityNotSupported(presentation_url1_))
861 .WillOnce(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit)); 856 .WillOnce(InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit));
862 ListenForScreenAvailabilityAndWait(kPresentationUrl1, false); 857 ListenForScreenAvailabilityAndWait(presentation_url1_, false);
863 run_loop.Run(); 858 run_loop.Run();
864 } 859 }
865 860
866 } // namespace content 861 } // 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