Index: content/browser/renderer_host/resource_dispatcher_host.cc |
=================================================================== |
--- content/browser/renderer_host/resource_dispatcher_host.cc (revision 86075) |
+++ content/browser/renderer_host/resource_dispatcher_host.cc (working copy) |
@@ -26,6 +26,7 @@ |
#include "chrome/browser/external_protocol_handler.h" |
#include "chrome/browser/net/url_request_tracking.h" |
#include "chrome/browser/prerender/prerender_manager.h" |
+#include "chrome/browser/prerender/prerender_tracker.h" |
#include "chrome/browser/profiles/profile.h" |
#include "chrome/browser/renderer_host/download_resource_handler.h" |
#include "chrome/browser/renderer_host/safe_browsing_resource_handler.h" |
@@ -432,7 +433,9 @@ |
} |
const GURL referrer = MaybeStripReferrer(request_data.referrer); |
- const bool is_prerendering = IsPrerenderingChildRoutePair(child_id, route_id); |
+ const bool is_prerendering = |
+ prerender::PrerenderTracker::GetInstance()->IsPrerenderingOnIOThread( |
+ child_id, route_id); |
// Handle a PREFETCH resource type. If prefetch is disabled, squelch the |
// request. If prerendering is enabled, trigger a prerender for the URL |
@@ -467,16 +470,11 @@ |
// Abort any prerenders that spawn requests that use invalid HTTP methods. |
if (is_prerendering && |
!prerender::PrerenderManager::IsValidHttpMethod(request_data.method)) { |
- BrowserThread::PostTask( |
- BrowserThread::UI, FROM_HERE, |
- NewRunnableFunction( |
- prerender::DestroyPreloadForRenderView, |
- resource_context.prerender_manager(), |
- child_id, |
- route_id, |
- prerender::FINAL_STATUS_INVALID_HTTP_METHOD)); |
- AbortRequestBeforeItStarts(filter_, sync_result, route_id, request_id); |
- return; |
+ if (prerender::PrerenderTracker::GetInstance()->TryCancelOnIOThread( |
+ child_id, route_id, prerender::FINAL_STATUS_INVALID_HTTP_METHOD)) { |
+ AbortRequestBeforeItStarts(filter_, sync_result, route_id, request_id); |
+ return; |
+ } |
} |
// Construct the event handler. |
@@ -2036,29 +2034,7 @@ |
} |
} |
-void ResourceDispatcherHost::AddPrerenderChildRoutePair(int child_id, |
- int route_id) { |
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
- DCHECK(!IsPrerenderingChildRoutePair(child_id, route_id)); |
- prerender_child_route_pairs_.insert(std::make_pair(child_id, route_id)); |
-} |
-void ResourceDispatcherHost::RemovePrerenderChildRoutePair(int child_id, |
- int route_id) { |
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
- DCHECK(IsPrerenderingChildRoutePair(child_id, route_id)); |
- prerender_child_route_pairs_.erase(std::make_pair(child_id, route_id)); |
-} |
- |
-bool ResourceDispatcherHost::IsPrerenderingChildRoutePair(int child_id, |
- int route_id) const { |
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
- std::pair<int, int> c_r_pair = std::make_pair(child_id, route_id); |
- return (prerender_child_route_pairs_.find(c_r_pair) != |
- prerender_child_route_pairs_.end()); |
-} |
- |
- |
// static |
bool ResourceDispatcherHost::is_prefetch_enabled() { |
return is_prefetch_enabled_; |