OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "content/browser/loader/cross_site_resource_handler.h" | 5 #include "content/browser/loader/cross_site_resource_handler.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
121 did_defer_(false), | 121 did_defer_(false), |
122 weak_ptr_factory_(this) { | 122 weak_ptr_factory_(this) { |
123 } | 123 } |
124 | 124 |
125 CrossSiteResourceHandler::~CrossSiteResourceHandler() { | 125 CrossSiteResourceHandler::~CrossSiteResourceHandler() { |
126 // Cleanup back-pointer stored on the request info. | 126 // Cleanup back-pointer stored on the request info. |
127 GetRequestInfo()->set_cross_site_handler(NULL); | 127 GetRequestInfo()->set_cross_site_handler(NULL); |
128 } | 128 } |
129 | 129 |
130 bool CrossSiteResourceHandler::OnRequestRedirected( | 130 bool CrossSiteResourceHandler::OnRequestRedirected( |
131 const GURL& new_url, | 131 const net::RedirectInfo& redirect_info, |
132 ResourceResponse* response, | 132 ResourceResponse* response, |
133 bool* defer) { | 133 bool* defer) { |
134 // Top-level requests change their cookie first-party URL on redirects, while | |
135 // subframes retain the parent's value. | |
136 if (GetRequestInfo()->GetResourceType() == RESOURCE_TYPE_MAIN_FRAME) | |
137 request()->set_first_party_for_cookies(new_url); | |
138 | |
139 // We should not have started the transition before being redirected. | 134 // We should not have started the transition before being redirected. |
140 DCHECK(!in_cross_site_transition_); | 135 DCHECK(!in_cross_site_transition_); |
141 return next_handler_->OnRequestRedirected(new_url, response, defer); | 136 return next_handler_->OnRequestRedirected(redirect_info, response, defer); |
142 } | 137 } |
143 | 138 |
144 bool CrossSiteResourceHandler::OnResponseStarted( | 139 bool CrossSiteResourceHandler::OnResponseStarted( |
145 ResourceResponse* response, | 140 ResourceResponse* response, |
146 bool* defer) { | 141 bool* defer) { |
147 response_ = response; | 142 response_ = response; |
148 has_started_response_ = true; | 143 has_started_response_ = true; |
149 | 144 |
150 // Store this handler on the ExtraRequestInfo, so that RDH can call our | 145 // Store this handler on the ExtraRequestInfo, so that RDH can call our |
151 // ResumeResponse method when we are ready to resume. | 146 // ResumeResponse method when we are ready to resume. |
(...skipping 291 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
443 controller()->Resume(); | 438 controller()->Resume(); |
444 } | 439 } |
445 } | 440 } |
446 | 441 |
447 void CrossSiteResourceHandler::OnDidDefer() { | 442 void CrossSiteResourceHandler::OnDidDefer() { |
448 did_defer_ = true; | 443 did_defer_ = true; |
449 request()->LogBlockedBy("CrossSiteResourceHandler"); | 444 request()->LogBlockedBy("CrossSiteResourceHandler"); |
450 } | 445 } |
451 | 446 |
452 } // namespace content | 447 } // namespace content |
OLD | NEW |