| 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);
|
|
|