Index: chrome/browser/prerender/prerender_manager.cc |
=================================================================== |
--- chrome/browser/prerender/prerender_manager.cc (revision 184822) |
+++ chrome/browser/prerender/prerender_manager.cc (working copy) |
@@ -271,6 +271,20 @@ |
.GetDefaultSessionStorageNamespace(); |
} |
+ // If the prerender request comes from a recently cancelled prerender that |
+ // |this| still owns, then abort the prerender. |
+ for (ScopedVector<PrerenderData>::iterator it = to_delete_prerenders_.begin(); |
+ it != to_delete_prerenders_.end(); ++it) { |
+ PrerenderContents* prerender_contents = (*it)->contents(); |
+ int contents_child_id; |
+ int contents_route_id; |
+ if (prerender_contents->GetChildId(&contents_child_id) && |
+ prerender_contents->GetRouteId(&contents_route_id) && |
+ contents_child_id == process_id && contents_route_id == route_id) { |
gavinp
2013/02/27 19:29:47
This expression freaks me out a bit. I had to stop
|
+ return NULL; |
+ } |
+ } |
+ |
if (PrerenderData* parent_prerender_data = |
FindPrerenderDataForChildAndRoute(process_id, route_id)) { |
// Instead of prerendering from inside of a running prerender, we will defer |