Chromium Code Reviews| Index: content/browser/presentation/presentation_service_impl.cc |
| diff --git a/content/browser/presentation/presentation_service_impl.cc b/content/browser/presentation/presentation_service_impl.cc |
| index 900d186b1f50d6c7723a55a93982fcffa2fda26c..deefe7ddc827f2470e37872a5a3dced095eaefa3 100644 |
| --- a/content/browser/presentation/presentation_service_impl.cc |
| +++ b/content/browser/presentation/presentation_service_impl.cc |
| @@ -144,6 +144,8 @@ PresentationServiceImpl::PresentationServiceImpl( |
| } |
| PresentationServiceImpl::~PresentationServiceImpl() { |
| + DVLOG(2) << "~PresentationServiceImpl: " << render_process_id_ << ", " |
|
mark a. foltz
2016/10/08 00:33:42
__FUNCTION__ as is done elsewhere in this patch?
zhaobin
2016/10/12 02:27:33
Done.
|
| + << render_frame_id_; |
| if (delegate_) |
| delegate_->RemoveObserver(render_process_id_, render_frame_id_); |
| } |
| @@ -178,6 +180,12 @@ void PresentationServiceImpl::SetClient( |
| DCHECK(!client_.get()); |
| // TODO(imcheng): Set ErrorHandler to listen for errors. |
| client_ = std::move(client); |
| + |
| + if (delegate_) { |
| + delegate_->RegisterReceiverAvailableCallback( |
| + base::Bind(&PresentationServiceImpl::OnReceiverConnectionAvailable, |
| + weak_factory_.GetWeakPtr())); |
| + } |
| } |
| void PresentationServiceImpl::ListenForScreenAvailability(const GURL& url) { |
| @@ -393,7 +401,10 @@ void PresentationServiceImpl::SendSessionMessage( |
| blink::mojom::PresentationSessionInfoPtr session, |
| blink::mojom::SessionMessagePtr session_message, |
| const SendSessionMessageCallback& callback) { |
| - DVLOG(2) << "SendSessionMessage"; |
| + DVLOG(2) << "SendSessionMessage" |
| + << " [url]: " << session->url << ", [id]: " << session->id |
| + << ", [process id]: " << render_process_id_ |
| + << ", [render frame id]: " << render_frame_id_; |
| DCHECK(!session_message.is_null()); |
| // send_message_callback_ should be null by now, otherwise resetting of |
| // send_message_callback_ with new callback will drop the old callback. |
| @@ -474,13 +485,30 @@ void PresentationServiceImpl::ListenForSessionMessages( |
| weak_factory_.GetWeakPtr(), session_info)); |
| } |
| +void PresentationServiceImpl::SetPresentationConnection( |
| + blink::mojom::PresentationSessionInfoPtr session, |
| + blink::mojom::PresentationConnectionPtr connection) { |
| + DVLOG(2) << "SetPresentationConnection"; |
| + |
| + if (!delegate_) |
| + return; |
| + |
| + PresentationSessionInfo session_info(session.To<PresentationSessionInfo>()); |
| + delegate_->RegisterOffscreenPresentationConnection( |
| + render_process_id_, render_frame_id_, session_info, |
| + std::move(connection)); |
| +} |
| + |
| void PresentationServiceImpl::OnSessionMessages( |
| const PresentationSessionInfo& session, |
| const ScopedVector<PresentationSessionMessage>& messages, |
| bool pass_ownership) { |
| DCHECK(client_); |
| - |
| - DVLOG(2) << "OnSessionMessages"; |
| + DVLOG(2) << "OnSessionMessages" |
| + << " [url]: " << session.presentation_url |
| + << ", [id]: " << session.presentation_id |
| + << ", [process id]: " << render_process_id_ |
| + << ", [render frame id]: " << render_frame_id_; |
| std::vector<blink::mojom::SessionMessagePtr> mojo_messages(messages.size()); |
| std::transform(messages.begin(), messages.end(), mojo_messages.begin(), |
| [pass_ownership](PresentationSessionMessage* message) { |
| @@ -492,6 +520,17 @@ void PresentationServiceImpl::OnSessionMessages( |
| std::move(mojo_messages)); |
| } |
| +void PresentationServiceImpl::OnReceiverConnectionAvailable( |
| + const content::PresentationSessionInfo& session_info, |
| + PresentationConnectionPtr&& controller) { |
| + DVLOG(2) << "PresentationServiceImpl::OnReceiverConnectionAvailable"; |
| + DVLOG(2) << "controller: " << controller; |
| + |
| + client_->OnReceiverConnectionAvailable( |
| + blink::mojom::PresentationSessionInfo::From(session_info), |
| + std::move(controller)); |
| +} |
| + |
| void PresentationServiceImpl::DidNavigateAnyFrame( |
| content::RenderFrameHost* render_frame_host, |
| const content::LoadCommittedDetails& details, |