Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(41)

Unified Diff: Source/modules/fetch/FetchBlobDataConsumerHandle.cpp

Issue 1265413002: Introduce FetchFormDataConsumerHandle. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: Source/modules/fetch/FetchBlobDataConsumerHandle.cpp
diff --git a/Source/modules/fetch/FetchBlobDataConsumerHandle.cpp b/Source/modules/fetch/FetchBlobDataConsumerHandle.cpp
index 9005fb551944f0fc283f8c371eaa5be99f5a03fb..150c4370097b744f4c9ff636ff8505d5e7f81f00 100644
--- a/Source/modules/fetch/FetchBlobDataConsumerHandle.cpp
+++ b/Source/modules/fetch/FetchBlobDataConsumerHandle.cpp
@@ -351,7 +351,7 @@ public:
return Done;
m_readerContext->ensureStartLoader();
Result r = m_reader->read(data, size, flags, readSize);
- if (r != ShouldWait && !(r == Ok && *readSize == 0)) {
+ if (!(size == 0 && (r == Ok || r == ShouldWait))) {
// We read non-empty data, so we cannot use the blob data
// handle which represents the whole data.
m_readerContext->clearBlobDataHandleForDrain();
@@ -364,13 +364,8 @@ public:
if (m_readerContext->drained())
return Done;
m_readerContext->ensureStartLoader();
- Result r = m_reader->beginRead(buffer, flags, available);
- if (r != ShouldWait && !(r == Ok && *available == 0)) {
- // We read non-empty data, so we cannot use the blob data
- // handle which represents the whole data.
- m_readerContext->clearBlobDataHandleForDrain();
- }
- return r;
+ m_readerContext->clearBlobDataHandleForDrain();
+ return m_reader->beginRead(buffer, flags, available);
}
Result endRead(size_t readSize) override
@@ -390,6 +385,16 @@ public:
return blobDataHandle.release();
}
+ PassRefPtr<FormData> drainAsFormData() override
+ {
+ RefPtr<BlobDataHandle> handle = drainAsBlobDataHandle(AllowBlobWithInvalidSize);
+ if (!handle)
+ return nullptr;
+ RefPtr<FormData> formData = FormData::create();
+ formData->appendBlob(handle->uuid(), handle);
+ return formData.release();
+ }
+
private:
RefPtr<ReaderContext> m_readerContext;
OwnPtr<WebDataConsumerHandle::Reader> m_reader;
« no previous file with comments | « Source/modules/fetch/FetchBlobDataConsumerHandle.h ('k') | Source/modules/fetch/FetchBlobDataConsumerHandleTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698