Index: chrome/browser/prerender/prerender_manager.cc |
diff --git a/chrome/browser/prerender/prerender_manager.cc b/chrome/browser/prerender/prerender_manager.cc |
index c2f0e0053d047b50117d8c777f7a4cb788f287ba..68e063a437b15f279c580ef0f9eff2f339877400 100644 |
--- a/chrome/browser/prerender/prerender_manager.cc |
+++ b/chrome/browser/prerender/prerender_manager.cc |
@@ -227,10 +227,11 @@ void HandleTag( |
std::pair<int, int> child_route_id_pair = std::make_pair(render_process_id, |
render_view_id); |
- prerender_manager->AddPreload(child_route_id_pair, url, referrer); |
+ prerender_manager->AddPrerender(ORIGIN_LINK_REL_PRERENDER, |
+ child_route_id_pair, url, referrer); |
} |
-void DestroyPreloadForRenderView( |
+void DestroyPrerenderForRenderView( |
const base::WeakPtr<PrerenderManager>& prerender_manager_weak_ptr, |
int render_process_id, |
int render_view_id, |
@@ -240,7 +241,7 @@ void DestroyPreloadForRenderView( |
if (!prerender_manager) |
return; |
- prerender_manager->DestroyPreloadForChildRouteIdPair( |
+ prerender_manager->DestroyPrerenderForChildRouteIdPair( |
std::make_pair(render_process_id, render_view_id), |
final_status); |
} |
@@ -276,7 +277,8 @@ void PrerenderManager::SetPrerenderContentsFactory( |
prerender_contents_factory_.reset(prerender_contents_factory); |
} |
-bool PrerenderManager::AddPreload( |
+bool PrerenderManager::AddPrerender( |
+ Origin origin, |
const std::pair<int, int>& child_route_id_pair, |
const GURL& url_arg, |
const GURL& referrer) { |
@@ -285,7 +287,7 @@ bool PrerenderManager::AddPreload( |
// If the referring page is prerendering, defer the prerender. |
if (FindPrerenderContentsForChildRouteIdPair(child_route_id_pair) != |
prerender_list_.end()) { |
- AddPendingPreload(child_route_id_pair, url_arg, referrer); |
+ AddPendingPrerender(child_route_id_pair, url_arg, referrer); |
return true; |
} |
@@ -313,7 +315,7 @@ bool PrerenderManager::AddPreload( |
// case, when a new tab is added to a process used for prerendering. |
if (RenderProcessHost::ShouldTryToUseExistingProcessHost() && |
!RenderProcessHost::run_renderer_in_process()) { |
- RecordFinalStatus(FINAL_STATUS_TOO_MANY_PROCESSES); |
+ RecordFinalStatus(origin, FINAL_STATUS_TOO_MANY_PROCESSES); |
return false; |
} |
@@ -322,7 +324,7 @@ bool PrerenderManager::AddPreload( |
// Cancel the prerender. We could add it to the pending prerender list but |
// this doesn't make sense as the next prerender request will be triggered |
// by a navigation and is unlikely to be the same site. |
- RecordFinalStatus(FINAL_STATUS_RATE_LIMIT_EXCEEDED); |
+ RecordFinalStatus(origin, FINAL_STATUS_RATE_LIMIT_EXCEEDED); |
return false; |
} |
@@ -335,13 +337,13 @@ bool PrerenderManager::AddPreload( |
// Don't prerender page if parent RenderViewHost no longer exists, or it has |
// no view. The latter should only happen when the RenderView has closed. |
if (!source_render_view_host || !source_render_view_host->view()) { |
- RecordFinalStatus(FINAL_STATUS_SOURCE_RENDER_VIEW_CLOSED); |
+ RecordFinalStatus(origin, FINAL_STATUS_SOURCE_RENDER_VIEW_CLOSED); |
return false; |
} |
} |
PrerenderContents* prerender_contents = |
- CreatePrerenderContents(url, referrer); |
+ CreatePrerenderContents(url, referrer, origin); |
if (!prerender_contents || !prerender_contents->Init()) |
return false; |
@@ -349,6 +351,9 @@ bool PrerenderManager::AddPreload( |
PrerenderContentsData data(prerender_contents, GetCurrentTime()); |
prerender_list_.push_back(data); |
+ |
+ RecordOrigin(origin); |
+ |
if (IsControlGroup()) { |
data.contents_->set_final_status(FINAL_STATUS_CONTROL_GROUP); |
} else { |
@@ -364,7 +369,11 @@ bool PrerenderManager::AddPreload( |
return true; |
} |
-void PrerenderManager::AddPendingPreload( |
+bool PrerenderManager::AddPrerenderWithNoTag(Origin origin, const GURL& url) { |
cbentzel
2011/06/22 17:27:32
I don't really like the NoTag name, but can't thin
dominich
2011/06/22 19:00:51
That to me suggests that it's a prerender of the t
cbentzel
2011/06/22 19:08:40
That sounds good.
|
+ return AddPrerender(origin, std::make_pair(-1, -1), url, GURL()); |
+} |
+ |
+void PrerenderManager::AddPendingPrerender( |
const std::pair<int, int>& child_route_id_pair, |
const GURL& url, |
const GURL& referrer) { |
@@ -403,7 +412,7 @@ std::list<PrerenderManager::PrerenderContentsData>::iterator |
return it; |
} |
-void PrerenderManager::DestroyPreloadForChildRouteIdPair( |
+void PrerenderManager::DestroyPrerenderForChildRouteIdPair( |
const std::pair<int, int>& child_route_id_pair, |
FinalStatus final_status) { |
DCHECK(CalledOnValidThread()); |
@@ -453,9 +462,9 @@ PrerenderContents* PrerenderManager::GetEntry(const GURL& url) { |
return GetEntryButNotSpecifiedTC(url, NULL); |
} |
-bool PrerenderManager::MaybeUsePreloadedPage(TabContents* tab_contents, |
- const GURL& url, |
- bool has_opener_set) { |
+bool PrerenderManager::MaybeUsePrerenderedPage(TabContents* tab_contents, |
+ const GURL& url, |
+ bool has_opener_set) { |
DCHECK(CalledOnValidThread()); |
scoped_ptr<PrerenderContents> prerender_contents( |
GetEntryButNotSpecifiedTC(url, tab_contents)); |
@@ -560,7 +569,8 @@ bool PrerenderManager::MaybeUsePreloadedPage(TabContents* tab_contents, |
for (std::vector<PendingContentsData>::iterator content_it = |
pending_it->second.begin(); |
content_it != pending_it->second.end(); ++content_it) { |
- AddPreload(pending_it->first, content_it->url_, content_it->referrer_); |
+ AddPrerender(ORIGIN_PENDING_LINK_REL_PRERENDER, |
cbentzel
2011/06/22 17:27:32
Should the pending ones maintain a cached origin,
dominich
2011/06/22 19:00:51
Done.
|
+ pending_it->first, content_it->url_, content_it->referrer_); |
} |
pending_prerender_list_.erase(pending_it); |
} |
@@ -588,7 +598,7 @@ void PrerenderManager::MoveEntryToPendingDelete(PrerenderContents* entry) { |
it != prerender_list_.end(); |
++it) { |
if (it->contents_ == entry) { |
- RemovePendingPreload(entry); |
+ RemovePendingPrerender(entry); |
prerender_list_.erase(it); |
break; |
} |
@@ -629,10 +639,11 @@ bool PrerenderManager::IsPrerenderElementFresh(const base::Time start) const { |
PrerenderContents* PrerenderManager::CreatePrerenderContents( |
const GURL& url, |
- const GURL& referrer) { |
+ const GURL& referrer, |
+ Origin origin) { |
DCHECK(CalledOnValidThread()); |
return prerender_contents_factory_->CreatePrerenderContents( |
- this, prerender_tracker_, profile_, url, referrer); |
+ this, prerender_tracker_, profile_, url, referrer, origin); |
} |
void PrerenderManager::DeletePendingDeleteEntries() { |
@@ -772,7 +783,7 @@ void PrerenderManager::RecordTagObserved() { |
last_prerender_seen_time_ = base::TimeTicks::Now(); |
} |
-void PrerenderManager::RemovePendingPreload(PrerenderContents* entry) { |
+void PrerenderManager::RemovePendingPrerender(PrerenderContents* entry) { |
DCHECK(CalledOnValidThread()); |
int child_id; |
int route_id; |