Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1056)

Side by Side Diff: content/browser/loader/cross_site_resource_handler.cc

Issue 387703004: Navigation transitions: Parse out transition-entering-stylesheet link headers. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: nit fix Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
80 params.page_transition, params.should_replace_current_entry); 80 params.page_transition, params.should_replace_current_entry);
81 } else if (leak_requests_for_testing_ && cross_site_transferring_request) { 81 } else if (leak_requests_for_testing_ && cross_site_transferring_request) {
82 // Some unit tests expect requests to be leaked in this case, so they can 82 // Some unit tests expect requests to be leaked in this case, so they can
83 // pass them along manually. 83 // pass them along manually.
84 cross_site_transferring_request->ReleaseRequest(); 84 cross_site_transferring_request->ReleaseRequest();
85 } 85 }
86 } 86 }
87 87
88 void OnDeferredAfterResponseStartedHelper( 88 void OnDeferredAfterResponseStartedHelper(
89 const GlobalRequestID& global_request_id, 89 const GlobalRequestID& global_request_id,
90 int render_frame_id) { 90 int render_frame_id,
91 const scoped_refptr<net::HttpResponseHeaders>& headers,
92 const GURL& url) {
91 RenderFrameHostImpl* rfh = 93 RenderFrameHostImpl* rfh =
92 RenderFrameHostImpl::FromID(global_request_id.child_id, render_frame_id); 94 RenderFrameHostImpl::FromID(global_request_id.child_id, render_frame_id);
93 if (rfh) 95 if (rfh)
94 rfh->OnDeferredAfterResponseStarted(global_request_id); 96 rfh->OnDeferredAfterResponseStarted(global_request_id, headers, url);
95 } 97 }
96 98
97 bool CheckNavigationPolicyOnUI(GURL url, int process_id, int render_frame_id) { 99 bool CheckNavigationPolicyOnUI(GURL url, int process_id, int render_frame_id) {
98 RenderFrameHostImpl* rfh = 100 RenderFrameHostImpl* rfh =
99 RenderFrameHostImpl::FromID(process_id, render_frame_id); 101 RenderFrameHostImpl::FromID(process_id, render_frame_id);
100 if (!rfh) 102 if (!rfh)
101 return false; 103 return false;
102 104
103 // TODO(nasko): This check is very simplistic and is used temporarily only 105 // TODO(nasko): This check is very simplistic and is used temporarily only
104 // for --site-per-process. It should be updated to match the check performed 106 // for --site-per-process. It should be updated to match the check performed
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
225 *defer = true; 227 *defer = true;
226 OnDidDefer(); 228 OnDidDefer();
227 return true; 229 return true;
228 } 230 }
229 231
230 bool CrossSiteResourceHandler::OnNavigationTransitionResponseStarted( 232 bool CrossSiteResourceHandler::OnNavigationTransitionResponseStarted(
231 ResourceResponse* response, 233 ResourceResponse* response,
232 bool* defer) { 234 bool* defer) {
233 ResourceRequestInfoImpl* info = GetRequestInfo(); 235 ResourceRequestInfoImpl* info = GetRequestInfo();
234 236
237 scoped_refptr<net::HttpResponseHeaders> headers;
238 if (response_)
239 headers = response_->head.headers;
240 GURL url = request()->url();
241
235 GlobalRequestID global_id(info->GetChildID(), info->GetRequestID()); 242 GlobalRequestID global_id(info->GetChildID(), info->GetRequestID());
236 int render_frame_id = info->GetRenderFrameID(); 243 int render_frame_id = info->GetRenderFrameID();
237 BrowserThread::PostTask( 244 BrowserThread::PostTask(
238 BrowserThread::UI, 245 BrowserThread::UI,
239 FROM_HERE, 246 FROM_HERE,
240 base::Bind( 247 base::Bind(
241 &OnDeferredAfterResponseStartedHelper, global_id, render_frame_id)); 248 &OnDeferredAfterResponseStartedHelper,
249 global_id,
250 render_frame_id,
251 headers,
252 url));
242 253
243 *defer = true; 254 *defer = true;
244 OnDidDefer(); 255 OnDidDefer();
245 return true; 256 return true;
246 } 257 }
247 258
248 void CrossSiteResourceHandler::ResumeResponseDeferredAtStart(int request_id) { 259 void CrossSiteResourceHandler::ResumeResponseDeferredAtStart(int request_id) {
249 bool defer = false; 260 bool defer = false;
250 if (!OnNormalResponseStarted(response_, &defer)) { 261 if (!OnNormalResponseStarted(response_, &defer)) {
251 controller()->Cancel(); 262 controller()->Cancel();
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after
428 controller()->Resume(); 439 controller()->Resume();
429 } 440 }
430 } 441 }
431 442
432 void CrossSiteResourceHandler::OnDidDefer() { 443 void CrossSiteResourceHandler::OnDidDefer() {
433 did_defer_ = true; 444 did_defer_ = true;
434 request()->LogBlockedBy("CrossSiteResourceHandler"); 445 request()->LogBlockedBy("CrossSiteResourceHandler");
435 } 446 }
436 447
437 } // namespace content 448 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/frame_host/render_frame_host_impl.cc ('k') | content/browser/transition_request_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698