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 3e489a74238ec647a95d806020db87f2bc3fe303..8ee37de5df3d1856d7e9ddc29b1ea509a09ba18c 100644 |
--- a/third_party/WebKit/Source/modules/fetch/Body.cpp |
+++ b/third_party/WebKit/Source/modules/fetch/Body.cpp |
@@ -192,13 +192,23 @@ ScriptPromise Body::text(ScriptState* scriptState) |
ReadableByteStream* Body::body() |
{ |
- UseCounter::count(executionContext(), UseCounter::FetchBodyStream); |
return bodyBuffer() ? bodyBuffer()->stream() : nullptr; |
} |
+ReadableByteStream* Body::bodyWithUseCounter() |
+{ |
+ UseCounter::count(executionContext(), UseCounter::FetchBodyStream); |
+ return 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 |
@@ -210,7 +220,7 @@ bool Body::hasPendingActivity() const |
return bodyBuffer()->hasPendingActivity(); |
} |
-Body::Body(ExecutionContext* context) : ActiveDOMObject(context), m_bodyPassed(false), m_opaque(false) |
+Body::Body(ExecutionContext* context) : ActiveDOMObject(context), m_opaque(false) |
{ |
suspendIfNeeded(); |
} |
@@ -219,7 +229,7 @@ ScriptPromise Body::rejectInvalidConsumption(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")); |
return ScriptPromise(); |
} |