Commit c619488a authored by clamy@chromium.org's avatar clamy@chromium.org

Remove the setting of first party for cookies from addAdditionalRequestHeaders

This CL removes the setting of the first party for cookies url from
FrameFetchContext::addAdditionalRequestHeaders. For request going through the
ResourceFetcher, it will be added in content::RenderFrameImpl::willSendRequest (see https://chromiumcodereview.appspot.com/317853002/).
Other users of the function (BeaconLoader, PingLoader) can use a new specific
function of FetchContext.

BUG=376025

Review URL: https://codereview.chromium.org/314093002

git-svn-id: svn://svn.chromium.org/blink/trunk@176219 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent 933355de
...@@ -52,6 +52,10 @@ void FetchContext::addAdditionalRequestHeaders(Document*, ResourceRequest&, Fetc ...@@ -52,6 +52,10 @@ void FetchContext::addAdditionalRequestHeaders(Document*, ResourceRequest&, Fetc
{ {
} }
void FetchContext::setFirstPartyForCookies(ResourceRequest&)
{
}
CachePolicy FetchContext::cachePolicy(Document*) const CachePolicy FetchContext::cachePolicy(Document*) const
{ {
return CachePolicyVerify; return CachePolicyVerify;
......
...@@ -64,6 +64,7 @@ public: ...@@ -64,6 +64,7 @@ public:
virtual void reportLocalLoadFailed(const KURL&); virtual void reportLocalLoadFailed(const KURL&);
virtual void addAdditionalRequestHeaders(Document*, ResourceRequest&, FetchResourceType); virtual void addAdditionalRequestHeaders(Document*, ResourceRequest&, FetchResourceType);
virtual void setFirstPartyForCookies(ResourceRequest&);
virtual CachePolicy cachePolicy(Document*) const; virtual CachePolicy cachePolicy(Document*) const;
virtual void dispatchDidChangeResourcePriority(unsigned long identifier, ResourceLoadPriority, int intraPriorityValue); virtual void dispatchDidChangeResourcePriority(unsigned long identifier, ResourceLoadPriority, int intraPriorityValue);
......
...@@ -27,6 +27,7 @@ void BeaconLoader::prepareRequest(LocalFrame* frame, ResourceRequest& request) ...@@ -27,6 +27,7 @@ void BeaconLoader::prepareRequest(LocalFrame* frame, ResourceRequest& request)
request.setHTTPHeaderField("Cache-Control", "max-age=0"); request.setHTTPHeaderField("Cache-Control", "max-age=0");
request.setAllowStoredCredentials(true); request.setAllowStoredCredentials(true);
frame->loader().fetchContext().addAdditionalRequestHeaders(frame->document(), request, FetchSubresource); frame->loader().fetchContext().addAdditionalRequestHeaders(frame->document(), request, FetchSubresource);
frame->loader().fetchContext().setFirstPartyForCookies(request);
} }
void BeaconLoader::issueRequest(LocalFrame* frame, ResourceRequest& request) void BeaconLoader::issueRequest(LocalFrame* frame, ResourceRequest& request)
......
...@@ -78,11 +78,6 @@ void FrameFetchContext::addAdditionalRequestHeaders(Document* document, Resource ...@@ -78,11 +78,6 @@ void FrameFetchContext::addAdditionalRequestHeaders(Document* document, Resource
FrameLoader::addHTTPOriginIfNeeded(request, AtomicString(outgoingOrigin)); FrameLoader::addHTTPOriginIfNeeded(request, AtomicString(outgoingOrigin));
} }
if (isMainResource && m_frame->isMainFrame())
request.setFirstPartyForCookies(request.url());
else if (m_frame->tree().top()->isLocalFrame())
request.setFirstPartyForCookies(toLocalFrame(m_frame->tree().top())->document()->firstPartyForCookies());
// The remaining modifications are only necessary for HTTP and HTTPS. // The remaining modifications are only necessary for HTTP and HTTPS.
if (!request.url().isEmpty() && !request.url().protocolIsInHTTPFamily()) if (!request.url().isEmpty() && !request.url().protocolIsInHTTPFamily())
return; return;
...@@ -93,6 +88,12 @@ void FrameFetchContext::addAdditionalRequestHeaders(Document* document, Resource ...@@ -93,6 +88,12 @@ void FrameFetchContext::addAdditionalRequestHeaders(Document* document, Resource
FrameLoader::addHTTPOriginIfNeeded(request, nullAtom); FrameLoader::addHTTPOriginIfNeeded(request, nullAtom);
} }
void FrameFetchContext::setFirstPartyForCookies(ResourceRequest& request)
{
if (m_frame->tree().top()->isLocalFrame())
request.setFirstPartyForCookies(toLocalFrame(m_frame->tree().top())->document()->firstPartyForCookies());
}
CachePolicy FrameFetchContext::cachePolicy(Document* document) const CachePolicy FrameFetchContext::cachePolicy(Document* document) const
{ {
if (document && document->loadEventFinished()) if (document && document->loadEventFinished())
......
...@@ -52,6 +52,7 @@ public: ...@@ -52,6 +52,7 @@ public:
virtual void reportLocalLoadFailed(const KURL&) OVERRIDE; virtual void reportLocalLoadFailed(const KURL&) OVERRIDE;
virtual void addAdditionalRequestHeaders(Document*, ResourceRequest&, FetchResourceType) OVERRIDE; virtual void addAdditionalRequestHeaders(Document*, ResourceRequest&, FetchResourceType) OVERRIDE;
virtual void setFirstPartyForCookies(ResourceRequest&) OVERRIDE;
virtual CachePolicy cachePolicy(Document*) const OVERRIDE; virtual CachePolicy cachePolicy(Document*) const OVERRIDE;
virtual void dispatchDidChangeResourcePriority(unsigned long identifier, ResourceLoadPriority, int intraPriorityValue); virtual void dispatchDidChangeResourcePriority(unsigned long identifier, ResourceLoadPriority, int intraPriorityValue);
virtual void dispatchWillSendRequest(DocumentLoader*, unsigned long identifier, ResourceRequest&, const ResourceResponse& redirectResponse, const FetchInitiatorInfo& = FetchInitiatorInfo()) OVERRIDE; virtual void dispatchWillSendRequest(DocumentLoader*, unsigned long identifier, ResourceRequest&, const ResourceResponse& redirectResponse, const FetchInitiatorInfo& = FetchInitiatorInfo()) OVERRIDE;
......
...@@ -66,6 +66,7 @@ void PingLoader::loadImage(LocalFrame* frame, const KURL& url) ...@@ -66,6 +66,7 @@ void PingLoader::loadImage(LocalFrame* frame, const KURL& url)
request.setTargetType(ResourceRequest::TargetIsPing); request.setTargetType(ResourceRequest::TargetIsPing);
request.setHTTPHeaderField("Cache-Control", "max-age=0"); request.setHTTPHeaderField("Cache-Control", "max-age=0");
frame->loader().fetchContext().addAdditionalRequestHeaders(frame->document(), request, FetchSubresource); frame->loader().fetchContext().addAdditionalRequestHeaders(frame->document(), request, FetchSubresource);
frame->loader().fetchContext().setFirstPartyForCookies(request);
FetchInitiatorInfo initiatorInfo; FetchInitiatorInfo initiatorInfo;
initiatorInfo.name = FetchInitiatorTypeNames::ping; initiatorInfo.name = FetchInitiatorTypeNames::ping;
...@@ -82,6 +83,7 @@ void PingLoader::sendLinkAuditPing(LocalFrame* frame, const KURL& pingURL, const ...@@ -82,6 +83,7 @@ void PingLoader::sendLinkAuditPing(LocalFrame* frame, const KURL& pingURL, const
request.setHTTPBody(FormData::create("PING")); request.setHTTPBody(FormData::create("PING"));
request.setHTTPHeaderField("Cache-Control", "max-age=0"); request.setHTTPHeaderField("Cache-Control", "max-age=0");
frame->loader().fetchContext().addAdditionalRequestHeaders(frame->document(), request, FetchSubresource); frame->loader().fetchContext().addAdditionalRequestHeaders(frame->document(), request, FetchSubresource);
frame->loader().fetchContext().setFirstPartyForCookies(request);
RefPtr<SecurityOrigin> pingOrigin = SecurityOrigin::create(pingURL); RefPtr<SecurityOrigin> pingOrigin = SecurityOrigin::create(pingURL);
// addAdditionalRequestHeaders() will have added a referrer for same origin requests, // addAdditionalRequestHeaders() will have added a referrer for same origin requests,
...@@ -109,6 +111,7 @@ void PingLoader::sendViolationReport(LocalFrame* frame, const KURL& reportURL, P ...@@ -109,6 +111,7 @@ void PingLoader::sendViolationReport(LocalFrame* frame, const KURL& reportURL, P
request.setHTTPContentType(type == ContentSecurityPolicyViolationReport ? "application/csp-report" : "application/json"); request.setHTTPContentType(type == ContentSecurityPolicyViolationReport ? "application/csp-report" : "application/json");
request.setHTTPBody(report); request.setHTTPBody(report);
frame->loader().fetchContext().addAdditionalRequestHeaders(frame->document(), request, FetchSubresource); frame->loader().fetchContext().addAdditionalRequestHeaders(frame->document(), request, FetchSubresource);
frame->loader().fetchContext().setFirstPartyForCookies(request);
FetchInitiatorInfo initiatorInfo; FetchInitiatorInfo initiatorInfo;
initiatorInfo.name = FetchInitiatorTypeNames::violationreport; initiatorInfo.name = FetchInitiatorTypeNames::violationreport;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment