summaryrefslogtreecommitdiffstats
path: root/chrome/browser/prerender/prerender_manager.cc
diff options
context:
space:
mode:
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