Index: chrome/browser/prerender/prerender_manager.cc |
diff --git a/chrome/browser/prerender/prerender_manager.cc b/chrome/browser/prerender/prerender_manager.cc |
index bebccf23d64c5ad37b08a4b28ffda2c9541a4360..7daa0212e0135c2c699398337e5e986c9805e07e 100644 |
--- a/chrome/browser/prerender/prerender_manager.cc |
+++ b/chrome/browser/prerender/prerender_manager.cc |
@@ -234,8 +234,14 @@ PrerenderHandle* PrerenderManager::AddPrerenderFromLinkRelPrerender( |
RenderViewHost::FromID(process_id, route_id); |
if (!source_render_view_host) |
return NULL; |
+ WebContents* source_web_contents = |
+ WebContents::FromRenderViewHost(source_render_view_host); |
+ if (!source_web_contents) |
+ return NULL; |
+ // TODO(ajwong): This does not correctly handle storage for isolated apps. |
session_storage_namespace = |
- source_render_view_host->GetSessionStorageNamespace(); |
+ source_web_contents->GetController() |
+ .GetSessionStorageNamespaceMap().find("")->second; |
} |
return AddPrerender(ORIGIN_LINK_REL_PRERENDER, |
@@ -277,12 +283,13 @@ bool PrerenderManager::MaybeUsePrerenderedPage(WebContents* web_contents, |
DCHECK(CalledOnValidThread()); |
DCHECK(!IsWebContentsPrerendering(web_contents)); |
- RenderViewHost* old_render_view_host = web_contents->GetRenderViewHost(); |
- |
DeleteOldEntries(); |
DeletePendingDeleteEntries(); |
+ // TODO(ajwong): This doesn't handle isolated apps correctly. |
PrerenderData* prerender_data = FindPrerenderData( |
- url, old_render_view_host->GetSessionStorageNamespace()); |
+ url, |
+ web_contents->GetController().GetSessionStorageNamespaceMap() |
+ .find("")->second); |
if (!prerender_data) |
return false; |
DCHECK(prerender_data->contents_); |