Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2125)

Unified Diff: Source/modules/serviceworkers/RespondWithObserver.cpp

Issue 1265133002: [1/3 blink] Support redirect option of Request and "opaqueredirect" response type. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: rebase Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/modules/fetch/Response.cpp ('k') | Source/platform/exported/WebServiceWorkerRequest.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/modules/serviceworkers/RespondWithObserver.cpp
diff --git a/Source/modules/serviceworkers/RespondWithObserver.cpp b/Source/modules/serviceworkers/RespondWithObserver.cpp
index 10e74be7b27107b56cf05c0f92784afdd1a29bc5..8b0bf3faa644f37d589288650dc5aad2603b14f8 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) {
+ responseWasRejected(WebServiceWorkerResponseErrorResponseTypeOpaqueRedirect);
+ return;
+ }
if (response->bodyUsed()) {
responseWasRejected(WebServiceWorkerResponseErrorBodyUsed);
return;
« no previous file with comments | « Source/modules/fetch/Response.cpp ('k') | Source/platform/exported/WebServiceWorkerRequest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698