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

Side by Side Diff: chrome/browser/prerender/prerender_resource_throttle.cc

Issue 2355453002: [NoStatePrefetch] Support only GET and HEAD (Closed)
Patch Set: review comments Created 4 years, 2 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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "chrome/browser/prerender/prerender_resource_throttle.h" 5 #include "chrome/browser/prerender/prerender_resource_throttle.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/numerics/safe_conversions.h" 8 #include "base/numerics/safe_conversions.h"
9 #include "build/build_config.h" 9 #include "build/build_config.h"
10 #include "chrome/browser/prerender/prerender_final_status.h" 10 #include "chrome/browser/prerender/prerender_final_status.h"
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
114 ResourceType resource_type, 114 ResourceType resource_type,
115 int render_process_id, 115 int render_process_id,
116 int render_frame_id, 116 int render_frame_id,
117 const GURL& url) { 117 const GURL& url) {
118 bool cancel = false; 118 bool cancel = false;
119 PrerenderContents* prerender_contents = 119 PrerenderContents* prerender_contents =
120 PrerenderContentsFromRenderFrame(render_process_id, render_frame_id); 120 PrerenderContentsFromRenderFrame(render_process_id, render_frame_id);
121 if (prerender_contents) { 121 if (prerender_contents) {
122 // Abort any prerenders that spawn requests that use unsupported HTTP 122 // Abort any prerenders that spawn requests that use unsupported HTTP
123 // methods or schemes. 123 // methods or schemes.
124 if (!PrerenderManager::IsValidHttpMethod(method)) { 124 if (!prerender_contents->IsValidHttpMethod(method)) {
125 prerender_contents->Destroy(FINAL_STATUS_INVALID_HTTP_METHOD); 125 // If this is a full prerender, cancel the prerender in response to
126 // invalid requests. For prefetches, cancel invalid requests but keep the
127 // prefetch going, unless it's the main frame that's invalid.
128 if (prerender_contents->prerender_mode() == FULL_PRERENDER ||
129 resource_type == content::RESOURCE_TYPE_MAIN_FRAME) {
130 prerender_contents->Destroy(FINAL_STATUS_INVALID_HTTP_METHOD);
131 }
126 cancel = true; 132 cancel = true;
127 } else if (!PrerenderManager::DoesSubresourceURLHaveValidScheme(url)) { 133 } else if (!PrerenderManager::DoesSubresourceURLHaveValidScheme(url)) {
128 prerender_contents->Destroy(FINAL_STATUS_UNSUPPORTED_SCHEME); 134 prerender_contents->Destroy(FINAL_STATUS_UNSUPPORTED_SCHEME);
129 ReportUnsupportedPrerenderScheme(url); 135 ReportUnsupportedPrerenderScheme(url);
130 cancel = true; 136 cancel = true;
131 #if defined(OS_ANDROID) 137 #if defined(OS_ANDROID)
132 } else if (resource_type == content::RESOURCE_TYPE_FAVICON) { 138 } else if (resource_type == content::RESOURCE_TYPE_FAVICON) {
133 // Delay icon fetching until the contents are getting swapped in 139 // Delay icon fetching until the contents are getting swapped in
134 // to conserve network usage in mobile devices. 140 // to conserve network usage in mobile devices.
135 prerender_contents->AddResourceThrottle(throttle); 141 prerender_contents->AddResourceThrottle(throttle);
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
219 if (g_prerender_contents_for_testing) 225 if (g_prerender_contents_for_testing)
220 return g_prerender_contents_for_testing; 226 return g_prerender_contents_for_testing;
221 content::RenderFrameHost* rfh = content::RenderFrameHost::FromID( 227 content::RenderFrameHost* rfh = content::RenderFrameHost::FromID(
222 render_process_id, render_frame_id); 228 render_process_id, render_frame_id);
223 content::WebContents* web_contents = 229 content::WebContents* web_contents =
224 content::WebContents::FromRenderFrameHost(rfh); 230 content::WebContents::FromRenderFrameHost(rfh);
225 return PrerenderContents::FromWebContents(web_contents); 231 return PrerenderContents::FromWebContents(web_contents);
226 } 232 }
227 233
228 } // namespace prerender 234 } // namespace prerender
OLDNEW
« no previous file with comments | « chrome/browser/prerender/prerender_manager.cc ('k') | chrome/browser/prerender/prerender_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698