| 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 // NOTE: Blink will automatically transition the connection's state to |
| 299 // 'connected'. |
| 298 if (controller_delegate_) { | 300 if (controller_delegate_) { |
| 299 controller_delegate_->ListenForConnectionStateChange( | 301 controller_delegate_->ListenForConnectionStateChange( |
| 300 render_process_id_, render_frame_id_, connection, | 302 render_process_id_, render_frame_id_, connection, |
| 301 base::Bind(&PresentationServiceImpl::OnConnectionStateChanged, | 303 base::Bind(&PresentationServiceImpl::OnConnectionStateChanged, |
| 302 weak_factory_.GetWeakPtr(), connection)); | 304 weak_factory_.GetWeakPtr(), connection)); |
| 303 OnConnectionStateChanged(connection, | |
| 304 PresentationConnectionStateChangeInfo( | |
| 305 PRESENTATION_CONNECTION_STATE_CONNECTED)); | |
| 306 } | 305 } |
| 307 } | 306 } |
| 308 | 307 |
| 309 void PresentationServiceImpl::OnStartSessionSucceeded( | 308 void PresentationServiceImpl::OnStartSessionSucceeded( |
| 310 int request_session_id, | 309 int request_session_id, |
| 311 const PresentationSessionInfo& session_info) { | 310 const PresentationSessionInfo& session_info) { |
| 312 if (request_session_id != start_session_request_id_) | 311 if (request_session_id != start_session_request_id_) |
| 313 return; | 312 return; |
| 314 | 313 |
| 315 CHECK(pending_start_session_cb_.get()); | 314 CHECK(pending_start_session_cb_.get()); |
| 316 pending_start_session_cb_->Run( | 315 pending_start_session_cb_->Run( |
| 317 blink::mojom::PresentationSessionInfo::From(session_info), | 316 blink::mojom::PresentationSessionInfo::From(session_info), |
| 318 blink::mojom::PresentationErrorPtr()); | 317 blink::mojom::PresentationErrorPtr()); |
| 319 ListenForConnectionStateChangeAndChangeState(session_info); | 318 ListenForConnectionStateChange(session_info); |
| 320 pending_start_session_cb_.reset(); | 319 pending_start_session_cb_.reset(); |
| 321 start_session_request_id_ = kInvalidRequestSessionId; | 320 start_session_request_id_ = kInvalidRequestSessionId; |
| 322 } | 321 } |
| 323 | 322 |
| 324 void PresentationServiceImpl::OnStartSessionError( | 323 void PresentationServiceImpl::OnStartSessionError( |
| 325 int request_session_id, | 324 int request_session_id, |
| 326 const PresentationError& error) { | 325 const PresentationError& error) { |
| 327 if (request_session_id != start_session_request_id_) | 326 if (request_session_id != start_session_request_id_) |
| 328 return; | 327 return; |
| 329 | 328 |
| 330 CHECK(pending_start_session_cb_.get()); | 329 CHECK(pending_start_session_cb_.get()); |
| 331 pending_start_session_cb_->Run(blink::mojom::PresentationSessionInfoPtr(), | 330 pending_start_session_cb_->Run(blink::mojom::PresentationSessionInfoPtr(), |
| 332 blink::mojom::PresentationError::From(error)); | 331 blink::mojom::PresentationError::From(error)); |
| 333 pending_start_session_cb_.reset(); | 332 pending_start_session_cb_.reset(); |
| 334 start_session_request_id_ = kInvalidRequestSessionId; | 333 start_session_request_id_ = kInvalidRequestSessionId; |
| 335 } | 334 } |
| 336 | 335 |
| 337 void PresentationServiceImpl::OnJoinSessionSucceeded( | 336 void PresentationServiceImpl::OnJoinSessionSucceeded( |
| 338 int request_session_id, | 337 int request_session_id, |
| 339 const PresentationSessionInfo& session_info) { | 338 const PresentationSessionInfo& session_info) { |
| 340 if (RunAndEraseJoinSessionMojoCallback( | 339 if (RunAndEraseJoinSessionMojoCallback( |
| 341 request_session_id, | 340 request_session_id, |
| 342 blink::mojom::PresentationSessionInfo::From(session_info), | 341 blink::mojom::PresentationSessionInfo::From(session_info), |
| 343 blink::mojom::PresentationErrorPtr())) { | 342 blink::mojom::PresentationErrorPtr())) { |
| 344 ListenForConnectionStateChangeAndChangeState(session_info); | 343 ListenForConnectionStateChange(session_info); |
| 345 } | 344 } |
| 346 } | 345 } |
| 347 | 346 |
| 348 void PresentationServiceImpl::OnJoinSessionError( | 347 void PresentationServiceImpl::OnJoinSessionError( |
| 349 int request_session_id, | 348 int request_session_id, |
| 350 const PresentationError& error) { | 349 const PresentationError& error) { |
| 351 RunAndEraseJoinSessionMojoCallback( | 350 RunAndEraseJoinSessionMojoCallback( |
| 352 request_session_id, blink::mojom::PresentationSessionInfoPtr(), | 351 request_session_id, blink::mojom::PresentationSessionInfoPtr(), |
| 353 blink::mojom::PresentationError::From(error)); | 352 blink::mojom::PresentationError::From(error)); |
| 354 } | 353 } |
| (...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 607 controller_delegate_ = nullptr; | 606 controller_delegate_ = nullptr; |
| 608 receiver_delegate_ = nullptr; | 607 receiver_delegate_ = nullptr; |
| 609 Reset(); | 608 Reset(); |
| 610 } | 609 } |
| 611 | 610 |
| 612 void PresentationServiceImpl::OnDefaultPresentationStarted( | 611 void PresentationServiceImpl::OnDefaultPresentationStarted( |
| 613 const PresentationSessionInfo& connection) { | 612 const PresentationSessionInfo& connection) { |
| 614 DCHECK(client_.get()); | 613 DCHECK(client_.get()); |
| 615 client_->OnDefaultSessionStarted( | 614 client_->OnDefaultSessionStarted( |
| 616 blink::mojom::PresentationSessionInfo::From(connection)); | 615 blink::mojom::PresentationSessionInfo::From(connection)); |
| 617 ListenForConnectionStateChangeAndChangeState(connection); | 616 ListenForConnectionStateChange(connection); |
| 618 } | 617 } |
| 619 | 618 |
| 620 PresentationServiceImpl::ScreenAvailabilityListenerImpl:: | 619 PresentationServiceImpl::ScreenAvailabilityListenerImpl:: |
| 621 ScreenAvailabilityListenerImpl(const GURL& availability_url, | 620 ScreenAvailabilityListenerImpl(const GURL& availability_url, |
| 622 PresentationServiceImpl* service) | 621 PresentationServiceImpl* service) |
| 623 : availability_url_(availability_url), service_(service) { | 622 : availability_url_(availability_url), service_(service) { |
| 624 DCHECK(service_); | 623 DCHECK(service_); |
| 625 DCHECK(service_->client_.get()); | 624 DCHECK(service_->client_.get()); |
| 626 } | 625 } |
| 627 | 626 |
| (...skipping 29 matching lines...) Expand all Loading... |
| 657 | 656 |
| 658 void PresentationServiceImpl::NewSessionCallbackWrapper::Run( | 657 void PresentationServiceImpl::NewSessionCallbackWrapper::Run( |
| 659 blink::mojom::PresentationSessionInfoPtr session, | 658 blink::mojom::PresentationSessionInfoPtr session, |
| 660 blink::mojom::PresentationErrorPtr error) { | 659 blink::mojom::PresentationErrorPtr error) { |
| 661 DCHECK(!callback_.is_null()); | 660 DCHECK(!callback_.is_null()); |
| 662 callback_.Run(std::move(session), std::move(error)); | 661 callback_.Run(std::move(session), std::move(error)); |
| 663 callback_.Reset(); | 662 callback_.Reset(); |
| 664 } | 663 } |
| 665 | 664 |
| 666 } // namespace content | 665 } // namespace content |
| OLD | NEW |