summaryrefslogtreecommitdiffstats
path: root/chrome/browser/prerender/prerender_manager.cc
diff options
context:
space:
mode:
authormmenke@chromium.org <mmenke@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-06-20 21:02:57 +0000
committermmenke@chromium.org <mmenke@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-06-20 21:02:57 +0000
commitcf5db4cbdfe677e4291cb8c077a472813af418af (patch)
tree3abf801ab00b4dffc67fd9994e7c4fa0c9c32ca9 /chrome/browser/prerender/prerender_manager.cc
parent970fb675f98ba3f0a243d1f9f0e9ab8b15f7ac45 (diff)
downloadchromium_src-cf5db4cbdfe677e4291cb8c077a472813af418af.zip
chromium_src-cf5db4cbdfe677e4291cb8c077a472813af418af.tar.gz
chromium_src-cf5db4cbdfe677e4291cb8c077a472813af418af.tar.bz2
Clear prerender history on clear history.
Also cancel active prerenders on clear history or cache. BUG=none TEST=PrerenderManagerTest.ClearTest, PrerenderHistoryTest.GetAsValue, PrerenderBrowserTest.PrerenderClearHistory, PrerenderBrowserTest.PrerenderClearCache Review URL: http://codereview.chromium.org/7205007 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@89729 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/prerender/prerender_manager.cc')
-rw-r--r--chrome/browser/prerender/prerender_manager.cc29
1 files changed, 22 insertions, 7 deletions
diff --git a/chrome/browser/prerender/prerender_manager.cc b/chrome/browser/prerender/prerender_manager.cc
index f4f4a31..9d79e4a 100644
--- a/chrome/browser/prerender/prerender_manager.cc
+++ b/chrome/browser/prerender/prerender_manager.cc
@@ -10,6 +10,7 @@
#include "base/metrics/field_trial.h"
#include "base/metrics/histogram.h"
#include "base/time.h"
+#include "base/values.h"
#include "base/utf_string_conversions.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/favicon/favicon_tab_helper.h"
@@ -266,13 +267,7 @@ PrerenderManager::PrerenderManager(Profile* profile,
}
PrerenderManager::~PrerenderManager() {
- DeleteOldTabContents();
- while (!prerender_list_.empty()) {
- PrerenderContentsData data = prerender_list_.front();
- prerender_list_.pop_front();
- data.contents_->Destroy(FINAL_STATUS_MANAGER_SHUTDOWN);
- }
- DeletePendingDeleteEntries();
+ DestroyAllContents(FINAL_STATUS_MANAGER_SHUTDOWN);
}
void PrerenderManager::SetPrerenderContentsFactory(
@@ -1001,6 +996,16 @@ Value* PrerenderManager::GetAsValue() const {
return dict_value;
}
+void PrerenderManager::ClearData(int clear_flags) {
+ DCHECK_GE(clear_flags, 0);
+ DCHECK_LT(clear_flags, CLEAR_MAX);
+ if (clear_flags & CLEAR_PRERENDER_CONTENTS)
+ DestroyAllContents(FINAL_STATUS_CACHE_OR_HISTORY_CLEARED);
+ // This has to be second, since destroying prerenders can add to the history.
+ if (clear_flags & CLEAR_PRERENDER_HISTORY)
+ prerender_history_->Clear();
+}
+
Value* PrerenderManager::GetActivePrerendersAsValue() const {
ListValue* list_value = new ListValue();
for (std::list<PrerenderContentsData>::const_iterator it =
@@ -1021,4 +1026,14 @@ void PrerenderManager::AddToHistory(PrerenderContents* contents) {
prerender_history_->AddEntry(entry);
}
+void PrerenderManager::DestroyAllContents(FinalStatus final_status) {
+ DeleteOldTabContents();
+ while (!prerender_list_.empty()) {
+ PrerenderContentsData data = prerender_list_.front();
+ prerender_list_.pop_front();
+ data.contents_->Destroy(final_status);
+ }
+ DeletePendingDeleteEntries();
+}
+
} // namespace prerender