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

Side by Side 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 unified diff | Download patch
OLDNEW
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/renderer/presentation/presentation_dispatcher.h" 5 #include "content/renderer/presentation/presentation_dispatcher.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "content/common/presentation/presentation_service.mojom.h" 8 #include "content/common/presentation/presentation_service.mojom.h"
9 #include "content/public/common/presentation_constants.h" 9 #include "content/public/common/presentation_constants.h"
10 #include "content/public/common/service_registry.h" 10 #include "content/public/common/service_registry.h"
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after
176 176
177 message_request_queue_.push(make_linked_ptr(session_message)); 177 message_request_queue_.push(make_linked_ptr(session_message));
178 // Start processing request if only one in the queue. 178 // Start processing request if only one in the queue.
179 if (message_request_queue_.size() == 1) { 179 if (message_request_queue_.size() == 1) {
180 const linked_ptr<presentation::SessionMessage>& request = 180 const linked_ptr<presentation::SessionMessage>& request =
181 message_request_queue_.front(); 181 message_request_queue_.front();
182 DoSendMessage(*request); 182 DoSendMessage(*request);
183 } 183 }
184 } 184 }
185 185
186 void PresentationDispatcher::sendBlobData(
187 const blink::WebString& presentationUrl,
188 const blink::WebString& presentationId,
189 const uint8* data,
190 size_t length) {
191 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
192 if (length > kMaxPresentationSessionMessageSize) {
193 // TODO(crbug.com/459008): Same as in sendString().
194 LOG(WARNING) << "data size exceeded limit!";
195 return;
196 }
197
198 const std::vector<uint8> vector(data, data + length);
199 presentation::SessionMessage* session_message =
200 new presentation::SessionMessage();
201 session_message->presentation_url = presentationUrl.utf8();
202 session_message->presentation_id = presentationId.utf8();
203 session_message->type = presentation::PresentationMessageType::
204 PRESENTATION_MESSAGE_TYPE_BLOB;
205 session_message->data = mojo::Array<uint8>::From(vector);
206
207 message_request_queue_.push(make_linked_ptr(session_message));
208 if (message_request_queue_.size() == 1) {
209 const linked_ptr<presentation::SessionMessage>& request =
210 message_request_queue_.front();
211 DoSendMessage(*request);
212 }
213 }
214
186 void PresentationDispatcher::DoSendMessage( 215 void PresentationDispatcher::DoSendMessage(
187 const presentation::SessionMessage& session_message) { 216 const presentation::SessionMessage& session_message) {
188 ConnectToPresentationServiceIfNeeded(); 217 ConnectToPresentationServiceIfNeeded();
189 218
190 presentation::SessionMessagePtr message_request( 219 presentation::SessionMessagePtr message_request(
191 presentation::SessionMessage::New()); 220 presentation::SessionMessage::New());
192 message_request->presentation_url = session_message.presentation_url; 221 message_request->presentation_url = session_message.presentation_url;
193 message_request->presentation_id = session_message.presentation_id; 222 message_request->presentation_id = session_message.presentation_id;
194 message_request->type = session_message.type; 223 message_request->type = session_message.type;
195 if (session_message.type == presentation::PresentationMessageType:: 224 if (session_message.type == presentation::PresentationMessageType::
196 PRESENTATION_MESSAGE_TYPE_TEXT) { 225 PRESENTATION_MESSAGE_TYPE_TEXT) {
197 message_request->message = session_message.message; 226 message_request->message = session_message.message;
198 } else if (session_message.type == presentation::PresentationMessageType:: 227 } else {
199 PRESENTATION_MESSAGE_TYPE_ARRAY_BUFFER) { 228 // ArrayBuffer or Blob types.
200 message_request->data = mojo::Array<uint8>::From( 229 message_request->data = mojo::Array<uint8>::From(
201 session_message.data.storage()); 230 session_message.data.storage());
202 } 231 }
203 232
204 presentation_service_->SendSessionMessage( 233 presentation_service_->SendSessionMessage(
205 message_request.Pass(), 234 message_request.Pass(),
206 base::Bind(&PresentationDispatcher::HandleSendMessageRequests, 235 base::Bind(&PresentationDispatcher::HandleSendMessageRequests,
207 base::Unretained(this))); 236 base::Unretained(this)));
208 } 237 }
209 238
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
357 presentation_service_->ListenForSessionStateChange(base::Bind( 386 presentation_service_->ListenForSessionStateChange(base::Bind(
358 &PresentationDispatcher::OnSessionStateChange, 387 &PresentationDispatcher::OnSessionStateChange,
359 base::Unretained(this))); 388 base::Unretained(this)));
360 presentation_service_->ListenForSessionMessages( 389 presentation_service_->ListenForSessionMessages(
361 base::Bind(&PresentationDispatcher::OnSessionMessagesReceived, 390 base::Bind(&PresentationDispatcher::OnSessionMessagesReceived,
362 base::Unretained(this))); 391 base::Unretained(this)));
363 */ 392 */
364 } 393 }
365 394
366 } // namespace content 395 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698