diff options
author | shishir@chromium.org <shishir@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-05-09 21:31:10 +0000 |
---|---|---|
committer | shishir@chromium.org <shishir@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-05-09 21:31:10 +0000 |
commit | 3a6bf369258265d279cafdd95119382e71c8add0 (patch) | |
tree | 24cb6cdbd5d08da78e70f8d8c55d82b8d6ec3a57 /chrome | |
parent | 2755179b2322a31a8f63a00e4913c4fafbd74574 (diff) | |
download | chromium_src-3a6bf369258265d279cafdd95119382e71c8add0.zip chromium_src-3a6bf369258265d279cafdd95119382e71c8add0.tar.gz chromium_src-3a6bf369258265d279cafdd95119382e71c8add0.tar.bz2 |
Making PrerenderContents::Destroy() public and using it to cleanup
PrerenderContents in the PrerenderManager.
BUG=82028
TEST=Existing tests
Review URL: http://codereview.chromium.org/6948008
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@84686 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r-- | chrome/browser/prerender/prerender_contents.h | 8 | ||||
-rw-r--r-- | chrome/browser/prerender/prerender_manager.cc | 13 |
2 files changed, 8 insertions, 13 deletions
diff --git a/chrome/browser/prerender/prerender_contents.h b/chrome/browser/prerender/prerender_contents.h index 5bbc90d..33c5225 100644 --- a/chrome/browser/prerender/prerender_contents.h +++ b/chrome/browser/prerender/prerender_contents.h @@ -236,6 +236,10 @@ class PrerenderContents : public RenderViewHostDelegate, // derived classes to clean up. virtual void OnDestroy() {} + // Sets the final status, calls OnDestroy and adds |this| to the + // PrerenderManager's pending deletes list. + void Destroy(FinalStatus reason); + // Indicates whether to use the legacy code doing prerendering via // a RenderViewHost (false), or whether the new TabContent based prerendering // is to be used (true). @@ -267,10 +271,6 @@ class PrerenderContents : public RenderViewHostDelegate, void OnUpdateFaviconURL(int32 page_id, const std::vector<FaviconURL>& urls); void OnMaybeCancelPrerenderForHTML5Media(); - // Remove |this| from the PrerenderManager, set a final status, and - // delete |this|. - void Destroy(FinalStatus reason); - // Returns the RenderViewHost Delegate for this prerender. RenderViewHostDelegate* GetRenderViewHostDelegate(); diff --git a/chrome/browser/prerender/prerender_manager.cc b/chrome/browser/prerender/prerender_manager.cc index f76ae79..ad9efda 100644 --- a/chrome/browser/prerender/prerender_manager.cc +++ b/chrome/browser/prerender/prerender_manager.cc @@ -214,8 +214,7 @@ PrerenderManager::~PrerenderManager() { while (!prerender_list_.empty()) { PrerenderContentsData data = prerender_list_.front(); prerender_list_.pop_front(); - data.contents_->set_final_status(FINAL_STATUS_MANAGER_SHUTDOWN); - delete data.contents_; + data.contents_->Destroy(FINAL_STATUS_MANAGER_SHUTDOWN); } DeletePendingDeleteEntries(); } @@ -300,8 +299,7 @@ bool PrerenderManager::AddPreload( while (prerender_list_.size() > max_elements_) { data = prerender_list_.front(); prerender_list_.pop_front(); - data.contents_->set_final_status(FINAL_STATUS_EVICTED); - delete data.contents_; + data.contents_->Destroy(FINAL_STATUS_EVICTED); } StartSchedulingPeriodicCleanups(); return true; @@ -369,9 +367,7 @@ void PrerenderManager::DestroyPreloadForChildRouteIdPair( FindPrerenderContentsForChildRouteIdPair(child_route_id_pair); if (it != prerender_list_.end()) { PrerenderContents* prerender_contents = it->contents_; - prerender_contents->set_final_status(final_status); - prerender_contents->OnDestroy(); - MoveEntryToPendingDelete(prerender_contents); + prerender_contents->Destroy(final_status); } } @@ -382,8 +378,7 @@ void PrerenderManager::DeleteOldEntries() { if (IsPrerenderElementFresh(data.start_time_)) return; prerender_list_.pop_front(); - data.contents_->set_final_status(FINAL_STATUS_TIMED_OUT); - delete data.contents_; + data.contents_->Destroy(FINAL_STATUS_TIMED_OUT); } MaybeStopSchedulingPeriodicCleanups(); } |