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(); |