summaryrefslogtreecommitdiffstats
path: root/content/renderer/render_frame_impl.cc
diff options
context:
space:
mode:
Diffstat (limited to 'content/renderer/render_frame_impl.cc')
-rw-r--r--content/renderer/render_frame_impl.cc13
1 files changed, 10 insertions, 3 deletions
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
index 4bf71e7..26338e1 100644
--- a/content/renderer/render_frame_impl.cc
+++ b/content/renderer/render_frame_impl.cc
@@ -3157,10 +3157,17 @@ void RenderFrameImpl::willSendRequest(
// Set the first party for cookies url if it has not been set yet (new
// requests). For redirects, it is updated by WebURLLoaderImpl.
if (request.firstPartyForCookies().isEmpty()) {
- if (request.frameType() == blink::WebURLRequest::FrameTypeTopLevel)
+ if (request.frameType() == blink::WebURLRequest::FrameTypeTopLevel) {
request.setFirstPartyForCookies(request.url());
- else
- request.setFirstPartyForCookies(frame->document().firstPartyForCookies());
+ } else {
+ // TODO(nasko): When the top-level frame is remote, there is no document.
+ // This is broken and should be fixed to propagate the first party.
+ WebFrame* top = frame->top();
+ if (top->isWebLocalFrame()) {
+ request.setFirstPartyForCookies(
+ frame->top()->document().firstPartyForCookies());
+ }
+ }
}
WebDataSource* provisional_data_source = frame->provisionalDataSource();