Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "config.h" | 5 #include "config.h" |
| 6 #include "modules/presentation/PresentationSession.h" | 6 #include "modules/presentation/PresentationSession.h" |
| 7 | 7 |
| 8 #include "core/dom/DOMArrayBuffer.h" | 8 #include "core/dom/DOMArrayBuffer.h" |
| 9 #include "core/dom/DOMArrayBufferView.h" | 9 #include "core/dom/DOMArrayBufferView.h" |
| 10 #include "core/dom/Document.h" | 10 #include "core/dom/Document.h" |
| (...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 214 case MessageTypeBlob: | 214 case MessageTypeBlob: |
| 215 ASSERT(!m_blobLoader); | 215 ASSERT(!m_blobLoader); |
| 216 m_blobLoader = new BlobLoader(message->blobDataHandle, this); | 216 m_blobLoader = new BlobLoader(message->blobDataHandle, this); |
| 217 break; | 217 break; |
| 218 } | 218 } |
| 219 } | 219 } |
| 220 } | 220 } |
| 221 | 221 |
| 222 void PresentationSession::didReceiveTextMessage(const String& message) | 222 void PresentationSession::didReceiveTextMessage(const String& message) |
| 223 { | 223 { |
| 224 if (m_state == WebPresentationSessionState::Disconnected) | |
| 225 return; | |
| 226 | |
| 224 dispatchEvent(MessageEvent::create(message)); | 227 dispatchEvent(MessageEvent::create(message)); |
| 225 } | 228 } |
| 226 | 229 |
| 230 void PresentationSession::didReceiveArrayBufferMessage(const uint8_t* data, size _t length) | |
| 231 { | |
| 232 if (m_state == WebPresentationSessionState::Disconnected) | |
| 233 return; | |
| 234 | |
| 235 RefPtr<DOMArrayBuffer> buffer = DOMArrayBuffer::create(data, length); | |
| 236 dispatchEvent(MessageEvent::create(buffer.release())); | |
| 237 } | |
| 238 | |
| 239 void PresentationSession::didReceiveBlobMessage(const uint8_t* data, size_t leng th) | |
| 240 { | |
| 241 if (m_state == WebPresentationSessionState::Disconnected) | |
| 242 return; | |
| 243 | |
| 244 RefPtr<RawData> rawData = RawData::create(); | |
| 245 rawData->mutableData()->resize(length); | |
| 246 memcpy(rawData->mutableData()->data(), data, length); | |
|
mark a. foltz
2015/07/06 21:19:44
Can you just call BlobData::appendBytes(data, leng
USE s.singapati at gmail.com
2015/07/07 15:00:32
Done. Manual tested.
| |
| 247 OwnPtr<BlobData> blobData = BlobData::create(); | |
| 248 blobData->appendData(rawData.release(), 0, BlobDataItem::toEndOfFile); | |
| 249 Blob* blob = Blob::create(BlobDataHandle::create(blobData.release(), length) ); | |
| 250 dispatchEvent(MessageEvent::create(blob)); | |
| 251 } | |
| 252 | |
| 227 void PresentationSession::close() | 253 void PresentationSession::close() |
| 228 { | 254 { |
| 229 if (m_state != WebPresentationSessionState::Connected) | 255 if (m_state != WebPresentationSessionState::Connected) |
| 230 return; | 256 return; |
| 231 PresentationController* controller = presentationController(); | 257 PresentationController* controller = presentationController(); |
| 232 if (controller) | 258 if (controller) |
| 233 controller->closeSession(m_url, m_id); | 259 controller->closeSession(m_url, m_id); |
| 234 | 260 |
| 235 // Cancel current Blob loading if any. | 261 // Cancel current Blob loading if any. |
| 236 if (m_blobLoader) { | 262 if (m_blobLoader) { |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 282 { | 308 { |
| 283 ASSERT(!m_messages.isEmpty() && m_messages.first()->type == MessageTypeBlob) ; | 309 ASSERT(!m_messages.isEmpty() && m_messages.first()->type == MessageTypeBlob) ; |
| 284 // FIXME: generate error message? | 310 // FIXME: generate error message? |
| 285 // Ignore the current failed blob item and continue with next items. | 311 // Ignore the current failed blob item and continue with next items. |
| 286 m_messages.removeFirst(); | 312 m_messages.removeFirst(); |
| 287 m_blobLoader.clear(); | 313 m_blobLoader.clear(); |
| 288 handleMessageQueue(); | 314 handleMessageQueue(); |
| 289 } | 315 } |
| 290 | 316 |
| 291 } // namespace blink | 317 } // namespace blink |
| OLD | NEW |