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

Unified Diff: chrome/browser/prerender/prerender_resource_throttle.cc

Issue 2355453002: [NoStatePrefetch] Support only GET and HEAD (Closed)
Patch Set: review comments Created 4 years, 3 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/prerender/prerender_manager.cc ('k') | chrome/browser/prerender/prerender_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/prerender/prerender_resource_throttle.cc
diff --git a/chrome/browser/prerender/prerender_resource_throttle.cc b/chrome/browser/prerender/prerender_resource_throttle.cc
index 200e2865557792db5a3c5c694c05a6bfac76474b..512b9d83d07133daafc95385095876e06f5e8a3a 100644
--- a/chrome/browser/prerender/prerender_resource_throttle.cc
+++ b/chrome/browser/prerender/prerender_resource_throttle.cc
@@ -121,8 +121,14 @@ void PrerenderResourceThrottle::WillStartRequestOnUI(
if (prerender_contents) {
// Abort any prerenders that spawn requests that use unsupported HTTP
// methods or schemes.
- if (!PrerenderManager::IsValidHttpMethod(method)) {
- prerender_contents->Destroy(FINAL_STATUS_INVALID_HTTP_METHOD);
+ if (!prerender_contents->IsValidHttpMethod(method)) {
+ // If this is a full prerender, cancel the prerender in response to
+ // invalid requests. For prefetches, cancel invalid requests but keep the
+ // prefetch going, unless it's the main frame that's invalid.
+ if (prerender_contents->prerender_mode() == FULL_PRERENDER ||
+ resource_type == content::RESOURCE_TYPE_MAIN_FRAME) {
+ prerender_contents->Destroy(FINAL_STATUS_INVALID_HTTP_METHOD);
+ }
cancel = true;
} else if (!PrerenderManager::DoesSubresourceURLHaveValidScheme(url)) {
prerender_contents->Destroy(FINAL_STATUS_UNSUPPORTED_SCHEME);
« 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