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 e22e9149eb2e86ce40775bb7405deac5c7bfea83..34d315b8662088752b76e3bbf83d8a728efc5448 100644 |
--- a/content/browser/presentation/presentation_service_impl.cc |
+++ b/content/browser/presentation/presentation_service_impl.cc |
@@ -313,6 +313,39 @@ void PresentationServiceImpl::SetDefaultPresentationURL( |
DoSetDefaultPresentationUrl(new_default_url, default_presentation_id); |
} |
+void PresentationServiceImpl::SendMessage( |
+ presentation::SessionMessagePtr message_request, |
+ const SendMessageMojoCallback& callback) { |
+ DVLOG(2) << "SendMessage"; |
+ DCHECK(!message_request.is_null()); |
+ if (!delegate_) { |
+ callback.Run(true); |
whywhat
2015/04/30 15:50:58
nit: did you want to Run(false) here?
USE s.singapati at gmail.com
2015/05/01 10:30:25
Yes.
USE s.singapati at gmail.com
2015/05/04 16:40:28
Done.
|
+ return; |
+ } |
+ |
+ // send_message_cb_ptr_ should be null by now. |
+ DCHECK(!send_message_cb_ptr_); |
imcheng (use chromium acct)
2015/04/30 20:11:29
instead of DCHECKing and/or dropping the old callb
USE s.singapati at gmail.com
2015/05/04 16:40:28
Done.
|
+ send_message_cb_ptr_.reset(new SendMessageMojoCallback(callback)); |
+ |
+ delegate_->SendMessage( |
+ render_process_id_, |
+ render_frame_id_, |
+ new PresentationMessageRequest( |
+ message_request->presentation_url, |
+ message_request->presentation_id, |
+ static_cast<PresentationMessageType>(message_request->type), |
whywhat
2015/04/30 15:50:58
nit: it'd be safer to have a static function that
imcheng (use chromium acct)
2015/04/30 20:11:29
To add to what Anton said, I think it would be goo
USE s.singapati at gmail.com
2015/05/04 16:40:28
Done for PresentationMessageType conversion.
Need
USE s.singapati at gmail.com
2015/05/05 14:26:36
Done.
|
+ message_request->message, |
+ message_request->data), |
+ base::Bind(&PresentationServiceImpl::OnSendMessageCallback, |
+ weak_factory_.GetWeakPtr())); |
+} |
+ |
+void PresentationServiceImpl::OnSendMessageCallback() { |
+ DCHECK(send_message_cb_ptr_); |
imcheng (use chromium acct)
2015/04/30 20:11:29
Hmm, Reset() could have occurred between SendMessa
USE s.singapati at gmail.com
2015/05/04 16:40:27
Done.
|
+ send_message_cb_ptr_->Run(true); |
+ send_message_cb_ptr_.reset(); |
+} |
+ |
void PresentationServiceImpl::CloseSession( |
const mojo::String& presentation_url, |
const mojo::String& presentation_id) { |
@@ -383,6 +416,12 @@ void PresentationServiceImpl::Reset() { |
queued_start_session_requests_.clear(); |
FlushNewSessionCallbacks(); |
default_session_start_context_.reset(); |
+ if (send_message_cb_ptr_) { |
+ // Run the callback with false, indicating the renderer to stop sending |
+ // the requests and invalidate all pending requests. |
+ send_message_cb_ptr_->Run(false); |
+ send_message_cb_ptr_.reset(); |
+ } |
} |
// static |