Index: Source/modules/serviceworkers/FetchManager.cpp |
diff --git a/Source/modules/serviceworkers/FetchManager.cpp b/Source/modules/serviceworkers/FetchManager.cpp |
index 3cbd4b5bc3128793e454850f1b721520ea0ff00a..03f5c33f0ebc552b09ff19473ceb0039003967f4 100644 |
--- a/Source/modules/serviceworkers/FetchManager.cpp |
+++ b/Source/modules/serviceworkers/FetchManager.cpp |
@@ -258,6 +258,7 @@ void FetchManager::Loader::performNetworkError() |
void FetchManager::Loader::performHTTPFetch() |
{ |
+ ASSERT(m_request->url().protocolIsInHTTPFamily()); |
// CORS preflight fetch procedure is implemented inside DocumentThreadableLoader. |
// "1. Let |HTTPRequest| be a copy of |request|, except that |HTTPRequest|'s |
@@ -273,6 +274,15 @@ void FetchManager::Loader::performHTTPFetch() |
request.addHTTPHeaderField(AtomicString(list[i]->first), AtomicString(list[i]->second)); |
} |
+ if (m_request->method() != "GET" && m_request->method() != "HEAD") { |
+ RefPtr<BlobDataHandle> blobDataHandle = m_request->blobDataHandle(); |
+ if (blobDataHandle.get()) { |
+ RefPtr<FormData> httpBody(FormData::create()); |
+ httpBody->appendBlob(blobDataHandle->uuid(), blobDataHandle); |
+ request.setHTTPBody(httpBody); |
+ } |
+ } |
+ |
// "2. Append `Referer`/empty byte sequence, if |HTTPRequest|'s |referrer| |
// is none, and `Referer`/|HTTPRequest|'s referrer, serialized and utf-8 |
// encoded, otherwise, to HTTPRequest's header list. |