Index: content/renderer/render_frame_impl.cc |
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc |
index c36999d9a0e188092a453ed1402ea42d7f5b6921..0347fcab96606c9815fe8e33cd7b08bd536555a9 100644 |
--- a/content/renderer/render_frame_impl.cc |
+++ b/content/renderer/render_frame_impl.cc |
@@ -4179,29 +4179,6 @@ void RenderFrameImpl::SaveImageFromDataURL(const blink::WebString& data_url) { |
} |
void RenderFrameImpl::WillSendRequest(blink::WebURLRequest& request) { |
- // Set the first party for cookies url if it has not been set yet (new |
- // requests). This value will be updated during redirects, consistent with |
- // https://tools.ietf.org/html/draft-west-first-party-cookies-04#section-2.1.1 |
- if (request.FirstPartyForCookies().IsEmpty()) { |
- if (request.GetFrameType() == blink::WebURLRequest::kFrameTypeTopLevel) |
- request.SetFirstPartyForCookies(request.Url()); |
- else |
- request.SetFirstPartyForCookies( |
- frame_->GetDocument().FirstPartyForCookies()); |
- } |
- |
- // Set the requestor origin to the same origin as the frame's document if it |
- // hasn't yet been set. |
- // |
- // TODO(mkwst): It would be cleaner to adjust blink::ResourceRequest to |
- // initialize itself with a `nullptr` initiator so that this can be a simple |
- // `isNull()` check. https://crbug.com/625969 |
- WebDocument frame_document = frame_->GetDocument(); |
- if (request.RequestorOrigin().IsUnique() && |
- !frame_document.GetSecurityOrigin().IsUnique()) { |
- request.SetRequestorOrigin(frame_document.GetSecurityOrigin()); |
- } |
- |
WebDataSource* provisional_data_source = frame_->ProvisionalDataSource(); |
WebDataSource* data_source = |
provisional_data_source ? provisional_data_source : frame_->DataSource(); |
@@ -4272,6 +4249,7 @@ void RenderFrameImpl::WillSendRequest(blink::WebURLRequest& request) { |
int parent_routing_id = |
parent ? RenderFrame::GetRoutingIdForWebFrame(parent) : -1; |
+ WebDocument frame_document = frame_->GetDocument(); |
RequestExtraData* extra_data = |
static_cast<RequestExtraData*>(request.GetExtraData()); |
if (!extra_data) |
@@ -6247,6 +6225,8 @@ void RenderFrameImpl::BeginNavigation(const NavigationPolicyInfo& info) { |
CHECK(IsBrowserSideNavigationEnabled()); |
browser_side_navigation_pending_ = true; |
+ blink::WebURLRequest& request = info.url_request; |
+ |
// Note: At this stage, the goal is to apply all the modifications the |
// renderer wants to make to the request, and then send it to the browser, so |
// that the actual network request can be started. Ideally, all such |
@@ -6257,7 +6237,15 @@ void RenderFrameImpl::BeginNavigation(const NavigationPolicyInfo& info) { |
// TODO(clamy): Apply devtools override. |
// TODO(clamy): Make sure that navigation requests are not modified somewhere |
// else in blink. |
- WillSendRequest(info.url_request); |
+ WillSendRequest(request); |
+ |
+ // Set RequestorOrigin and FirstPartyForCookies. |
+ WebDocument frame_document = frame_->GetDocument(); |
+ if (request.GetFrameType() == blink::WebURLRequest::kFrameTypeTopLevel) |
+ request.SetFirstPartyForCookies(request.Url()); |
+ else |
+ request.SetFirstPartyForCookies(frame_document.FirstPartyForCookies()); |
+ request.SetRequestorOrigin(frame_document.GetSecurityOrigin()); |
// Update the transition type of the request for client side redirects. |
if (!info.url_request.GetExtraData()) |
@@ -6287,10 +6275,9 @@ void RenderFrameImpl::BeginNavigation(const NavigationPolicyInfo& info) { |
GetRequestContextFrameTypeForWebURLRequest(info.url_request) == |
REQUEST_CONTEXT_FRAME_TYPE_NESTED); |
+ DCHECK(!info.url_request.RequestorOrigin().IsNull()); |
base::Optional<url::Origin> initiator_origin = |
- info.url_request.RequestorOrigin().IsNull() |
- ? base::Optional<url::Origin>() |
- : base::Optional<url::Origin>(info.url_request.RequestorOrigin()); |
+ base::Optional<url::Origin>(info.url_request.RequestorOrigin()); |
int load_flags = GetLoadFlagsForWebURLRequest(info.url_request); |