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

Unified Diff: Source/modules/serviceworkers/Body.cpp

Issue 555443002: [Fetch API] Put body members directly on Response/Request (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: incorporated yhirano and jsbell's comment Created 6 years, 3 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/serviceworkers/Body.cpp
diff --git a/Source/modules/serviceworkers/FetchBodyStream.cpp b/Source/modules/serviceworkers/Body.cpp
similarity index 68%
rename from Source/modules/serviceworkers/FetchBodyStream.cpp
rename to Source/modules/serviceworkers/Body.cpp
index d33b2c7c87407639db73ec241f4c87a2d9db22c5..c4e63717535bee815e6ff778ee9d51729e14c650 100644
--- a/Source/modules/serviceworkers/FetchBodyStream.cpp
+++ b/Source/modules/serviceworkers/Body.cpp
@@ -3,7 +3,7 @@
// found in the LICENSE file.
#include "config.h"
-#include "modules/serviceworkers/FetchBodyStream.h"
+#include "modules/serviceworkers/Body.h"
#include "bindings/core/v8/ScriptPromiseResolver.h"
#include "bindings/core/v8/ScriptState.h"
@@ -18,19 +18,12 @@
namespace blink {
-FetchBodyStream* FetchBodyStream::create(ExecutionContext* context, PassRefPtr<BlobDataHandle> blobDataHandle)
+ScriptPromise Body::readAsync(ScriptState* scriptState, ResponseType type)
{
- FetchBodyStream* fetchBodyStream = new FetchBodyStream(context, blobDataHandle);
- fetchBodyStream->suspendIfNeeded();
- return fetchBodyStream;
-}
-
-ScriptPromise FetchBodyStream::readAsync(ScriptState* scriptState, ResponseType type)
-{
- if (m_hasRead)
+ if (m_bodyUsed)
return ScriptPromise::reject(scriptState, V8ThrowException::createTypeError("Already read", scriptState->isolate()));
- m_hasRead = true;
+ m_bodyUsed = true;
m_responseType = type;
ASSERT(!m_resolver);
@@ -38,21 +31,27 @@ ScriptPromise FetchBodyStream::readAsync(ScriptState* scriptState, ResponseType
ScriptPromise promise = m_resolver->promise();
FileReaderLoader::ReadType readType = FileReaderLoader::ReadAsText;
-
+ RefPtr<BlobDataHandle> blobHandle = blobDataHandle();
+ if (!blobHandle.get()) {
+ blobHandle = BlobDataHandle::create(BlobData::create(), 0);
+ }
switch (type) {
case ResponseAsArrayBuffer:
readType = FileReaderLoader::ReadAsArrayBuffer;
break;
case ResponseAsBlob:
- if (m_blobDataHandle->size() != kuint64max) {
- // If the size of |m_blobDataHandle| is set correctly, creates Blob from it.
- m_resolver->resolve(Blob::create(m_blobDataHandle));
+ if (blobHandle->size() != kuint64max) {
+ // If the size of |blobHandle| is set correctly, creates Blob from
+ // it.
+ m_resolver->resolve(Blob::create(blobHandle));
m_resolver.clear();
return promise;
}
- // If the size is not set, read as ArrayBuffer and create a new blob to get the size.
+ // If the size is not set, read as ArrayBuffer and create a new blob to
+ // get the size.
// FIXME: This workaround is not good for performance.
- // When we will stop using Blob as a base system of FetchBodyStream to support stream, this problem should be solved.
+ // When we will stop using Blob as a base system of Body to support
+ // stream, this problem should be solved.
readType = FileReaderLoader::ReadAsArrayBuffer;
break;
case ResponseAsFormData:
@@ -67,59 +66,60 @@ ScriptPromise FetchBodyStream::readAsync(ScriptState* scriptState, ResponseType
}
m_loader = adoptPtr(new FileReaderLoader(readType, this));
- m_loader->start(scriptState->executionContext(), m_blobDataHandle);
+ m_loader->start(scriptState->executionContext(), blobHandle);
return promise;
}
-ScriptPromise FetchBodyStream::asArrayBuffer(ScriptState* scriptState)
+ScriptPromise Body::arrayBuffer(ScriptState* scriptState)
{
return readAsync(scriptState, ResponseAsArrayBuffer);
}
-ScriptPromise FetchBodyStream::asBlob(ScriptState* scriptState)
+ScriptPromise Body::blob(ScriptState* scriptState)
{
return readAsync(scriptState, ResponseAsBlob);
}
-ScriptPromise FetchBodyStream::asFormData(ScriptState* scriptState)
+ScriptPromise Body::formData(ScriptState* scriptState)
{
return readAsync(scriptState, ResponseAsFormData);
}
-ScriptPromise FetchBodyStream::asJSON(ScriptState* scriptState)
+ScriptPromise Body::json(ScriptState* scriptState)
{
return readAsync(scriptState, ResponseAsJSON);
}
-ScriptPromise FetchBodyStream::asText(ScriptState* scriptState)
+ScriptPromise Body::text(ScriptState* scriptState)
{
return readAsync(scriptState, ResponseAsText);
}
-void FetchBodyStream::stop()
+bool Body::bodyUsed() const
+{
+ return m_bodyUsed;
+}
+
+void Body::stop()
{
// Canceling the load will call didFail which will remove the resolver.
if (m_resolver)
m_loader->cancel();
}
-bool FetchBodyStream::hasPendingActivity() const
+bool Body::hasPendingActivity() const
{
return m_resolver;
}
-FetchBodyStream::FetchBodyStream(ExecutionContext* context, PassRefPtr<BlobDataHandle> blobDataHandle)
+Body::Body(ExecutionContext* context)
: ActiveDOMObject(context)
- , m_blobDataHandle(blobDataHandle)
- , m_hasRead(false)
+ , m_bodyUsed(false)
{
- if (!m_blobDataHandle) {
- m_blobDataHandle = BlobDataHandle::create(BlobData::create(), 0);
- }
}
-void FetchBodyStream::resolveJSON()
+void Body::resolveJSON()
{
ASSERT(m_responseType == ResponseAsJSON);
ScriptState::Scope scope(m_resolver->scriptState());
@@ -138,9 +138,9 @@ void FetchBodyStream::resolveJSON()
}
// FileReaderLoaderClient functions.
-void FetchBodyStream::didStartLoading() { }
-void FetchBodyStream::didReceiveData() { }
-void FetchBodyStream::didFinishLoading()
+void Body::didStartLoading() { }
+void Body::didReceiveData() { }
+void Body::didFinishLoading()
{
if (!m_resolver->executionContext() || m_resolver->executionContext()->activeDOMObjectsAreStopped())
return;
@@ -150,7 +150,7 @@ void FetchBodyStream::didFinishLoading()
m_resolver->resolve(m_loader->arrayBufferResult());
break;
case ResponseAsBlob: {
- ASSERT(m_blobDataHandle->size() == kuint64max);
+ ASSERT(blobDataHandle()->size() == kuint64max);
OwnPtr<BlobData> blobData = BlobData::create();
RefPtr<ArrayBuffer> buffer = m_loader->arrayBufferResult();
blobData->appendArrayBuffer(buffer.get());
@@ -173,7 +173,7 @@ void FetchBodyStream::didFinishLoading()
m_resolver.clear();
}
-void FetchBodyStream::didFail(FileError::ErrorCode code)
+void Body::didFail(FileError::ErrorCode code)
{
ASSERT(m_resolver);
if (!m_resolver->executionContext() || m_resolver->executionContext()->activeDOMObjectsAreStopped())

Powered by Google App Engine
This is Rietveld 408576698