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
{
}
void FetchContext::setFirstPartyForCookies(ResourceRequest&)
{
}
CachePolicy FetchContext::cachePolicy(Document*) const
{
return CachePolicyVerify;
......
......@@ -64,6 +64,7 @@ public:
virtual void reportLocalLoadFailed(const KURL&);
virtual void addAdditionalRequestHeaders(Document*, ResourceRequest&, FetchResourceType);
virtual void setFirstPartyForCookies(ResourceRequest&);
virtual CachePolicy cachePolicy(Document*) const;
virtual void dispatchDidChangeResourcePriority(unsigned long identifier, ResourceLoadPriority, int intraPriorityValue);
......
......@@ -27,6 +27,7 @@ void BeaconLoader::prepareRequest(LocalFrame* frame, ResourceRequest& request)
request.setHTTPHeaderField("Cache-Control", "max-age=0");
request.setAllowStoredCredentials(true);
frame->loader().fetchContext().addAdditionalRequestHeaders(frame->document(), request, FetchSubresource);
frame->loader().fetchContext().setFirstPartyForCookies(request);
}
void BeaconLoader::issueRequest(LocalFrame* frame, ResourceRequest& request)
......
......@@ -78,11 +78,6 @@ void FrameFetchContext::addAdditionalRequestHeaders(Document* document, Resource
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.
if (!request.url().isEmpty() && !request.url().protocolIsInHTTPFamily())
return;
......@@ -93,6 +88,12 @@ void FrameFetchContext::addAdditionalRequestHeaders(Document* document, Resource
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
{
if (document && document->loadEventFinished())
......
......@@ -52,6 +52,7 @@ public:
virtual void reportLocalLoadFailed(const KURL&) OVERRIDE;
virtual void addAdditionalRequestHeaders(Document*, ResourceRequest&, FetchResourceType) OVERRIDE;
virtual void setFirstPartyForCookies(ResourceRequest&) OVERRIDE;
virtual CachePolicy cachePolicy(Document*) const OVERRIDE;
virtual void dispatchDidChangeResourcePriority(unsigned long identifier, ResourceLoadPriority, int intraPriorityValue);
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)
request.setTargetType(ResourceRequest::TargetIsPing);
request.setHTTPHeaderField("Cache-Control", "max-age=0");
frame->loader().fetchContext().addAdditionalRequestHeaders(frame->document(), request, FetchSubresource);
frame->loader().fetchContext().setFirstPartyForCookies(request);
FetchInitiatorInfo initiatorInfo;
initiatorInfo.name = FetchInitiatorTypeNames::ping;
......@@ -82,6 +83,7 @@ void PingLoader::sendLinkAuditPing(LocalFrame* frame, const KURL& pingURL, const
request.setHTTPBody(FormData::create("PING"));
request.setHTTPHeaderField("Cache-Control", "max-age=0");
frame->loader().fetchContext().addAdditionalRequestHeaders(frame->document(), request, FetchSubresource);
frame->loader().fetchContext().setFirstPartyForCookies(request);
RefPtr<SecurityOrigin> pingOrigin = SecurityOrigin::create(pingURL);
// addAdditionalRequestHeaders() will have added a referrer for same origin requests,
......@@ -109,6 +111,7 @@ void PingLoader::sendViolationReport(LocalFrame* frame, const KURL& reportURL, P
request.setHTTPContentType(type == ContentSecurityPolicyViolationReport ? "application/csp-report" : "application/json");
request.setHTTPBody(report);
frame->loader().fetchContext().addAdditionalRequestHeaders(frame->document(), request, FetchSubresource);
frame->loader().fetchContext().setFirstPartyForCookies(request);
FetchInitiatorInfo initiatorInfo;
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