Index: Source/modules/serviceworkers/RespondWithObserver.cpp |
diff --git a/Source/modules/serviceworkers/RespondWithObserver.cpp b/Source/modules/serviceworkers/RespondWithObserver.cpp |
index 77abd16851eef11197d18b4d8ba00784c699c32e..923b767866bb005b84c631e61f311bd6334ee730 100644 |
--- a/Source/modules/serviceworkers/RespondWithObserver.cpp |
+++ b/Source/modules/serviceworkers/RespondWithObserver.cpp |
@@ -54,6 +54,9 @@ const String getMessageForResponseError(WebServiceWorkerResponseError error, con |
case WebServiceWorkerResponseErrorResponseTypeOpaqueForClientRequest: |
errorMessage = errorMessage + "an \"opaque\" response was used for a client request."; |
break; |
+ case WebServiceWorkerResponseErrorResponseTypeOpaqueRedirect: |
+ errorMessage = errorMessage + "an \"opaqueredirect\" type response was used for a request which is not a navigation request."; |
+ break; |
case WebServiceWorkerResponseErrorUnknown: |
default: |
errorMessage = errorMessage + "an unexpected error occurred."; |
@@ -62,9 +65,14 @@ const String getMessageForResponseError(WebServiceWorkerResponseError error, con |
return errorMessage; |
} |
+bool isNavigationRequest(WebURLRequest::FrameType frameType) |
+{ |
+ return frameType != WebURLRequest::FrameTypeNone; |
+} |
+ |
bool isClientRequest(WebURLRequest::FrameType frameType, WebURLRequest::RequestContext requestContext) |
{ |
- return frameType != WebURLRequest::FrameTypeNone || requestContext == WebURLRequest::RequestContextSharedWorker || requestContext == WebURLRequest::RequestContextWorker; |
+ return isNavigationRequest(frameType) || requestContext == WebURLRequest::RequestContextSharedWorker || requestContext == WebURLRequest::RequestContextWorker; |
} |
class NoopLoaderClient final : public GarbageCollectedFinalized<NoopLoaderClient>, public FetchDataLoader::Client { |
@@ -210,6 +218,10 @@ void RespondWithObserver::responseWasFulfilled(const ScriptValue& value) |
return; |
} |
} |
+ if (isNavigationRequest(m_frameType) && responseType == FetchResponseData::OpaqueRedirectType) { |
yhirano
2015/08/07 14:22:02
https://fetch.spec.whatwg.org/#http-fetch says
If
horo
2015/08/07 15:39:54
Ah, yes. Fixed.
|
+ responseWasRejected(WebServiceWorkerResponseErrorResponseTypeOpaqueRedirect); |
+ return; |
+ } |
if (response->bodyUsed()) { |
responseWasRejected(WebServiceWorkerResponseErrorBodyUsed); |
return; |