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