Index: third_party/WebKit/Source/core/fetch/FetchRequest.cpp |
diff --git a/third_party/WebKit/Source/core/fetch/FetchRequest.cpp b/third_party/WebKit/Source/core/fetch/FetchRequest.cpp |
index f620a4d433257e9c42d80fa65ffe8c420ff5e784..3fd353f623fbdcd72a626f71cd79736948a65051 100644 |
--- a/third_party/WebKit/Source/core/fetch/FetchRequest.cpp |
+++ b/third_party/WebKit/Source/core/fetch/FetchRequest.cpp |
@@ -72,26 +72,24 @@ FetchRequest::~FetchRequest() |
{ |
} |
-void FetchRequest::setCrossOriginAccessControl(SecurityOrigin* origin, StoredCredentials allowCredentials, CredentialRequest requested) |
+void FetchRequest::setCrossOriginAccessControl(SecurityOrigin* origin, CrossOriginAttributeValue crossOrigin) |
{ |
- ASSERT(requested == ClientDidNotRequestCredentials || allowCredentials == AllowStoredCredentials); |
+ ASSERT(crossOrigin != CrossOriginAttributeNotSet); |
+ const bool useCredentials = crossOrigin == CrossOriginAttributeUseCredentials; |
+ const bool isSameOriginRequest = origin && origin->canRequestNoSuborigin(m_resourceRequest.url()); |
+ |
+ // Currently FetchRequestMode and FetchCredentialsMode are only used when the request goes to Service Worker. |
m_resourceRequest.setFetchRequestMode(WebURLRequest::FetchRequestModeCORS); |
- updateRequestForAccessControl(m_resourceRequest, origin, allowCredentials); |
- m_options.allowCredentials = allowCredentials; |
+ m_resourceRequest.setFetchCredentialsMode(useCredentials ? WebURLRequest::FetchCredentialsModeInclude : WebURLRequest::FetchCredentialsModeSameOrigin); |
+ |
+ m_options.allowCredentials = (isSameOriginRequest || useCredentials) ? AllowStoredCredentials : DoNotAllowStoredCredentials; |
m_options.corsEnabled = IsCORSEnabled; |
m_options.securityOrigin = origin; |
- m_options.credentialsRequested = requested; |
-} |
+ m_options.credentialsRequested = useCredentials ? ClientRequestedCredentials : ClientDidNotRequestCredentials; |
-void FetchRequest::setCrossOriginAccessControl(SecurityOrigin* origin, StoredCredentials allowCredentials) |
-{ |
- setCrossOriginAccessControl(origin, allowCredentials, allowCredentials == AllowStoredCredentials ? ClientRequestedCredentials : ClientDidNotRequestCredentials); |
+ updateRequestForAccessControl(m_resourceRequest, origin, m_options.allowCredentials); |
} |
-void FetchRequest::setCrossOriginAccessControl(SecurityOrigin* origin, const AtomicString& crossOriginMode) |
-{ |
- setCrossOriginAccessControl(origin, equalIgnoringCase(crossOriginMode, "use-credentials") ? AllowStoredCredentials : DoNotAllowStoredCredentials); |
-} |
void FetchRequest::setResourceWidth(ResourceWidth resourceWidth) |
{ |