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

Side by Side Diff: chrome/browser/browsing_data/cache_counter_browsertest.cc

Issue 2556363003: Refactor cache counting into a separate helper class (Closed)
Patch Set: extract cache_test_util and fixes Created 4 years 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2015 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 // 4 //
5 // Note that this file only tests the basic behavior of the cache counter, as in 5 // Note that this file only tests the basic behavior of the cache counter, as in
6 // when it counts and when not, when result is nonzero and when not. It does not 6 // when it counts and when not, when result is nonzero and when not. It does not
7 // test whether the result of the counting is correct. This is the 7 // test whether the result of the counting is correct. This is the
8 // responsibility of a lower layer, and is tested in 8 // responsibility of a lower layer, and is tested in
9 // DiskCacheBackendTest.CalculateSizeOfAllEntries in net_unittests. 9 // DiskCacheBackendTest.CalculateSizeOfAllEntries in net_unittests.
10 10
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
131 run_loop_->Quit(); 131 run_loop_->Quit();
132 } 132 }
133 133
134 // Callback from the counter. 134 // Callback from the counter.
135 void CountingCallback( 135 void CountingCallback(
136 std::unique_ptr<browsing_data::BrowsingDataCounter::Result> result) { 136 std::unique_ptr<browsing_data::BrowsingDataCounter::Result> result) {
137 DCHECK_CURRENTLY_ON(BrowserThread::UI); 137 DCHECK_CURRENTLY_ON(BrowserThread::UI);
138 finished_ = result->Finished(); 138 finished_ = result->Finished();
139 139
140 if (finished_) { 140 if (finished_) {
141 result_ = 141 auto cache_result = static_cast<CacheCounter::CacheResult*>(result.get());
142 static_cast<browsing_data::BrowsingDataCounter::FinishedResult*>( 142 result_ = cache_result->cache_size();
143 result.get()) 143 is_upper_limit_ = cache_result->is_upper_limit();
144 ->Value();
145 } 144 }
146 145
147 if (run_loop_ && finished_) 146 if (run_loop_ && finished_)
148 run_loop_->Quit(); 147 run_loop_->Quit();
149 } 148 }
150 149
151 browsing_data::BrowsingDataCounter::ResultInt GetResult() { 150 browsing_data::BrowsingDataCounter::ResultInt GetResult() {
152 DCHECK(finished_); 151 DCHECK(finished_);
153 return result_; 152 return result_;
154 } 153 }
155 154
155 bool IsUpperLimit() {
156 DCHECK(finished_);
157 return is_upper_limit_;
158 }
159
156 private: 160 private:
157 enum CacheEntryCreationStep { 161 enum CacheEntryCreationStep {
158 GET_CACHE, 162 GET_CACHE,
159 CREATE_ENTRY, 163 CREATE_ENTRY,
160 WRITE_DATA, 164 WRITE_DATA,
161 DONE 165 DONE
162 }; 166 };
163 CacheEntryCreationStep next_step_; 167 CacheEntryCreationStep next_step_;
164 content::StoragePartition* storage_partition_; 168 content::StoragePartition* storage_partition_;
165 disk_cache::Backend* backend_; 169 disk_cache::Backend* backend_;
166 disk_cache::Entry* entry_; 170 disk_cache::Entry* entry_;
167 171
168 std::unique_ptr<base::RunLoop> run_loop_; 172 std::unique_ptr<base::RunLoop> run_loop_;
169 173
170 bool finished_; 174 bool finished_;
171 browsing_data::BrowsingDataCounter::ResultInt result_; 175 browsing_data::BrowsingDataCounter::ResultInt result_;
176 bool is_upper_limit_;
172 }; 177 };
173 178
174 // Tests that for the empty cache, the result is zero. 179 // Tests that for the empty cache, the result is zero.
175 IN_PROC_BROWSER_TEST_F(CacheCounterTest, Empty) { 180 IN_PROC_BROWSER_TEST_F(CacheCounterTest, Empty) {
176 Profile* profile = browser()->profile(); 181 Profile* profile = browser()->profile();
177 182
178 CacheCounter counter(profile); 183 CacheCounter counter(profile);
179 counter.Init( 184 counter.Init(
180 profile->GetPrefs(), 185 profile->GetPrefs(),
181 base::Bind(&CacheCounterTest::CountingCallback, base::Unretained(this))); 186 base::Bind(&CacheCounterTest::CountingCallback, base::Unretained(this)));
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
245 Profile* profile = browser()->profile(); 250 Profile* profile = browser()->profile();
246 CacheCounter counter(profile); 251 CacheCounter counter(profile);
247 counter.Init( 252 counter.Init(
248 profile->GetPrefs(), 253 profile->GetPrefs(),
249 base::Bind(&CacheCounterTest::CountingCallback, base::Unretained(this))); 254 base::Bind(&CacheCounterTest::CountingCallback, base::Unretained(this)));
250 counter.Restart(); 255 counter.Restart();
251 256
252 EXPECT_FALSE(counter.Pending()); 257 EXPECT_FALSE(counter.Pending());
253 } 258 }
254 259
255 // Tests that the counting is restarted when the time period changes. Currently, 260 // Tests that the counting is restarted when the time period changes.
256 // the results should be the same for every period. This is because the counter
257 // always counts the size of the entire cache, and it is up to the UI
258 // to interpret it as exact value or upper bound.
259 IN_PROC_BROWSER_TEST_F(CacheCounterTest, PeriodChanged) { 261 IN_PROC_BROWSER_TEST_F(CacheCounterTest, PeriodChanged) {
260 CreateCacheEntry(); 262 CreateCacheEntry();
261 263
262 Profile* profile = browser()->profile(); 264 Profile* profile = browser()->profile();
263 CacheCounter counter(profile); 265 CacheCounter counter(profile);
264 counter.Init( 266 counter.Init(
265 profile->GetPrefs(), 267 profile->GetPrefs(),
266 base::Bind(&CacheCounterTest::CountingCallback, base::Unretained(this))); 268 base::Bind(&CacheCounterTest::CountingCallback, base::Unretained(this)));
267 269
268 SetDeletionPeriodPref(browsing_data::LAST_HOUR); 270 SetDeletionPeriodPref(browsing_data::LAST_HOUR);
269 WaitForIOThread(); 271 WaitForIOThread();
270 browsing_data::BrowsingDataCounter::ResultInt result = GetResult(); 272 browsing_data::BrowsingDataCounter::ResultInt result = GetResult();
273 EXPECT_FALSE(IsUpperLimit());
271 274
272 SetDeletionPeriodPref(browsing_data::LAST_DAY); 275 SetDeletionPeriodPref(browsing_data::LAST_DAY);
273 WaitForIOThread(); 276 WaitForIOThread();
274 EXPECT_EQ(result, GetResult()); 277 EXPECT_EQ(result, GetResult());
278 EXPECT_FALSE(IsUpperLimit());
275 279
276 SetDeletionPeriodPref(browsing_data::LAST_WEEK); 280 SetDeletionPeriodPref(browsing_data::LAST_WEEK);
277 WaitForIOThread(); 281 WaitForIOThread();
278 EXPECT_EQ(result, GetResult()); 282 EXPECT_EQ(result, GetResult());
283 EXPECT_FALSE(IsUpperLimit());
279 284
280 SetDeletionPeriodPref(browsing_data::FOUR_WEEKS); 285 SetDeletionPeriodPref(browsing_data::FOUR_WEEKS);
281 WaitForIOThread(); 286 WaitForIOThread();
282 EXPECT_EQ(result, GetResult()); 287 EXPECT_EQ(result, GetResult());
288 EXPECT_FALSE(IsUpperLimit());
283 289
284 SetDeletionPeriodPref(browsing_data::ALL_TIME); 290 SetDeletionPeriodPref(browsing_data::ALL_TIME);
285 WaitForIOThread(); 291 WaitForIOThread();
286 EXPECT_EQ(result, GetResult()); 292 EXPECT_EQ(result, GetResult());
293 EXPECT_FALSE(IsUpperLimit());
294 }
295
296 // Tests the cache size is estimated if the timeout runs out.
297 IN_PROC_BROWSER_TEST_F(CacheCounterTest, Timeout) {
298 CreateCacheEntry();
299
300 Profile* profile = browser()->profile();
301 CacheCounter counter(profile);
302 counter.SetTimeout(base::TimeDelta());
303 counter.Init(
304 profile->GetPrefs(),
305 base::Bind(&CacheCounterTest::CountingCallback, base::Unretained(this)));
306
307 SetDeletionPeriodPref(browsing_data::LAST_DAY);
308 WaitForIOThread();
309 EXPECT_GT(GetResult(), 0);
310 EXPECT_TRUE(IsUpperLimit());
311
312 // Even with a timeout of 0, ALL_TIME shouldn't be returned as upper limit.
313 SetDeletionPeriodPref(browsing_data::ALL_TIME);
314 WaitForIOThread();
315 EXPECT_GT(GetResult(), 0);
316 EXPECT_FALSE(IsUpperLimit());
287 } 317 }
288 318
289 } // namespace 319 } // namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698