diff options
Diffstat (limited to 'content/renderer/render_frame_impl.cc')
-rw-r--r-- | content/renderer/render_frame_impl.cc | 13 |
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(); |