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..c8ff295443d7273f1f30022faea88c0566007c7a 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."; |
@@ -222,12 +225,15 @@ void RespondWithObserver::responseWasFulfilled(const ScriptValue& value) |
responseWasRejected(WebServiceWorkerResponseErrorResponseTypeOpaqueRedirect); |
return; |
} |
+ if (response->isBodyLocked()) { |
+ responseWasRejected(WebServiceWorkerResponseErrorBodyLocked); |
+ return; |
+ } |
if (response->bodyUsed()) { |
responseWasRejected(WebServiceWorkerResponseErrorBodyUsed); |
return; |
} |
- response->setBodyPassed(); |
WebServiceWorkerResponse webResponse; |
response->populateWebServiceWorkerResponse(webResponse); |
BodyStreamBuffer* buffer = response->internalBodyBuffer(); |