Index: third_party/WebKit/Source/modules/serviceworkers/RespondWithObserver.cpp |
diff --git a/third_party/WebKit/Source/modules/serviceworkers/RespondWithObserver.cpp b/third_party/WebKit/Source/modules/serviceworkers/RespondWithObserver.cpp |
index 8eecaab106c2805e763df6896aa5177558fe03e7..afd50ec81eff514ed5942ea05a9dc39a030252d0 100644 |
--- a/third_party/WebKit/Source/modules/serviceworkers/RespondWithObserver.cpp |
+++ b/third_party/WebKit/Source/modules/serviceworkers/RespondWithObserver.cpp |
@@ -57,6 +57,9 @@ const String getMessageForResponseError(WebServiceWorkerResponseError error, con |
case WebServiceWorkerResponseErrorResponseTypeOpaqueRedirect: |
errorMessage = errorMessage + "an \"opaqueredirect\" type response was used for a request which is not a navigation request."; |
break; |
+ case WebServiceWorkerResponseErrorBodyLocked: |
+ errorMessage = errorMessage + "a Response whose \"body\" is locked cannot be used to respond to a request."; |
+ break; |
case WebServiceWorkerResponseErrorUnknown: |
default: |
errorMessage = errorMessage + "an unexpected error occurred."; |
@@ -226,8 +229,11 @@ void RespondWithObserver::responseWasFulfilled(const ScriptValue& value) |
responseWasRejected(WebServiceWorkerResponseErrorBodyUsed); |
return; |
} |
+ if (response->isBodyLocked()) { |
+ responseWasRejected(WebServiceWorkerResponseErrorBodyLocked); |
+ return; |
+ } |
- response->setBodyPassed(); |
WebServiceWorkerResponse webResponse; |
response->populateWebServiceWorkerResponse(webResponse); |
BodyStreamBuffer* buffer = response->internalBodyBuffer(); |