Index: chrome/browser/prerender/prerender_manager.cc |
diff --git a/chrome/browser/prerender/prerender_manager.cc b/chrome/browser/prerender/prerender_manager.cc |
index cb83264f840e68963048438db455114720bd6db3..f1590e710d96b03ff6e2a8bf3e67a36bba23242a 100644 |
--- a/chrome/browser/prerender/prerender_manager.cc |
+++ b/chrome/browser/prerender/prerender_manager.cc |
@@ -501,6 +501,14 @@ bool PrerenderManager::MaybeUsePrerenderedPage(TabContents* tab_contents, |
return false; |
} |
+ // If the prerendered page is in the middle of a cross-site navigation, |
+ // don't swap it in because there isn't a good way to merge histories. |
+ if (prerender_contents->IsCrossSiteNavigationPending()) { |
+ prerender_contents.release()->Destroy( |
+ FINAL_STATUS_CROSS_SITE_NAVIGATION_PENDING); |
+ return false; |
+ } |
+ |
int child_id, route_id; |
CHECK(prerender_contents->GetChildId(&child_id)); |
CHECK(prerender_contents->GetRouteId(&route_id)); |