Index: content/browser/dom_storage/dom_storage_area_unittest.cc |
diff --git a/content/browser/dom_storage/dom_storage_area_unittest.cc b/content/browser/dom_storage/dom_storage_area_unittest.cc |
index c074cc0709bc0840638e131181d7cdb5160449d4..1115590996b515bab42baf391acafcefc4c60dea 100644 |
--- a/content/browser/dom_storage/dom_storage_area_unittest.cc |
+++ b/content/browser/dom_storage/dom_storage_area_unittest.cc |
@@ -472,4 +472,51 @@ TEST_F(DOMStorageAreaTest, DatabaseFileNames) { |
base::FilePath().AppendASCII(".extensiononly"))); |
} |
+TEST_F(DOMStorageAreaTest, RateLimiter) { |
+ // Limit to 1000 samples per second |
+ DOMStorageArea::RateLimiter rate_limiter( |
+ 1000, base::TimeDelta::FromSeconds(1)); |
+ |
+ // No samples have been added so no time/delay should be needed. |
+ EXPECT_EQ(base::TimeDelta(), |
+ rate_limiter.ComputeTimeNeeded()); |
+ EXPECT_EQ(base::TimeDelta(), |
+ rate_limiter.ComputeDelayNeeded(base::TimeDelta())); |
+ EXPECT_EQ(base::TimeDelta(), |
+ rate_limiter.ComputeDelayNeeded(base::TimeDelta::FromDays(1))); |
+ |
+ // Add a seconds worth of samples. |
+ rate_limiter.add_samples(1000); |
+ EXPECT_EQ(base::TimeDelta::FromSeconds(1), |
+ rate_limiter.ComputeTimeNeeded()); |
+ EXPECT_EQ(base::TimeDelta::FromSeconds(1), |
+ rate_limiter.ComputeDelayNeeded(base::TimeDelta())); |
+ EXPECT_EQ(base::TimeDelta(), |
+ rate_limiter.ComputeDelayNeeded(base::TimeDelta::FromSeconds(1))); |
+ EXPECT_EQ(base::TimeDelta::FromMilliseconds(250), |
+ rate_limiter.ComputeDelayNeeded( |
+ base::TimeDelta::FromMilliseconds(750))); |
+ EXPECT_EQ(base::TimeDelta(), |
+ rate_limiter.ComputeDelayNeeded( |
+ base::TimeDelta::FromDays(1))); |
+ |
+ // And another half seconds worth. |
+ rate_limiter.add_samples(500); |
+ EXPECT_EQ(base::TimeDelta::FromMilliseconds(1500), |
+ rate_limiter.ComputeTimeNeeded()); |
+ EXPECT_EQ(base::TimeDelta::FromMilliseconds(1500), |
+ rate_limiter.ComputeDelayNeeded(base::TimeDelta())); |
+ EXPECT_EQ(base::TimeDelta::FromMilliseconds(500), |
+ rate_limiter.ComputeDelayNeeded(base::TimeDelta::FromSeconds(1))); |
+ EXPECT_EQ(base::TimeDelta::FromMilliseconds(750), |
+ rate_limiter.ComputeDelayNeeded( |
+ base::TimeDelta::FromMilliseconds(750))); |
+ EXPECT_EQ(base::TimeDelta(), |
+ rate_limiter.ComputeDelayNeeded( |
+ base::TimeDelta::FromMilliseconds(1500))); |
+ EXPECT_EQ(base::TimeDelta(), |
+ rate_limiter.ComputeDelayNeeded( |
+ base::TimeDelta::FromDays(1))); |
+} |
+ |
} // namespace content |