Chromium Code Reviews| Index: chrome/browser/prerender/prerender_manager_unittest.cc |
| diff --git a/chrome/browser/prerender/prerender_manager_unittest.cc b/chrome/browser/prerender/prerender_manager_unittest.cc |
| index 722bc332d76cf06b6b2194458ad112f3746ed9d5..ee482b9cd40cf1d622d23ce92ac4e21b21bedbfc 100644 |
| --- a/chrome/browser/prerender/prerender_manager_unittest.cc |
| +++ b/chrome/browser/prerender/prerender_manager_unittest.cc |
| @@ -53,13 +53,19 @@ class TestPrerenderManager : public PrerenderManager { |
| TestPrerenderManager() |
| : PrerenderManager(NULL), |
| time_(base::Time::Now()), |
| + time_ticks_(base::TimeTicks::Now()), |
| next_pc_(NULL) { |
| + rate_limit_enabled_ = false; |
| } |
| void AdvanceTime(base::TimeDelta delta) { |
| time_ += delta; |
| } |
| + void AdvanceTimeTicks(base::TimeDelta delta) { |
| + time_ticks_ += delta; |
| + } |
| + |
| void SetNextPrerenderContents(PrerenderContents* pc) { |
| next_pc_.reset(pc); |
| } |
| @@ -69,6 +75,8 @@ class TestPrerenderManager : public PrerenderManager { |
| return AddPreload(url, std::vector<GURL>(), GURL()); |
| } |
| + void set_rate_limit_enabled(bool enabled) { rate_limit_enabled_ = true; } |
| + |
| PrerenderContents* next_pc() { return next_pc_.get(); } |
| protected: |
| @@ -84,6 +92,10 @@ class TestPrerenderManager : public PrerenderManager { |
| return time_; |
| } |
| + virtual base::TimeTicks GetCurrentTimeTicks() const OVERRIDE { |
| + return time_ticks_; |
| + } |
| + |
| virtual PrerenderContents* CreatePrerenderContents( |
| const GURL& url, |
| const std::vector<GURL>& alias_urls, |
| @@ -93,6 +105,7 @@ class TestPrerenderManager : public PrerenderManager { |
| } |
| base::Time time_; |
| + base::TimeTicks time_ticks_; |
| scoped_ptr<PrerenderContents> next_pc_; |
| }; |
| @@ -272,4 +285,29 @@ TEST_F(PrerenderManagerTest, AliasURLTest) { |
| delete pc; |
| } |
| -} // naemspace prerender |
| +// Ensure that we ignore prerender requests within the rate limit. |
| +TEST_F(PrerenderManagerTest, RateLimitTest) { |
| + GURL url("http://www.google.com/"); |
| + DummyPrerenderContents* pc = |
| + new DummyPrerenderContents(prerender_manager_.get(), url, |
| + FINAL_STATUS_MANAGER_SHUTDOWN); |
| + DummyPrerenderContents* null = NULL; |
| + prerender_manager_->SetNextPrerenderContents(pc); |
| + EXPECT_TRUE(prerender_manager_->AddSimplePreload(url)); |
| + EXPECT_EQ(null, prerender_manager_->next_pc()); |
| + EXPECT_TRUE(pc->has_started()); |
| + |
| + prerender_manager_->set_rate_limit_enabled(true); |
| + prerender_manager_->AdvanceTimeTicks(base::TimeDelta::FromMilliseconds(1)); |
| + |
| + GURL url1("http://news.google.com/"); |
| + DummyPrerenderContents* rate_limit_pc = |
| + new DummyPrerenderContents(prerender_manager_.get(), url1, |
| + FINAL_STATUS_MANAGER_SHUTDOWN); |
| + prerender_manager_->SetNextPrerenderContents(rate_limit_pc); |
| + EXPECT_FALSE(prerender_manager_->AddSimplePreload(url1)); |
|
cbentzel
2011/03/18 17:31:19
You should also test that the rate limit does not
dominich
2011/03/18 19:11:46
Done.
|
| + prerender_manager_->set_rate_limit_enabled(false); |
| +} |
| + |
| + |
|
cbentzel
2011/03/18 17:31:19
Nit: extra newline
dominich
2011/03/18 19:11:46
Done.
|
| +} // namespace prerender |