OLD | NEW |
---|---|
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 Loading... | |
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 Loading... | |
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 |
OLD | NEW |