| Index: webkit/browser/appcache/appcache_service_unittest.cc
|
| diff --git a/webkit/browser/appcache/appcache_service_unittest.cc b/webkit/browser/appcache/appcache_service_unittest.cc
|
| index 7581793063056fb685d29d8a6c8afd4830a24493..4ae6b835fa73cc0ad1a2612d3f86351ce8d9889c 100644
|
| --- a/webkit/browser/appcache/appcache_service_unittest.cc
|
| +++ b/webkit/browser/appcache/appcache_service_unittest.cc
|
| @@ -317,4 +317,61 @@ TEST_F(AppCacheServiceTest, CheckAppCacheResponse) {
|
| base::RunLoop().RunUntilIdle();
|
| }
|
|
|
| +// Just tests the backoff scheduling function, not the actual reinit function.
|
| +TEST_F(AppCacheServiceTest, ScheduleReinitialize) {
|
| + const base::TimeDelta kNoDelay;
|
| + const base::TimeDelta kOneSecond(base::TimeDelta::FromSeconds(1));
|
| + const base::TimeDelta k30Seconds(base::TimeDelta::FromSeconds(30));
|
| + const base::TimeDelta kOneHour(base::TimeDelta::FromHours(1));
|
| +
|
| + // Do things get initialized as expected?
|
| + scoped_ptr<AppCacheService> service(new AppCacheService(NULL));
|
| + EXPECT_TRUE(service->last_reinit_time_.is_null());
|
| + EXPECT_FALSE(service->reinit_timer_.IsRunning());
|
| + EXPECT_EQ(kNoDelay, service->next_reinit_delay_);
|
| +
|
| + // Do we see artifacts of the timer pending and such?
|
| + service->ScheduleReinitialize();
|
| + EXPECT_TRUE(service->reinit_timer_.IsRunning());
|
| + EXPECT_EQ(kNoDelay, service->reinit_timer_.GetCurrentDelay());
|
| + EXPECT_EQ(k30Seconds, service->next_reinit_delay_);
|
| +
|
| + // Nothing should change if already scheduled
|
| + service->ScheduleReinitialize();
|
| + EXPECT_TRUE(service->reinit_timer_.IsRunning());
|
| + EXPECT_EQ(kNoDelay, service->reinit_timer_.GetCurrentDelay());
|
| + EXPECT_EQ(k30Seconds, service->next_reinit_delay_);
|
| +
|
| + // Does the delay increase as expected?
|
| + service->reinit_timer_.Stop();
|
| + service->last_reinit_time_ = base::Time::Now() - kOneSecond;
|
| + service->ScheduleReinitialize();
|
| + EXPECT_TRUE(service->reinit_timer_.IsRunning());
|
| + EXPECT_EQ(k30Seconds, service->reinit_timer_.GetCurrentDelay());
|
| + EXPECT_EQ(k30Seconds + k30Seconds, service->next_reinit_delay_);
|
| +
|
| + // Does the delay reset as expected?
|
| + service->reinit_timer_.Stop();
|
| + service->last_reinit_time_ = base::Time::Now() -
|
| + base::TimeDelta::FromHours(2);
|
| + service->ScheduleReinitialize();
|
| + EXPECT_TRUE(service->reinit_timer_.IsRunning());
|
| + EXPECT_EQ(kNoDelay, service->reinit_timer_.GetCurrentDelay());
|
| + EXPECT_EQ(k30Seconds, service->next_reinit_delay_);
|
| +
|
| + // Does the delay max out as expected?
|
| + service->reinit_timer_.Stop();
|
| + service->last_reinit_time_ = base::Time::Now() - kOneSecond;
|
| + service->next_reinit_delay_ = kOneHour;
|
| + service->ScheduleReinitialize();
|
| + EXPECT_TRUE(service->reinit_timer_.IsRunning());
|
| + EXPECT_EQ(kOneHour, service->reinit_timer_.GetCurrentDelay());
|
| + EXPECT_EQ(kOneHour, service->next_reinit_delay_);
|
| +
|
| + // Fine to delete while pending.
|
| + service.reset(NULL);
|
| +}
|
| +
|
| +
|
| +
|
| } // namespace appcache
|
|
|