diff options
-rw-r--r-- | chrome/browser/prerender/prerender_manager.cc | 26 | ||||
-rw-r--r-- | chrome/browser/prerender/prerender_manager.h | 10 |
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); }; |