| Index: third_party/WebKit/Source/modules/fetch/Body.cpp
|
| diff --git a/third_party/WebKit/Source/modules/fetch/Body.cpp b/third_party/WebKit/Source/modules/fetch/Body.cpp
|
| index 8170144816e622f3497c6149625fd4ecb6905616..cdd744b97020dc23933ede8c6e62c316619e4f70 100644
|
| --- a/third_party/WebKit/Source/modules/fetch/Body.cpp
|
| +++ b/third_party/WebKit/Source/modules/fetch/Body.cpp
|
| @@ -107,7 +107,7 @@ ScriptPromise Body::arrayBuffer(ScriptState* scriptState)
|
| if (m_opaque)
|
| return ScriptPromise::reject(scriptState, V8ThrowException::createTypeError(scriptState->isolate(), "The body is opaque."));
|
|
|
| - if (bodyUsed())
|
| + if (isBodyLocked() || bodyUsed())
|
| return ScriptPromise::reject(scriptState, V8ThrowException::createTypeError(scriptState->isolate(), "Already read"));
|
|
|
| // When the main thread sends a V8::TerminateExecution() signal to a worker
|
| @@ -134,7 +134,7 @@ ScriptPromise Body::blob(ScriptState* scriptState)
|
| if (m_opaque)
|
| return ScriptPromise::reject(scriptState, V8ThrowException::createTypeError(scriptState->isolate(), "The body is opaque."));
|
|
|
| - if (bodyUsed())
|
| + if (isBodyLocked() || bodyUsed())
|
| return ScriptPromise::reject(scriptState, V8ThrowException::createTypeError(scriptState->isolate(), "Already read"));
|
|
|
| // See above comment.
|
| @@ -159,7 +159,7 @@ ScriptPromise Body::json(ScriptState* scriptState)
|
| if (m_opaque)
|
| return ScriptPromise::reject(scriptState, V8ThrowException::createTypeError(scriptState->isolate(), "The body is opaque."));
|
|
|
| - if (bodyUsed())
|
| + if (isBodyLocked() || bodyUsed())
|
| return ScriptPromise::reject(scriptState, V8ThrowException::createTypeError(scriptState->isolate(), "Already read"));
|
|
|
| // See above comment.
|
| @@ -181,7 +181,7 @@ ScriptPromise Body::text(ScriptState* scriptState)
|
| if (m_opaque)
|
| return ScriptPromise::reject(scriptState, V8ThrowException::createTypeError(scriptState->isolate(), "The body is opaque."));
|
|
|
| - if (bodyUsed())
|
| + if (isBodyLocked() || bodyUsed())
|
| return ScriptPromise::reject(scriptState, V8ThrowException::createTypeError(scriptState->isolate(), "Already read"));
|
|
|
| // See above comment.
|
| @@ -206,7 +206,12 @@ ReadableByteStream* Body::body()
|
|
|
| bool Body::bodyUsed()
|
| {
|
| - return m_bodyPassed || (body() && body()->isLocked());
|
| + return body() && body()->isDisturbed();
|
| +}
|
| +
|
| +bool Body::isBodyLocked()
|
| +{
|
| + return body() && body()->isLocked();
|
| }
|
|
|
| bool Body::hasPendingActivity() const
|
| @@ -220,7 +225,6 @@ bool Body::hasPendingActivity() const
|
|
|
| Body::Body(ExecutionContext* context)
|
| : ActiveDOMObject(context)
|
| - , m_bodyPassed(false)
|
| , m_opaque(false)
|
| {
|
| suspendIfNeeded();
|
|
|