Index: Source/core/css/CSSFontFaceSrcValue.cpp |
diff --git a/Source/core/css/CSSFontFaceSrcValue.cpp b/Source/core/css/CSSFontFaceSrcValue.cpp |
index 45eb768bd72bc920dd70ba61aef74087f4a50088..bb7c51f34c5cf6b1b0a004aa63efd1ab8eed8c62 100644 |
--- a/Source/core/css/CSSFontFaceSrcValue.cpp |
+++ b/Source/core/css/CSSFontFaceSrcValue.cpp |
@@ -73,13 +73,17 @@ bool CSSFontFaceSrcValue::hasFailedOrCanceledSubresources() const |
return m_fetched && m_fetched->loadFailedOrCanceled(); |
} |
-static bool shouldSetCrossOriginAccessControl(const KURL& resource) |
+static void setCrossOriginAccessControl(FetchRequest& request, SecurityOrigin* securityOrigin) |
{ |
// Local fonts are accessible from file: URLs even when |
// allowFileAccessFromFileURLs is false. |
- if (resource.isLocalFile()) |
- return false; |
- return true; |
+ if (request.url().isLocalFile()) |
+ return; |
+ |
+ bool sameOriginRequest = securityOrigin->canRequestNoSuborigin(request.url()); |
sof
2015/08/20 14:56:58
I see what this is based on, but should we rephras
Kunihiko Sakamoto
2015/08/21 01:37:06
Done.
|
+ request.setCrossOriginAccessControl( |
+ securityOrigin, sameOriginRequest ? AllowStoredCredentials : DoNotAllowStoredCredentials, |
+ ClientDidNotRequestCredentials); |
} |
FontResource* CSSFontFaceSrcValue::fetch(Document* document) |
@@ -88,8 +92,7 @@ FontResource* CSSFontFaceSrcValue::fetch(Document* document) |
FetchRequest request(ResourceRequest(document->completeURL(m_resource)), FetchInitiatorTypeNames::css); |
request.setContentSecurityCheck(m_shouldCheckContentSecurityPolicy); |
SecurityOrigin* securityOrigin = document->securityOrigin(); |
- if (shouldSetCrossOriginAccessControl(request.url())) |
- request.setCrossOriginAccessControl(securityOrigin, DoNotAllowStoredCredentials); |
+ setCrossOriginAccessControl(request, securityOrigin); |
request.mutableResourceRequest().setHTTPReferrer(SecurityPolicy::generateReferrer(m_referrer.referrerPolicy, request.url(), m_referrer.referrer)); |
m_fetched = FontResource::fetch(request, document->fetcher()); |
} else { |