Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2665)

Unified Diff: content/renderer/presentation/presentation_dispatcher.cc

Issue 1140713005: [PresentationAPI] Implements send API for Blob data from WebPresentationClient (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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..bee97c7d85bc19e465c5168bf19dc8f2b130b3e0 100644
--- a/content/renderer/presentation/presentation_dispatcher.cc
+++ b/content/renderer/presentation/presentation_dispatcher.cc
@@ -183,6 +183,35 @@ void PresentationDispatcher::sendArrayBuffer(
}
}
+void PresentationDispatcher::sendBlobData(
+ const blink::WebString& presentationUrl,
+ const blink::WebString& presentationId,
+ const uint8* data,
+ size_t length) {
+ DCHECK(data);
imcheng (use chromium acct) 2015/05/18 18:24:48 This code looks mostly identical to sendArrayBuffe
USE s.singapati at gmail.com 2015/05/20 19:28:42 Done. Added helper method that returns new Session
+ if (length > kMaxPresentationSessionMessageSize) {
+ // TODO(crbug.com/459008): Same as in sendString().
+ LOG(WARNING) << "data size exceeded limit!";
+ 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_BLOB;
+ session_message->data = mojo::Array<uint8>::From(vector);
+
+ 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();
@@ -195,8 +224,8 @@ void PresentationDispatcher::DoSendMessage(
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) {
+ } else {
+ // ArrayBuffer or Blob types.
message_request->data = mojo::Array<uint8>::From(
session_message.data.storage());
}

Powered by Google App Engine
This is Rietveld 408576698