void XMLHttpRequest::send(Blob* body, ExceptionCode& ec) { if (!initSend(ec)) return; if (m_method != "GET" && m_method != "HEAD" && m_url.protocolIsInHTTPFamily()) { const String& contentType = getRequestHeader("Content-Type"); if (contentType.isEmpty()) { const String& blobType = body->type(); if (!blobType.isEmpty() && isValidContentType(blobType)) setRequestHeaderInternal("Content-Type", blobType); else { // From FileAPI spec, whenever media type cannot be determined, empty string must be returned. setRequestHeaderInternal("Content-Type", ""); } } // FIXME: add support for uploading bundles. m_requestEntityBody = FormData::create(); if (body->isFile()) m_requestEntityBody->appendFile(toFile(body)->path()); #if ENABLE(BLOB) else m_requestEntityBody->appendBlob(body->url()); #endif } createRequest(ec); }
bool BeaconLoader::sendBeacon(LocalFrame* frame, int allowance, const KURL& beaconURL, PassRefPtrWillBeRawPtr<Blob>& data, int& payloadLength) { ASSERT(data); unsigned long long entitySize = data->size(); if (allowance > 0 && static_cast<unsigned long long>(allowance) < entitySize) return false; ResourceRequest request(beaconURL); prepareRequest(frame, request); RefPtr<FormData> entityBody = FormData::create(); if (data->hasBackingFile()) entityBody->appendFile(toFile(data.get())->path()); else entityBody->appendBlob(data->uuid(), data->blobDataHandle()); request.setHTTPBody(entityBody.release()); AtomicString contentType; const String& blobType = data->type(); if (!blobType.isEmpty() && isValidContentType(blobType)) request.setHTTPContentType(AtomicString(contentType)); issueRequest(frame, request); payloadLength = entitySize; return true; }
void XMLHttpRequest::send(Blob* body, ExceptionState& exceptionState) { WTF_LOG(Network, "XMLHttpRequest %p send() Blob '%s'", this, body->uuid().utf8().data()); if (!initSend(exceptionState)) return; if (areMethodAndURLValidForSend()) { if (getRequestHeader("Content-Type").isEmpty()) { const String& blobType = body->type(); if (!blobType.isEmpty() && isValidContentType(blobType)) setRequestHeaderInternal("Content-Type", AtomicString(blobType)); else { // From FileAPI spec, whenever media type cannot be determined, empty string must be returned. setRequestHeaderInternal("Content-Type", ""); } } // FIXME: add support for uploading bundles. m_requestEntityBody = FormData::create(); if (body->hasBackingFile()) m_requestEntityBody->appendFile(toFile(body)->path()); else m_requestEntityBody->appendBlob(body->uuid(), body->blobDataHandle()); } createRequest(exceptionState); }
void XMLHttpRequest::send(Blob* body, ExceptionCode& ec) { if (!initSend(ec)) return; if (m_method != "GET" && m_method != "HEAD" && m_url.protocolIsInHTTPFamily()) { if (!m_requestHeaders.contains(HTTPHeaderName::ContentType)) { const String& blobType = body->type(); if (!blobType.isEmpty() && isValidContentType(blobType)) m_requestHeaders.set(HTTPHeaderName::ContentType, blobType); else { // From FileAPI spec, whenever media type cannot be determined, empty string must be returned. m_requestHeaders.set(HTTPHeaderName::ContentType, emptyString()); } } m_requestEntityBody = FormData::create(); m_requestEntityBody->appendBlob(body->url()); } createRequest(ec); }
ExceptionOr<void> XMLHttpRequest::send(Blob& body) { if (auto result = prepareToSend()) return WTFMove(result.value()); if (m_method != "GET" && m_method != "HEAD" && m_url.protocolIsInHTTPFamily()) { if (!m_requestHeaders.contains(HTTPHeaderName::ContentType)) { const String& blobType = body.type(); if (!blobType.isEmpty() && isValidContentType(blobType)) m_requestHeaders.set(HTTPHeaderName::ContentType, blobType); else { // From FileAPI spec, whenever media type cannot be determined, empty string must be returned. m_requestHeaders.set(HTTPHeaderName::ContentType, emptyString()); } } m_requestEntityBody = FormData::create(); m_requestEntityBody->appendBlob(body.url()); } return createRequest(); }