Chromium Code Reviews| 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; |