summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/prerender/prerender_manager.cc26
-rw-r--r--chrome/browser/prerender/prerender_manager.h10
2 files changed, 11 insertions, 25 deletions
diff --git a/chrome/browser/prerender/prerender_manager.cc b/chrome/browser/prerender/prerender_manager.cc
index 1e64672..5d9da1f 100644
--- a/chrome/browser/prerender/prerender_manager.cc
+++ b/chrome/browser/prerender/prerender_manager.cc
@@ -57,8 +57,7 @@ PrerenderManager::PrerenderManager(Profile* profile)
max_prerender_age_(base::TimeDelta::FromSeconds(
kDefaultMaxPrerenderAgeSeconds)),
max_elements_(kDefaultMaxPrerenderElements),
- prerender_contents_factory_(PrerenderContents::CreateFactory()),
- periodic_cleanups_active_(false) {
+ prerender_contents_factory_(PrerenderContents::CreateFactory()) {
}
PrerenderManager::~PrerenderManager() {
@@ -267,26 +266,16 @@ bool PrerenderManager::ShouldRecordWindowedPPLT() const {
}
void PrerenderManager::StartSchedulingPeriodicCleanups() {
- if (periodic_cleanups_active_)
+ if (repeating_timer_.IsRunning())
return;
- periodic_cleanups_active_ = true;
- SchedulePeriodicCleanup();
+ repeating_timer_.Start(
+ base::TimeDelta::FromMilliseconds(kPeriodicCleanupIntervalMs),
+ this,
+ &PrerenderManager::PeriodicCleanup);
}
void PrerenderManager::StopSchedulingPeriodicCleanups() {
- if (!periodic_cleanups_active_)
- return;
- periodic_cleanups_active_ = false;
-}
-
-void PrerenderManager::SchedulePeriodicCleanup() {
- if (!periodic_cleanups_active_)
- return;
- BrowserThread::PostDelayedTask(
- BrowserThread::UI,
- FROM_HERE,
- NewRunnableMethod(this, &PrerenderManager::PeriodicCleanup),
- kPeriodicCleanupIntervalMs);
+ repeating_timer_.Stop();
}
void PrerenderManager::PeriodicCleanup() {
@@ -305,7 +294,6 @@ void PrerenderManager::PeriodicCleanup() {
++it) {
(*it)->DestroyWhenUsingTooManyResources();
}
- SchedulePeriodicCleanup();
}
} // namespace prerender
diff --git a/chrome/browser/prerender/prerender_manager.h b/chrome/browser/prerender/prerender_manager.h
index 8aeaacc..a78436e 100644
--- a/chrome/browser/prerender/prerender_manager.h
+++ b/chrome/browser/prerender/prerender_manager.h
@@ -12,6 +12,7 @@
#include "base/ref_counted.h"
#include "base/scoped_ptr.h"
#include "base/time.h"
+#include "base/timer.h"
#include "chrome/browser/prerender/prerender_contents.h"
#include "googleurl/src/gurl.h"
@@ -93,9 +94,6 @@ class PrerenderManager : public base::RefCounted<PrerenderManager> {
void StartSchedulingPeriodicCleanups();
void StopSchedulingPeriodicCleanups();
- // Schedules a periodic cleanup.
- void SchedulePeriodicCleanup();
-
// Deletes stale prerendered PrerenderContents.
// Also identifies and kills PrerenderContents that use too much
// resources.
@@ -149,9 +147,9 @@ class PrerenderManager : public base::RefCounted<PrerenderManager> {
// This static variable should only be modified on the UI thread.
static base::TimeTicks last_prefetch_seen_time_;
- // Indicates whether we are currently performing periodic cleanups
- // of pending prerendered pages.
- bool periodic_cleanups_active_;
+ // RepeatingTimer to perform periodic cleanups of pending prerendered
+ // pages.
+ base::RepeatingTimer<PrerenderManager> repeating_timer_;
DISALLOW_COPY_AND_ASSIGN(PrerenderManager);
};