Chromium Code Reviews| Index: content/renderer/presentation/presentation_dispatcher.cc |
| diff --git a/content/renderer/presentation/presentation_dispatcher.cc b/content/renderer/presentation/presentation_dispatcher.cc |
| index 29f5047f0b57ec0639ff4d9765a2c645beb807f9..caa8796e22ebd0cbb896128aecc6900d49e618f6 100644 |
| --- a/content/renderer/presentation/presentation_dispatcher.cc |
| +++ b/content/renderer/presentation/presentation_dispatcher.cc |
| @@ -54,6 +54,22 @@ GURL GetPresentationURLFromFrame(content::RenderFrame* frame) { |
| return url.is_valid() ? url : GURL(); |
| } |
| +presentation::SessionMessage* GetMojoSessionMessage( |
| + const blink::WebString& presentationUrl, |
| + const blink::WebString& presentationId, |
| + presentation::PresentationMessageType type, |
| + const uint8* data, |
| + size_t length) { |
| + presentation::SessionMessage* session_message = |
| + new presentation::SessionMessage(); |
| + session_message->presentation_url = presentationUrl.utf8(); |
| + session_message->presentation_id = presentationId.utf8(); |
| + session_message->type = type; |
| + const std::vector<uint8> vector(data, data + length); |
| + session_message->data = mojo::Array<uint8>::From(vector); |
| + return session_message; |
| +} |
| + |
| } // namespace |
| namespace content { |
| @@ -165,15 +181,11 @@ void PresentationDispatcher::sendArrayBuffer( |
| return; |
| } |
| - const std::vector<uint8> vector(data, data + length); |
| presentation::SessionMessage* session_message = |
| - new presentation::SessionMessage(); |
| - session_message->presentation_url = presentationUrl.utf8(); |
| - session_message->presentation_id = presentationId.utf8(); |
| - session_message->type = presentation::PresentationMessageType:: |
| - PRESENTATION_MESSAGE_TYPE_ARRAY_BUFFER; |
| - session_message->data = mojo::Array<uint8>::From(vector); |
| - |
| + GetMojoSessionMessage(presentationUrl, presentationId, |
| + presentation::PresentationMessageType:: |
|
mark a. foltz
2015/06/05 22:40:56
Add using presentation::PresentationMessageType in
USE s.singapati at gmail.com
2015/06/08 13:04:19
Done.
|
| + PRESENTATION_MESSAGE_TYPE_ARRAY_BUFFER, |
| + data, length); |
| message_request_queue_.push(make_linked_ptr(session_message)); |
| // Start processing request if only one in the queue. |
| if (message_request_queue_.size() == 1) { |
| @@ -183,22 +195,57 @@ void PresentationDispatcher::sendArrayBuffer( |
| } |
| } |
| +void PresentationDispatcher::sendBlobData( |
| + const blink::WebString& presentationUrl, |
| + const blink::WebString& presentationId, |
| + const uint8* data, |
| + size_t length) { |
| + DCHECK(data); |
| + if (length > kMaxPresentationSessionMessageSize) { |
| + // TODO(crbug.com/459008): Same as in sendString(). |
| + LOG(WARNING) << "data size exceeded limit!"; |
| + return; |
| + } |
| + |
| + presentation::SessionMessage* session_message = GetMojoSessionMessage( |
| + presentationUrl, presentationId, |
| + presentation::PresentationMessageType::PRESENTATION_MESSAGE_TYPE_BLOB, |
| + data, length); |
| + message_request_queue_.push(make_linked_ptr(session_message)); |
| + if (message_request_queue_.size() == 1) { |
| + const linked_ptr<presentation::SessionMessage>& request = |
| + message_request_queue_.front(); |
| + DoSendMessage(*request); |
| + } |
| +} |
| + |
| void PresentationDispatcher::DoSendMessage( |
| const presentation::SessionMessage& session_message) { |
| ConnectToPresentationServiceIfNeeded(); |
| - |
| presentation::SessionMessagePtr message_request( |
| presentation::SessionMessage::New()); |
| message_request->presentation_url = session_message.presentation_url; |
| message_request->presentation_id = session_message.presentation_id; |
| message_request->type = session_message.type; |
| - if (session_message.type == presentation::PresentationMessageType:: |
| - PRESENTATION_MESSAGE_TYPE_TEXT) { |
| - message_request->message = session_message.message; |
| - } else if (session_message.type == presentation::PresentationMessageType:: |
| - PRESENTATION_MESSAGE_TYPE_ARRAY_BUFFER) { |
| - message_request->data = mojo::Array<uint8>::From( |
| - session_message.data.storage()); |
| + switch (session_message.type) { |
| + case presentation::PresentationMessageType:: |
| + PRESENTATION_MESSAGE_TYPE_TEXT: { |
| + message_request->message = session_message.message; |
| + break; |
| + } |
| + case presentation::PresentationMessageType:: |
| + PRESENTATION_MESSAGE_TYPE_ARRAY_BUFFER: |
| + case presentation::PresentationMessageType:: |
| + PRESENTATION_MESSAGE_TYPE_BLOB: { |
| + message_request->data = |
| + mojo::Array<uint8>::From(session_message.data.storage()); |
| + break; |
| + } |
| + default: { |
| + NOTREACHED() << "Invalid presentation message type " |
| + << session_message.type; |
| + break; |
| + } |
| } |
| presentation_service_->SendSessionMessage( |