Chromium Code Reviews| 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; |