| Index: chrome/browser/prerender/prerender_manager.h
|
| diff --git a/chrome/browser/prerender/prerender_manager.h b/chrome/browser/prerender/prerender_manager.h
|
| index fa53ae79abb3395633baf76926cf30513bda4845..dc4e6578b46dad3529f3346445575b619692d170 100644
|
| --- a/chrome/browser/prerender/prerender_manager.h
|
| +++ b/chrome/browser/prerender/prerender_manager.h
|
| @@ -97,6 +97,10 @@ class PrerenderManager : public base::RefCounted<PrerenderManager> {
|
| void MarkTabContentsAsNotPrerendered(TabContents* tc);
|
| bool IsTabContentsPrerendered(TabContents* tc) const;
|
|
|
| + static void set_rate_limit_enabled(bool enable) {
|
| + rate_limit_enabled_ = enable;
|
| + }
|
| +
|
| protected:
|
| virtual ~PrerenderManager();
|
|
|
| @@ -136,6 +140,8 @@ class PrerenderManager : public base::RefCounted<PrerenderManager> {
|
|
|
| static void RecordPrefetchTagObservedOnUIThread();
|
|
|
| + static bool DoesRateLimitAllowPrerender();
|
| +
|
| Profile* profile_;
|
|
|
| base::TimeDelta max_prerender_age_;
|
| @@ -160,6 +166,10 @@ class PrerenderManager : public base::RefCounted<PrerenderManager> {
|
| // Time interval at which periodic cleanups are performed.
|
| static const int kPeriodicCleanupIntervalMs = 1000;
|
|
|
| + // Time interval before a new prerender is allowed.
|
| + static const int kMinTimeBetweenPrerendersMs = 500;
|
| + static const int kMaxTimeBetweenPrerendersMs = 20000;
|
| +
|
| scoped_ptr<PrerenderContents::Factory> prerender_contents_factory_;
|
|
|
| static PrerenderManagerMode mode_;
|
| @@ -174,6 +184,11 @@ class PrerenderManager : public base::RefCounted<PrerenderManager> {
|
| // pages.
|
| base::RepeatingTimer<PrerenderManager> repeating_timer_;
|
|
|
| + // Track time of last prerender to limit prerender spam.
|
| + // TODO(dominich): This could be an average rate instead of a single time
|
| + static base::TimeTicks last_prerender_start_time_;
|
| + static bool rate_limit_enabled_;
|
| +
|
| DISALLOW_COPY_AND_ASSIGN(PrerenderManager);
|
| };
|
|
|
|
|