Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4216)

Unified Diff: chrome/browser/prerender/prerender_manager.h

Issue 6677005: Limit prerender by only allowing one every X ms (X currently set to 500). (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Changing the histogram syntax to the right one for time Created 9 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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..65a245fcccdbcb9cd9c82bb3e157ed3f7479330a 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) {
cbentzel 2011/03/14 14:40:32 Why are these done statically? Why not per-Prerend
dominich 2011/03/14 18:10:10 Done.
+ 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,9 @@ 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;
+
scoped_ptr<PrerenderContents::Factory> prerender_contents_factory_;
static PrerenderManagerMode mode_;
@@ -174,6 +183,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);
};

Powered by Google App Engine
This is Rietveld 408576698