void WebSocketImpl::didReceiveBinaryData(PassOwnPtr<Vector<char> > binaryData) { #if ENABLE(WEB_SOCKETS) switch (m_binaryType) { case BinaryTypeData: case BinaryTypeBlob: // FIXME: Handle Blob after supporting WebBlob. m_client->didReceiveBinaryData(WebData(binaryData->data(), binaryData->size())); break; case BinaryTypeArrayBuffer: m_client->didReceiveArrayBuffer(WebArrayBuffer(ArrayBuffer::create(binaryData->data(), binaryData->size()))); break; } #else ASSERT_NOT_REACHED(); #endif }
void WebSocket::didReceiveBinaryData(PassOwnPtr<Vector<char> > binaryData) { WTF_LOG(Network, "WebSocket %p didReceiveBinaryData() %lu byte binary message", this, static_cast<unsigned long>(binaryData->size())); switch (m_binaryType) { case BinaryTypeBlob: { size_t size = binaryData->size(); RefPtr<RawData> rawData = RawData::create(); binaryData->swap(*rawData->mutableData()); OwnPtr<BlobData> blobData = BlobData::create(); blobData->appendData(rawData.release(), 0, BlobDataItem::toEndOfFile); RefPtrWillBeRawPtr<Blob> blob = Blob::create(BlobDataHandle::create(blobData.release(), size)); m_eventQueue->dispatch(MessageEvent::create(blob.release(), SecurityOrigin::create(m_url)->toString())); break; } case BinaryTypeArrayBuffer: RefPtr<ArrayBuffer> arrayBuffer = ArrayBuffer::create(binaryData->data(), binaryData->size()); if (!arrayBuffer) { // Failed to allocate an ArrayBuffer. We need to crash the renderer // since there's no way defined in the spec to tell this to the // user. CRASH(); } m_eventQueue->dispatch(MessageEvent::create(arrayBuffer.release(), SecurityOrigin::create(m_url)->toString())); break; } }
// For data url's void WebUrlLoaderClient::didReceiveDataUrl(PassOwnPtr<std::string> str) { if (!isActive() || !str->size()) return; // didReceiveData will take a copy of the data m_resourceHandle->client()->didReceiveData(m_resourceHandle.get(), str->data(), str->size(), str->size()); }
void WorkerThreadableWebSocketChannel::mainThreadSendArrayBuffer(ScriptExecutionContext* context, Peer* peer, PassOwnPtr<Vector<char> > data) { ASSERT(isMainThread()); ASSERT_UNUSED(context, context->isDocument()); ASSERT(peer); RefPtr<ArrayBuffer> arrayBuffer = ArrayBuffer::create(data->data(), data->size()); peer->send(*arrayBuffer); }
void WebSocketImpl::didReceiveBinaryData(PassOwnPtr<Vector<char> > binaryData) { switch (m_binaryType) { case BinaryTypeBlob: // FIXME: Handle Blob after supporting WebBlob. break; case BinaryTypeArrayBuffer: m_client->didReceiveArrayBuffer(WebArrayBuffer(ArrayBuffer::create(binaryData->data(), binaryData->size()))); break; } }
void WorkerThreadableWebSocketChannel::Peer::sendArrayBuffer(PassOwnPtr<Vector<char> > data) { ASSERT(isMainThread()); if (!m_mainWebSocketChannel || !m_workerClientWrapper) { m_syncHelper->setSendRequestResult(WebSocketChannel::SendFail); } else { RefPtr<ArrayBuffer> binaryData = ArrayBuffer::create(data->data(), data->size()); WebSocketChannel::SendResult sendRequestResult = m_mainWebSocketChannel->send(*binaryData, 0, binaryData->byteLength()); m_syncHelper->setSendRequestResult(sendRequestResult); } m_syncHelper->signalWorkerThread(); }
void WebSocket::didReceiveBinaryData(PassOwnPtr<Vector<char>> binaryData) { LOG(Network, "WebSocket %p didReceiveBinaryData() %lu byte binary message", this, static_cast<unsigned long>(binaryData->size())); switch (m_binaryType) { case BinaryTypeBlob: { // FIXME: We just received the data from NetworkProcess, and are sending it back. This is inefficient. RefPtr<Blob> blob = Blob::create(std::move(*binaryData), emptyString()); dispatchEvent(MessageEvent::create(blob.release(), SecurityOrigin::create(m_url)->toString())); break; } case BinaryTypeArrayBuffer: dispatchEvent(MessageEvent::create(ArrayBuffer::create(binaryData->data(), binaryData->size()), SecurityOrigin::create(m_url)->toString())); break; } }
void WebSocket::didReceiveBinaryData(PassOwnPtr<Vector<char> > binaryData) { switch (m_binaryType) { case BinaryTypeBlob: { size_t size = binaryData->size(); RefPtr<RawData> rawData = RawData::create(); binaryData->swap(*rawData->mutableData()); OwnPtr<BlobData> blobData = BlobData::create(); blobData->appendData(rawData.release(), 0, BlobDataItem::toEndOfFile); RefPtr<Blob> blob = Blob::create(blobData.release(), size); dispatchEvent(MessageEvent::create(blob.release())); break; } case BinaryTypeArrayBuffer: dispatchEvent(MessageEvent::create(ArrayBuffer::create(binaryData->data(), binaryData->size()))); break; } }
void WebSocket::didReceiveBinaryData(PassOwnPtr<Vector<char> > binaryData) { LOG(Network, "WebSocket %p didReceiveBinaryData() %lu byte binary message", this, static_cast<unsigned long>(binaryData->size())); switch (m_binaryType) { case BinaryTypeBlob: { size_t size = binaryData->size(); RefPtr<RawData> rawData = RawData::create(); binaryData->swap(*rawData->mutableData()); OwnPtr<BlobData> blobData = BlobData::create(); blobData->appendData(rawData.release(), 0, BlobDataItem::toEndOfFile); RefPtr<Blob> blob = Blob::create(blobData.release(), size); dispatchEvent(MessageEvent::create(blob.release(), SecurityOrigin::create(m_url)->toString())); break; } case BinaryTypeArrayBuffer: dispatchEvent(MessageEvent::create(ArrayBuffer::create(binaryData->data(), binaryData->size()), SecurityOrigin::create(m_url)->toString())); break; } }
static void workerGlobalScopeDidReceiveData(ScriptExecutionContext* context, RefPtr<ThreadableLoaderClientWrapper> workerClientWrapper, PassOwnPtr<Vector<char> > vectorData) { ASSERT_UNUSED(context, context->isWorkerGlobalScope()); workerClientWrapper->didReceiveData(vectorData->data(), vectorData->size()); }
void BackgroundHTMLParser::appendRawBytesFromMainThread(PassOwnPtr<Vector<char>> buffer) { ASSERT(m_decoder); updateDocument(m_decoder->decode(buffer->data(), buffer->size())); }