Index: chrome/browser/prerender/prerender_manager.cc |
diff --git a/chrome/browser/prerender/prerender_manager.cc b/chrome/browser/prerender/prerender_manager.cc |
index 954edb55bb6d2bfff58f8189336f8b0ef0ab520a..7a3efcf6f231ff395427ee73f20d1e099fe83899 100644 |
--- a/chrome/browser/prerender/prerender_manager.cc |
+++ b/chrome/browser/prerender/prerender_manager.cc |
@@ -392,6 +392,15 @@ PrerenderHandle* PrerenderManager::AddPrerenderFromLocalPredictor( |
size, session_storage_namespace); |
} |
+PrerenderHandle* PrerenderManager::AddPrerenderFromExternalRequest( |
+ const GURL& url, |
+ const content::Referrer& referrer, |
+ SessionStorageNamespace* session_storage_namespace, |
+ const gfx::Size& size) { |
+ return AddPrerender(ORIGIN_EXTERNAL_REQUEST, -1, url, referrer, size, |
+ session_storage_namespace); |
+} |
+ |
void PrerenderManager::DestroyPrerenderForRenderView( |
int process_id, int view_id, FinalStatus final_status) { |
DCHECK(CalledOnValidThread()); |
@@ -785,6 +794,23 @@ bool PrerenderManager::IsWebContentsPrerendering( |
return false; |
} |
+bool PrerenderManager::HasPrerenderedUrl( |
+ GURL url, |
+ content::WebContents* web_contents) const { |
+ content::SessionStorageNamespace* session_storage_namespace = web_contents-> |
+ GetController().GetDefaultSessionStorageNamespace(); |
+ |
+ for (ScopedVector<PrerenderData>::const_iterator it = |
+ active_prerenders_.begin(); |
+ it != active_prerenders_.end(); ++it) { |
+ PrerenderContents* prerender_contents = (*it)->contents(); |
+ if (prerender_contents->Matches(url, session_storage_namespace)) { |
+ return true; |
+ } |
+ } |
+ return false; |
+} |
+ |
PrerenderContents* PrerenderManager::GetPrerenderContents( |
const content::WebContents* web_contents) const { |
DCHECK(CalledOnValidThread()); |