OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "content/browser/presentation/presentation_service_impl.h" | 5 #include "content/browser/presentation/presentation_service_impl.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 #include <algorithm> | 9 #include <algorithm> |
10 #include <utility> | 10 #include <utility> |
(...skipping 275 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
286 const NewSessionCallback& callback) { | 286 const NewSessionCallback& callback) { |
287 if (pending_join_session_cbs_.size() >= kMaxNumQueuedSessionRequests) | 287 if (pending_join_session_cbs_.size() >= kMaxNumQueuedSessionRequests) |
288 return kInvalidRequestSessionId; | 288 return kInvalidRequestSessionId; |
289 | 289 |
290 int request_id = GetNextRequestSessionId(); | 290 int request_id = GetNextRequestSessionId(); |
291 pending_join_session_cbs_[request_id].reset( | 291 pending_join_session_cbs_[request_id].reset( |
292 new NewSessionCallbackWrapper(callback)); | 292 new NewSessionCallbackWrapper(callback)); |
293 return request_id; | 293 return request_id; |
294 } | 294 } |
295 | 295 |
296 void PresentationServiceImpl::ListenForConnectionStateChangeAndChangeState( | 296 void PresentationServiceImpl::ListenForConnectionStateChange( |
297 const PresentationSessionInfo& connection) { | 297 const PresentationSessionInfo& connection) { |
298 if (controller_delegate_) { | 298 if (controller_delegate_) { |
299 controller_delegate_->ListenForConnectionStateChange( | 299 controller_delegate_->ListenForConnectionStateChange( |
300 render_process_id_, render_frame_id_, connection, | 300 render_process_id_, render_frame_id_, connection, |
301 base::Bind(&PresentationServiceImpl::OnConnectionStateChanged, | 301 base::Bind(&PresentationServiceImpl::OnConnectionStateChanged, |
302 weak_factory_.GetWeakPtr(), connection)); | 302 weak_factory_.GetWeakPtr(), connection)); |
303 OnConnectionStateChanged(connection, | |
304 PresentationConnectionStateChangeInfo( | |
305 PRESENTATION_CONNECTION_STATE_CONNECTED)); | |
306 } | 303 } |
307 } | 304 } |
308 | 305 |
309 void PresentationServiceImpl::OnStartSessionSucceeded( | 306 void PresentationServiceImpl::OnStartSessionSucceeded( |
310 int request_session_id, | 307 int request_session_id, |
311 const PresentationSessionInfo& session_info) { | 308 const PresentationSessionInfo& session_info) { |
312 if (request_session_id != start_session_request_id_) | 309 if (request_session_id != start_session_request_id_) |
313 return; | 310 return; |
314 | 311 |
315 CHECK(pending_start_session_cb_.get()); | 312 CHECK(pending_start_session_cb_.get()); |
316 pending_start_session_cb_->Run( | 313 pending_start_session_cb_->Run( |
317 blink::mojom::PresentationSessionInfo::From(session_info), | 314 blink::mojom::PresentationSessionInfo::From(session_info), |
318 blink::mojom::PresentationErrorPtr()); | 315 blink::mojom::PresentationErrorPtr()); |
319 ListenForConnectionStateChangeAndChangeState(session_info); | 316 ListenForConnectionStateChange(session_info); |
320 pending_start_session_cb_.reset(); | 317 pending_start_session_cb_.reset(); |
321 start_session_request_id_ = kInvalidRequestSessionId; | 318 start_session_request_id_ = kInvalidRequestSessionId; |
322 } | 319 } |
323 | 320 |
324 void PresentationServiceImpl::OnStartSessionError( | 321 void PresentationServiceImpl::OnStartSessionError( |
325 int request_session_id, | 322 int request_session_id, |
326 const PresentationError& error) { | 323 const PresentationError& error) { |
327 if (request_session_id != start_session_request_id_) | 324 if (request_session_id != start_session_request_id_) |
328 return; | 325 return; |
329 | 326 |
330 CHECK(pending_start_session_cb_.get()); | 327 CHECK(pending_start_session_cb_.get()); |
331 pending_start_session_cb_->Run(blink::mojom::PresentationSessionInfoPtr(), | 328 pending_start_session_cb_->Run(blink::mojom::PresentationSessionInfoPtr(), |
332 blink::mojom::PresentationError::From(error)); | 329 blink::mojom::PresentationError::From(error)); |
333 pending_start_session_cb_.reset(); | 330 pending_start_session_cb_.reset(); |
334 start_session_request_id_ = kInvalidRequestSessionId; | 331 start_session_request_id_ = kInvalidRequestSessionId; |
335 } | 332 } |
336 | 333 |
337 void PresentationServiceImpl::OnJoinSessionSucceeded( | 334 void PresentationServiceImpl::OnJoinSessionSucceeded( |
338 int request_session_id, | 335 int request_session_id, |
339 const PresentationSessionInfo& session_info) { | 336 const PresentationSessionInfo& session_info) { |
340 if (RunAndEraseJoinSessionMojoCallback( | 337 if (RunAndEraseJoinSessionMojoCallback( |
341 request_session_id, | 338 request_session_id, |
342 blink::mojom::PresentationSessionInfo::From(session_info), | 339 blink::mojom::PresentationSessionInfo::From(session_info), |
343 blink::mojom::PresentationErrorPtr())) { | 340 blink::mojom::PresentationErrorPtr())) { |
344 ListenForConnectionStateChangeAndChangeState(session_info); | 341 ListenForConnectionStateChange(session_info); |
345 } | 342 } |
346 } | 343 } |
347 | 344 |
348 void PresentationServiceImpl::OnJoinSessionError( | 345 void PresentationServiceImpl::OnJoinSessionError( |
349 int request_session_id, | 346 int request_session_id, |
350 const PresentationError& error) { | 347 const PresentationError& error) { |
351 RunAndEraseJoinSessionMojoCallback( | 348 RunAndEraseJoinSessionMojoCallback( |
352 request_session_id, blink::mojom::PresentationSessionInfoPtr(), | 349 request_session_id, blink::mojom::PresentationSessionInfoPtr(), |
353 blink::mojom::PresentationError::From(error)); | 350 blink::mojom::PresentationError::From(error)); |
354 } | 351 } |
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
483 void PresentationServiceImpl::SetPresentationConnection( | 480 void PresentationServiceImpl::SetPresentationConnection( |
484 blink::mojom::PresentationSessionInfoPtr session, | 481 blink::mojom::PresentationSessionInfoPtr session, |
485 blink::mojom::PresentationConnectionPtr controller_connection_ptr, | 482 blink::mojom::PresentationConnectionPtr controller_connection_ptr, |
486 blink::mojom::PresentationConnectionRequest receiver_connection_request) { | 483 blink::mojom::PresentationConnectionRequest receiver_connection_request) { |
487 DVLOG(2) << "SetPresentationConnection"; | 484 DVLOG(2) << "SetPresentationConnection"; |
488 | 485 |
489 if (!controller_delegate_) | 486 if (!controller_delegate_) |
490 return; | 487 return; |
491 | 488 |
492 PresentationSessionInfo session_info(session.To<PresentationSessionInfo>()); | 489 PresentationSessionInfo session_info(session.To<PresentationSessionInfo>()); |
493 controller_delegate_->ConnectToOffscreenPresentation( | 490 controller_delegate_->ConnectToPresentation( |
494 render_process_id_, render_frame_id_, session_info, | 491 render_process_id_, render_frame_id_, session_info, |
495 std::move(controller_connection_ptr), | 492 std::move(controller_connection_ptr), |
496 std::move(receiver_connection_request)); | 493 std::move(receiver_connection_request)); |
497 } | 494 } |
498 | 495 |
499 void PresentationServiceImpl::OnConnectionMessages( | 496 void PresentationServiceImpl::OnConnectionMessages( |
500 const PresentationSessionInfo& session, | 497 const PresentationSessionInfo& session, |
501 const std::vector<std::unique_ptr<PresentationConnectionMessage>>& messages, | 498 const std::vector<std::unique_ptr<PresentationConnectionMessage>>& messages, |
502 bool pass_ownership) { | 499 bool pass_ownership) { |
503 DCHECK(client_); | 500 DCHECK(client_); |
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
607 controller_delegate_ = nullptr; | 604 controller_delegate_ = nullptr; |
608 receiver_delegate_ = nullptr; | 605 receiver_delegate_ = nullptr; |
609 Reset(); | 606 Reset(); |
610 } | 607 } |
611 | 608 |
612 void PresentationServiceImpl::OnDefaultPresentationStarted( | 609 void PresentationServiceImpl::OnDefaultPresentationStarted( |
613 const PresentationSessionInfo& connection) { | 610 const PresentationSessionInfo& connection) { |
614 DCHECK(client_.get()); | 611 DCHECK(client_.get()); |
615 client_->OnDefaultSessionStarted( | 612 client_->OnDefaultSessionStarted( |
616 blink::mojom::PresentationSessionInfo::From(connection)); | 613 blink::mojom::PresentationSessionInfo::From(connection)); |
617 ListenForConnectionStateChangeAndChangeState(connection); | 614 ListenForConnectionStateChange(connection); |
618 } | 615 } |
619 | 616 |
620 PresentationServiceImpl::ScreenAvailabilityListenerImpl:: | 617 PresentationServiceImpl::ScreenAvailabilityListenerImpl:: |
621 ScreenAvailabilityListenerImpl(const GURL& availability_url, | 618 ScreenAvailabilityListenerImpl(const GURL& availability_url, |
622 PresentationServiceImpl* service) | 619 PresentationServiceImpl* service) |
623 : availability_url_(availability_url), service_(service) { | 620 : availability_url_(availability_url), service_(service) { |
624 DCHECK(service_); | 621 DCHECK(service_); |
625 DCHECK(service_->client_.get()); | 622 DCHECK(service_->client_.get()); |
626 } | 623 } |
627 | 624 |
(...skipping 29 matching lines...) Expand all Loading... |
657 | 654 |
658 void PresentationServiceImpl::NewSessionCallbackWrapper::Run( | 655 void PresentationServiceImpl::NewSessionCallbackWrapper::Run( |
659 blink::mojom::PresentationSessionInfoPtr session, | 656 blink::mojom::PresentationSessionInfoPtr session, |
660 blink::mojom::PresentationErrorPtr error) { | 657 blink::mojom::PresentationErrorPtr error) { |
661 DCHECK(!callback_.is_null()); | 658 DCHECK(!callback_.is_null()); |
662 callback_.Run(std::move(session), std::move(error)); | 659 callback_.Run(std::move(session), std::move(error)); |
663 callback_.Reset(); | 660 callback_.Reset(); |
664 } | 661 } |
665 | 662 |
666 } // namespace content | 663 } // namespace content |
OLD | NEW |