| Index: chrome/browser/prerender/prerender_manager.cc | 
| diff --git a/chrome/browser/prerender/prerender_manager.cc b/chrome/browser/prerender/prerender_manager.cc | 
| index 2b80186a016af74f55beef070ac690160af1de9f..e12dead1031180caa82144c3b46d4acb1ace5216 100644 | 
| --- a/chrome/browser/prerender/prerender_manager.cc | 
| +++ b/chrome/browser/prerender/prerender_manager.cc | 
| @@ -147,6 +147,18 @@ void HandlePrefetchTagOnUIThread( | 
| prerender_manager->AddPreload(child_route_id_pair, url, referrer); | 
| } | 
|  | 
| +void DestroyPreloadForChildRouteIdPairOnUIThread( | 
| +    const base::WeakPtr<PrerenderManager>& prerender_manager_weak_ptr, | 
| +    const std::pair<int, int>& child_route_id_pair, | 
| +    FinalStatus final_status) { | 
| +  DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 
| +  PrerenderManager* prerender_manager = prerender_manager_weak_ptr.get(); | 
| +  if (!prerender_manager || !prerender_manager->is_enabled()) | 
| +    return; | 
| +  prerender_manager->DestroyPreloadForChildRouteIdPair(child_route_id_pair, | 
| +                                                       final_status); | 
| +} | 
| + | 
| PrerenderManager::PrerenderManager(Profile* profile) | 
| : rate_limit_enabled_(true), | 
| enabled_(true), | 
| @@ -306,6 +318,33 @@ void PrerenderManager::AddPendingPreload( | 
| it->second.push_back(PendingContentsData(url, referrer)); | 
| } | 
|  | 
| +void PrerenderManager::DestroyPreloadForChildRouteIdPair( | 
| +    const std::pair<int, int>& child_route_id_pair, | 
| +    FinalStatus final_status) { | 
| +  DCHECK(CalledOnValidThread()); | 
| +  for (std::list<PrerenderContentsData>::iterator it = prerender_list_.begin(); | 
| +       it != prerender_list_.end();) { | 
| +    PrerenderContents* prerender_contents = it->contents_; | 
| + | 
| +    int child_id; | 
| +    int route_id; | 
| +    bool has_child_id = prerender_contents->GetChildId(&child_id); | 
| +    bool has_route_id = has_child_id && | 
| +                        prerender_contents->GetRouteId(&route_id); | 
| + | 
| +    if (has_child_id && has_route_id && | 
| +        child_id == child_route_id_pair.first && | 
| +        route_id == child_route_id_pair.second) { | 
| +      prerender_contents->set_final_status(final_status); | 
| +      RemovePendingPreload(prerender_contents); | 
| +      delete prerender_contents; | 
| +      it = prerender_list_.erase(it); | 
| +    } else { | 
| +      ++it; | 
| +    } | 
| +  } | 
| +} | 
| + | 
| void PrerenderManager::DeleteOldEntries() { | 
| DCHECK(CalledOnValidThread()); | 
| while (!prerender_list_.empty()) { | 
|  |