Index: chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.cc |
diff --git a/chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.cc b/chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.cc |
index 063460e8c548fe80a617907b4fdef2a54ba53df6..f18cf48dc0227c71ead1c0221eda8b8abef14122 100644 |
--- a/chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.cc |
+++ b/chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.cc |
@@ -228,15 +228,15 @@ bool ChromeResourceDispatcherHostDelegate::ShouldBeginRequest( |
// Abort any prerenders that spawn requests that use invalid HTTP methods |
// or invalid schemes. |
if (prerender_tracker_->IsPrerenderingOnIOThread(child_id, route_id)) { |
- if (!prerender::PrerenderManager::IsValidHttpMethod(method)) { |
- prerender_tracker_->TryCancelOnIOThread( |
- child_id, route_id, prerender::FINAL_STATUS_INVALID_HTTP_METHOD); |
+ if (!prerender::PrerenderManager::IsValidHttpMethod(method) && |
+ prerender_tracker_->TryCancelOnIOThread( |
+ child_id, route_id, prerender::FINAL_STATUS_INVALID_HTTP_METHOD)) { |
return false; |
} |
- if (!prerender::PrerenderManager::DoesSubresourceURLHaveValidScheme(url)) { |
+ if (!prerender::PrerenderManager::DoesSubresourceURLHaveValidScheme(url) && |
+ prerender_tracker_->TryCancelOnIOThread( |
+ child_id, route_id, prerender::FINAL_STATUS_UNSUPPORTED_SCHEME)) { |
ReportUnsupportedPrerenderScheme(url); |
- prerender_tracker_->TryCancelOnIOThread( |
- child_id, route_id, prerender::FINAL_STATUS_UNSUPPORTED_SCHEME); |
return false; |
} |
} |
@@ -425,11 +425,11 @@ bool ChromeResourceDispatcherHostDelegate::HandleExternalProtocol( |
return false; |
#else |
- if (prerender_tracker_->IsPrerenderingOnIOThread(child_id, route_id)) { |
+ if (prerender_tracker_->IsPrerenderingOnIOThread(child_id, route_id) && |
+ prerender_tracker_->TryCancel( |
+ child_id, route_id, prerender::FINAL_STATUS_UNSUPPORTED_SCHEME)) { |
ReportPrerenderSchemeCancelReason( |
PRERENDER_SCHEME_CANCEL_REASON_EXTERNAL_PROTOCOL); |
- prerender_tracker_->TryCancel( |
- child_id, route_id, prerender::FINAL_STATUS_UNSUPPORTED_SCHEME); |
return false; |
} |
@@ -651,10 +651,10 @@ void ChromeResourceDispatcherHostDelegate::OnRequestRedirected( |
if (!prerender::PrerenderManager::DoesURLHaveValidScheme(redirect_url) && |
ResourceRequestInfo::ForRequest(request)->GetAssociatedRenderView( |
&child_id, &route_id) && |
- prerender_tracker_->IsPrerenderingOnIOThread(child_id, route_id)) { |
+ prerender_tracker_->IsPrerenderingOnIOThread(child_id, route_id) && |
+ prerender_tracker_->TryCancel( |
+ child_id, route_id, prerender::FINAL_STATUS_UNSUPPORTED_SCHEME)) { |
ReportUnsupportedPrerenderScheme(redirect_url); |
- prerender_tracker_->TryCancel( |
- child_id, route_id, prerender::FINAL_STATUS_UNSUPPORTED_SCHEME); |
request->Cancel(); |
} |
} |