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

Side by Side Diff: components/precache/content/precache_manager_unittest.cc

Issue 2053913002: Remove MessageLoop::current()->RunUntilIdle() in components. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 6 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 unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 #include "components/precache/content/precache_manager.h" 5 #include "components/precache/content/precache_manager.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <map> 9 #include <map>
10 #include <memory> 10 #include <memory>
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
153 : factory_(nullptr, 153 : factory_(nullptr,
154 base::Bind(&TestURLFetcherCallback::CreateURLFetcher, 154 base::Bind(&TestURLFetcherCallback::CreateURLFetcher,
155 base::Unretained(&url_callback_))) {} 155 base::Unretained(&url_callback_))) {}
156 156
157 ~PrecacheManagerTest() { 157 ~PrecacheManagerTest() {
158 // precache_manager_'s constructor releases a PrecacheDatabase and deletes 158 // precache_manager_'s constructor releases a PrecacheDatabase and deletes
159 // it on the DB thread. PrecacheDatabase already has a pending Init call 159 // it on the DB thread. PrecacheDatabase already has a pending Init call
160 // which will assert in debug builds because the directory passed to it is 160 // which will assert in debug builds because the directory passed to it is
161 // deleted. So manually ensure that the task is run before browser_context_ 161 // deleted. So manually ensure that the task is run before browser_context_
162 // is destructed. 162 // is destructed.
163 base::MessageLoop::current()->RunUntilIdle(); 163 base::RunLoop().RunUntilIdle();
164 } 164 }
165 165
166 protected: 166 protected:
167 void SetUp() override { 167 void SetUp() override {
168 base::CommandLine::ForCurrentProcess()->AppendSwitchASCII( 168 base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
169 switches::kPrecacheConfigSettingsURL, kConfigURL); 169 switches::kPrecacheConfigSettingsURL, kConfigURL);
170 base::CommandLine::ForCurrentProcess()->AppendSwitchASCII( 170 base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
171 switches::kPrecacheManifestURLPrefix, kManifestURLPrefix); 171 switches::kPrecacheManifestURLPrefix, kManifestURLPrefix);
172 std::unique_ptr<PrecacheDatabase> precache_database( 172 std::unique_ptr<PrecacheDatabase> precache_database(
173 new PrecacheDatabase()); 173 new PrecacheDatabase());
174 precache_database_ = precache_database.get(); 174 precache_database_ = precache_database.get();
175 175
176 ASSERT_TRUE(scoped_temp_dir_.CreateUniqueTempDir()); 176 ASSERT_TRUE(scoped_temp_dir_.CreateUniqueTempDir());
177 base::FilePath db_path = scoped_temp_dir_.path().Append( 177 base::FilePath db_path = scoped_temp_dir_.path().Append(
178 base::FilePath(FILE_PATH_LITERAL("precache_database"))); 178 base::FilePath(FILE_PATH_LITERAL("precache_database")));
179 179
180 // Make the fetch of the precache configuration settings fail. Precaching 180 // Make the fetch of the precache configuration settings fail. Precaching
181 // should still complete normally in this case. 181 // should still complete normally in this case.
182 factory_.SetFakeResponse(GURL(kConfigURL), "", 182 factory_.SetFakeResponse(GURL(kConfigURL), "",
183 net::HTTP_INTERNAL_SERVER_ERROR, 183 net::HTTP_INTERNAL_SERVER_ERROR,
184 net::URLRequestStatus::FAILED); 184 net::URLRequestStatus::FAILED);
185 precache_manager_.reset( 185 precache_manager_.reset(
186 new PrecacheManagerUnderTest( 186 new PrecacheManagerUnderTest(
187 &browser_context_, nullptr /* sync_service */, 187 &browser_context_, nullptr /* sync_service */,
188 &history_service_, db_path, std::move(precache_database))); 188 &history_service_, db_path, std::move(precache_database)));
189 base::MessageLoop::current()->RunUntilIdle(); 189 base::RunLoop().RunUntilIdle();
190 } 190 }
191 191
192 // Must be declared first so that it is destroyed last. 192 // Must be declared first so that it is destroyed last.
193 content::TestBrowserThreadBundle test_browser_thread_bundle_; 193 content::TestBrowserThreadBundle test_browser_thread_bundle_;
194 base::ScopedTempDir scoped_temp_dir_; 194 base::ScopedTempDir scoped_temp_dir_;
195 PrecacheDatabase* precache_database_; 195 PrecacheDatabase* precache_database_;
196 content::TestBrowserContext browser_context_; 196 content::TestBrowserContext browser_context_;
197 std::unique_ptr<PrecacheManagerUnderTest> precache_manager_; 197 std::unique_ptr<PrecacheManagerUnderTest> precache_manager_;
198 TestURLFetcherCallback url_callback_; 198 TestURLFetcherCallback url_callback_;
199 net::FakeURLFetcherFactory factory_; 199 net::FakeURLFetcherFactory factory_;
200 TestPrecacheCompletionCallback precache_callback_; 200 TestPrecacheCompletionCallback precache_callback_;
201 testing::NiceMock<MockHistoryService> history_service_; 201 testing::NiceMock<MockHistoryService> history_service_;
202 base::HistogramTester histograms_; 202 base::HistogramTester histograms_;
203 }; 203 };
204 204
205 TEST_F(PrecacheManagerTest, StartAndFinishPrecaching) { 205 TEST_F(PrecacheManagerTest, StartAndFinishPrecaching) {
206 EXPECT_FALSE(precache_manager_->IsPrecaching()); 206 EXPECT_FALSE(precache_manager_->IsPrecaching());
207 207
208 MockHistoryService::TopHostsCallback top_hosts_callback; 208 MockHistoryService::TopHostsCallback top_hosts_callback;
209 EXPECT_CALL(history_service_, TopHosts(NumTopHosts(), _)) 209 EXPECT_CALL(history_service_, TopHosts(NumTopHosts(), _))
210 .WillOnce(SaveArg<1>(&top_hosts_callback)); 210 .WillOnce(SaveArg<1>(&top_hosts_callback));
211 211
212 factory_.SetFakeResponse(GURL(kGoodManifestURL), "", net::HTTP_OK, 212 factory_.SetFakeResponse(GURL(kGoodManifestURL), "", net::HTTP_OK,
213 net::URLRequestStatus::SUCCESS); 213 net::URLRequestStatus::SUCCESS);
214 214
215 precache_manager_->StartPrecaching(precache_callback_.GetCallback()); 215 precache_manager_->StartPrecaching(precache_callback_.GetCallback());
216 base::MessageLoop::current()->RunUntilIdle(); 216 base::RunLoop().RunUntilIdle();
217 EXPECT_TRUE(precache_manager_->IsPrecaching()); 217 EXPECT_TRUE(precache_manager_->IsPrecaching());
218 218
219 top_hosts_callback.Run( 219 top_hosts_callback.Run(
220 history::TopHostsList(1, std::make_pair("good-manifest.com", 1))); 220 history::TopHostsList(1, std::make_pair("good-manifest.com", 1)));
221 base::MessageLoop::current()->RunUntilIdle(); // For PrecacheFetcher. 221 base::RunLoop().RunUntilIdle(); // For PrecacheFetcher.
222 EXPECT_FALSE(precache_manager_->IsPrecaching()); 222 EXPECT_FALSE(precache_manager_->IsPrecaching());
223 EXPECT_TRUE(precache_callback_.was_on_done_called()); 223 EXPECT_TRUE(precache_callback_.was_on_done_called());
224 224
225 std::multiset<GURL> expected_requested_urls; 225 std::multiset<GURL> expected_requested_urls;
226 expected_requested_urls.insert(GURL(kConfigURL)); 226 expected_requested_urls.insert(GURL(kConfigURL));
227 expected_requested_urls.insert(GURL(kGoodManifestURL)); 227 expected_requested_urls.insert(GURL(kGoodManifestURL));
228 EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls()); 228 EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls());
229 } 229 }
230 230
231 TEST_F(PrecacheManagerTest, StartAndFinishPrecachingWithUnfinishedHosts) { 231 TEST_F(PrecacheManagerTest, StartAndFinishPrecachingWithUnfinishedHosts) {
232 std::unique_ptr<PrecacheUnfinishedWork> unfinished_work( 232 std::unique_ptr<PrecacheUnfinishedWork> unfinished_work(
233 new PrecacheUnfinishedWork()); 233 new PrecacheUnfinishedWork());
234 unfinished_work->add_top_host()->set_hostname("evil-manifest.com"); 234 unfinished_work->add_top_host()->set_hostname("evil-manifest.com");
235 unfinished_work->set_start_time(base::Time::Now().ToInternalValue()); 235 unfinished_work->set_start_time(base::Time::Now().ToInternalValue());
236 precache_database_->SaveUnfinishedWork(std::move(unfinished_work)); 236 precache_database_->SaveUnfinishedWork(std::move(unfinished_work));
237 237
238 EXPECT_FALSE(precache_manager_->IsPrecaching()); 238 EXPECT_FALSE(precache_manager_->IsPrecaching());
239 239
240 factory_.SetFakeResponse( 240 factory_.SetFakeResponse(
241 GURL(kEvilManifestURL), "", 241 GURL(kEvilManifestURL), "",
242 net::HTTP_OK, net::URLRequestStatus::SUCCESS); 242 net::HTTP_OK, net::URLRequestStatus::SUCCESS);
243 243
244 precache_manager_->StartPrecaching(precache_callback_.GetCallback()); 244 precache_manager_->StartPrecaching(precache_callback_.GetCallback());
245 EXPECT_TRUE(precache_manager_->IsPrecaching()); 245 EXPECT_TRUE(precache_manager_->IsPrecaching());
246 246
247 base::MessageLoop::current()->RunUntilIdle(); // For PrecacheFetcher. 247 base::RunLoop().RunUntilIdle(); // For PrecacheFetcher.
248 EXPECT_FALSE(precache_manager_->IsPrecaching()); 248 EXPECT_FALSE(precache_manager_->IsPrecaching());
249 EXPECT_TRUE(precache_callback_.was_on_done_called()); 249 EXPECT_TRUE(precache_callback_.was_on_done_called());
250 250
251 std::multiset<GURL> expected_requested_urls; 251 std::multiset<GURL> expected_requested_urls;
252 expected_requested_urls.insert(GURL(kConfigURL)); 252 expected_requested_urls.insert(GURL(kConfigURL));
253 expected_requested_urls.insert(GURL(kEvilManifestURL)); 253 expected_requested_urls.insert(GURL(kEvilManifestURL));
254 EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls()); 254 EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls());
255 } 255 }
256 256
257 TEST_F(PrecacheManagerTest, 257 TEST_F(PrecacheManagerTest,
258 StartAndCancelPrecachingBeforeUnfinishedWorkRetrieved) { 258 StartAndCancelPrecachingBeforeUnfinishedWorkRetrieved) {
259 EXPECT_FALSE(precache_manager_->IsPrecaching()); 259 EXPECT_FALSE(precache_manager_->IsPrecaching());
260 260
261 precache_manager_->StartPrecaching(precache_callback_.GetCallback()); 261 precache_manager_->StartPrecaching(precache_callback_.GetCallback());
262 EXPECT_TRUE(precache_manager_->IsPrecaching()); 262 EXPECT_TRUE(precache_manager_->IsPrecaching());
263 precache_manager_->CancelPrecaching(); 263 precache_manager_->CancelPrecaching();
264 EXPECT_FALSE(precache_manager_->IsPrecaching()); 264 EXPECT_FALSE(precache_manager_->IsPrecaching());
265 265
266 base::MessageLoop::current()->RunUntilIdle(); 266 base::RunLoop().RunUntilIdle();
267 EXPECT_FALSE(precache_callback_.was_on_done_called()); 267 EXPECT_FALSE(precache_callback_.was_on_done_called());
268 } 268 }
269 269
270 TEST_F(PrecacheManagerTest, StartAndCancelPrecachingBeforeTopHostsCompleted) { 270 TEST_F(PrecacheManagerTest, StartAndCancelPrecachingBeforeTopHostsCompleted) {
271 EXPECT_FALSE(precache_manager_->IsPrecaching()); 271 EXPECT_FALSE(precache_manager_->IsPrecaching());
272 272
273 MockHistoryService::TopHostsCallback top_hosts_callback; 273 MockHistoryService::TopHostsCallback top_hosts_callback;
274 EXPECT_CALL(history_service_, TopHosts(NumTopHosts(), _)) 274 EXPECT_CALL(history_service_, TopHosts(NumTopHosts(), _))
275 .WillOnce(SaveArg<1>(&top_hosts_callback)); 275 .WillOnce(SaveArg<1>(&top_hosts_callback));
276 276
277 precache_manager_->StartPrecaching(precache_callback_.GetCallback()); 277 precache_manager_->StartPrecaching(precache_callback_.GetCallback());
278 EXPECT_TRUE(precache_manager_->IsPrecaching()); 278 EXPECT_TRUE(precache_manager_->IsPrecaching());
279 279
280 precache_manager_->CancelPrecaching(); 280 precache_manager_->CancelPrecaching();
281 EXPECT_FALSE(precache_manager_->IsPrecaching()); 281 EXPECT_FALSE(precache_manager_->IsPrecaching());
282 base::MessageLoop::current()->RunUntilIdle(); 282 base::RunLoop().RunUntilIdle();
283 283
284 top_hosts_callback.Run( 284 top_hosts_callback.Run(
285 history::TopHostsList(1, std::make_pair("starting-url.com", 1))); 285 history::TopHostsList(1, std::make_pair("starting-url.com", 1)));
286 base::MessageLoop::current()->RunUntilIdle(); 286 base::RunLoop().RunUntilIdle();
287 EXPECT_FALSE(precache_manager_->IsPrecaching()); 287 EXPECT_FALSE(precache_manager_->IsPrecaching());
288 EXPECT_FALSE(precache_callback_.was_on_done_called()); 288 EXPECT_FALSE(precache_callback_.was_on_done_called());
289 } 289 }
290 290
291 TEST_F(PrecacheManagerTest, StartAndCancelPrecachingBeforeURLsReceived) { 291 TEST_F(PrecacheManagerTest, StartAndCancelPrecachingBeforeURLsReceived) {
292 EXPECT_FALSE(precache_manager_->IsPrecaching()); 292 EXPECT_FALSE(precache_manager_->IsPrecaching());
293 293
294 MockHistoryService::TopHostsCallback top_hosts_callback; 294 MockHistoryService::TopHostsCallback top_hosts_callback;
295 EXPECT_CALL(history_service_, TopHosts(NumTopHosts(), _)) 295 EXPECT_CALL(history_service_, TopHosts(NumTopHosts(), _))
296 .WillOnce(SaveArg<1>(&top_hosts_callback)); 296 .WillOnce(SaveArg<1>(&top_hosts_callback));
297 297
298 precache_manager_->StartPrecaching(precache_callback_.GetCallback()); 298 precache_manager_->StartPrecaching(precache_callback_.GetCallback());
299 EXPECT_TRUE(precache_manager_->IsPrecaching()); 299 EXPECT_TRUE(precache_manager_->IsPrecaching());
300 300
301 precache_manager_->CancelPrecaching(); 301 precache_manager_->CancelPrecaching();
302 base::MessageLoop::current()->RunUntilIdle(); 302 base::RunLoop().RunUntilIdle();
303 EXPECT_FALSE(precache_manager_->IsPrecaching()); 303 EXPECT_FALSE(precache_manager_->IsPrecaching());
304 top_hosts_callback.Run( 304 top_hosts_callback.Run(
305 history::TopHostsList(1, std::make_pair("starting-url.com", 1))); 305 history::TopHostsList(1, std::make_pair("starting-url.com", 1)));
306 base::MessageLoop::current()->RunUntilIdle(); // For PrecacheFetcher. 306 base::RunLoop().RunUntilIdle(); // For PrecacheFetcher.
307 EXPECT_FALSE(precache_manager_->IsPrecaching()); 307 EXPECT_FALSE(precache_manager_->IsPrecaching());
308 EXPECT_FALSE(precache_callback_.was_on_done_called()); 308 EXPECT_FALSE(precache_callback_.was_on_done_called());
309 EXPECT_TRUE(url_callback_.requested_urls().empty()); 309 EXPECT_TRUE(url_callback_.requested_urls().empty());
310 } 310 }
311 311
312 TEST_F(PrecacheManagerTest, StartAndCancelPrecachingAfterURLsReceived) { 312 TEST_F(PrecacheManagerTest, StartAndCancelPrecachingAfterURLsReceived) {
313 EXPECT_FALSE(precache_manager_->IsPrecaching()); 313 EXPECT_FALSE(precache_manager_->IsPrecaching());
314 314
315 PrecacheManifest good_manifest; 315 PrecacheManifest good_manifest;
316 good_manifest.add_resource()->set_url("http://good-resource.com"); 316 good_manifest.add_resource()->set_url("http://good-resource.com");
317 317
318 EXPECT_CALL(history_service_, TopHosts(NumTopHosts(), _)) 318 EXPECT_CALL(history_service_, TopHosts(NumTopHosts(), _))
319 .WillOnce(ReturnHosts( 319 .WillOnce(ReturnHosts(
320 history::TopHostsList(1, std::make_pair("starting-url.com", 1)))); 320 history::TopHostsList(1, std::make_pair("starting-url.com", 1))));
321 321
322 precache_manager_->StartPrecaching(precache_callback_.GetCallback()); 322 precache_manager_->StartPrecaching(precache_callback_.GetCallback());
323 323
324 EXPECT_TRUE(precache_manager_->IsPrecaching()); 324 EXPECT_TRUE(precache_manager_->IsPrecaching());
325 // Run a task to get unfinished work, and to get hosts. 325 // Run a task to get unfinished work, and to get hosts.
326 for (int i = 0; i < 2; ++i) { 326 for (int i = 0; i < 2; ++i) {
327 base::RunLoop run_loop; 327 base::RunLoop run_loop;
328 base::MessageLoop::current()->PostTask(FROM_HERE, run_loop.QuitClosure()); 328 base::MessageLoop::current()->PostTask(FROM_HERE, run_loop.QuitClosure());
329 run_loop.Run(); 329 run_loop.Run();
330 } 330 }
331 //base::MessageLoop::current()->RunUntilIdle(); 331 // base::RunLoop().RunUntilIdle();
332 precache_manager_->CancelPrecaching(); 332 precache_manager_->CancelPrecaching();
333 EXPECT_FALSE(precache_manager_->IsPrecaching()); 333 EXPECT_FALSE(precache_manager_->IsPrecaching());
334 334
335 base::MessageLoop::current()->RunUntilIdle(); // For PrecacheFetcher. 335 base::RunLoop().RunUntilIdle(); // For PrecacheFetcher.
336 EXPECT_FALSE(precache_manager_->IsPrecaching()); 336 EXPECT_FALSE(precache_manager_->IsPrecaching());
337 EXPECT_FALSE(precache_callback_.was_on_done_called()); 337 EXPECT_FALSE(precache_callback_.was_on_done_called());
338 338
339 std::multiset<GURL> expected_requested_urls; 339 std::multiset<GURL> expected_requested_urls;
340 expected_requested_urls.insert(GURL(kConfigURL)); 340 expected_requested_urls.insert(GURL(kConfigURL));
341 EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls()); 341 EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls());
342 } 342 }
343 343
344 TEST_F(PrecacheManagerTest, RecordStatsForFetchWithSizeZero) { 344 TEST_F(PrecacheManagerTest, RecordStatsForFetchWithSizeZero) {
345 // Fetches with size 0 should be ignored. 345 // Fetches with size 0 should be ignored.
346 precache_manager_->RecordStatsForFetch(GURL("http://url.com"), GURL(), 346 precache_manager_->RecordStatsForFetch(GURL("http://url.com"), GURL(),
347 base::TimeDelta(), base::Time(), 0, 347 base::TimeDelta(), base::Time(), 0,
348 false); 348 false);
349 base::MessageLoop::current()->RunUntilIdle(); 349 base::RunLoop().RunUntilIdle();
350 EXPECT_THAT(histograms_.GetTotalCountsForPrefix("Precache."), IsEmpty()); 350 EXPECT_THAT(histograms_.GetTotalCountsForPrefix("Precache."), IsEmpty());
351 } 351 }
352 352
353 TEST_F(PrecacheManagerTest, RecordStatsForFetchWithNonHTTP) { 353 TEST_F(PrecacheManagerTest, RecordStatsForFetchWithNonHTTP) {
354 // Fetches for URLs with schemes other than HTTP or HTTPS should be ignored. 354 // Fetches for URLs with schemes other than HTTP or HTTPS should be ignored.
355 precache_manager_->RecordStatsForFetch(GURL("ftp://ftp.com"), GURL(), 355 precache_manager_->RecordStatsForFetch(GURL("ftp://ftp.com"), GURL(),
356 base::TimeDelta(), base::Time(), 1000, 356 base::TimeDelta(), base::Time(), 1000,
357 false); 357 false);
358 base::MessageLoop::current()->RunUntilIdle(); 358 base::RunLoop().RunUntilIdle();
359 EXPECT_THAT(histograms_.GetTotalCountsForPrefix("Precache."), IsEmpty()); 359 EXPECT_THAT(histograms_.GetTotalCountsForPrefix("Precache."), IsEmpty());
360 } 360 }
361 361
362 TEST_F(PrecacheManagerTest, RecordStatsForFetchWithEmptyURL) { 362 TEST_F(PrecacheManagerTest, RecordStatsForFetchWithEmptyURL) {
363 // Fetches for empty URLs should be ignored. 363 // Fetches for empty URLs should be ignored.
364 precache_manager_->RecordStatsForFetch(GURL(), GURL(), base::TimeDelta(), 364 precache_manager_->RecordStatsForFetch(GURL(), GURL(), base::TimeDelta(),
365 base::Time(), 1000, false); 365 base::Time(), 1000, false);
366 base::MessageLoop::current()->RunUntilIdle(); 366 base::RunLoop().RunUntilIdle();
367 EXPECT_THAT(histograms_.GetTotalCountsForPrefix("Precache."), IsEmpty()); 367 EXPECT_THAT(histograms_.GetTotalCountsForPrefix("Precache."), IsEmpty());
368 } 368 }
369 369
370 TEST_F(PrecacheManagerTest, RecordStatsForFetchDuringPrecaching) { 370 TEST_F(PrecacheManagerTest, RecordStatsForFetchDuringPrecaching) {
371 EXPECT_CALL(history_service_, TopHosts(NumTopHosts(), _)) 371 EXPECT_CALL(history_service_, TopHosts(NumTopHosts(), _))
372 .WillOnce(ReturnHosts(history::TopHostsList())); 372 .WillOnce(ReturnHosts(history::TopHostsList()));
373 373
374 precache_manager_->StartPrecaching(precache_callback_.GetCallback()); 374 precache_manager_->StartPrecaching(precache_callback_.GetCallback());
375 375
376 EXPECT_TRUE(precache_manager_->IsPrecaching()); 376 EXPECT_TRUE(precache_manager_->IsPrecaching());
377 precache_manager_->RecordStatsForFetch(GURL("http://url.com"), GURL(), 377 precache_manager_->RecordStatsForFetch(GURL("http://url.com"), GURL(),
378 base::TimeDelta(), base::Time(), 1000, 378 base::TimeDelta(), base::Time(), 1000,
379 false); 379 false);
380 base::MessageLoop::current()->RunUntilIdle(); 380 base::RunLoop().RunUntilIdle();
381 precache_manager_->CancelPrecaching(); 381 precache_manager_->CancelPrecaching();
382 382
383 // For PrecacheFetcher and RecordURLPrecached. 383 // For PrecacheFetcher and RecordURLPrecached.
384 base::MessageLoop::current()->RunUntilIdle(); 384 base::RunLoop().RunUntilIdle();
385 EXPECT_THAT(histograms_.GetTotalCountsForPrefix("Precache."), 385 EXPECT_THAT(histograms_.GetTotalCountsForPrefix("Precache."),
386 ElementsAre(Pair("Precache.DownloadedPrecacheMotivated", 1), 386 ElementsAre(Pair("Precache.DownloadedPrecacheMotivated", 1),
387 Pair("Precache.Fetch.PercentCompleted", 1), 387 Pair("Precache.Fetch.PercentCompleted", 1),
388 Pair("Precache.Fetch.ResponseBytes.Network", 1), 388 Pair("Precache.Fetch.ResponseBytes.Network", 1),
389 Pair("Precache.Fetch.ResponseBytes.Total", 1), 389 Pair("Precache.Fetch.ResponseBytes.Total", 1),
390 Pair("Precache.Fetch.TimeToComplete", 1), 390 Pair("Precache.Fetch.TimeToComplete", 1),
391 Pair("Precache.Latency.Prefetch", 1))); 391 Pair("Precache.Latency.Prefetch", 1)));
392 } 392 }
393 393
394 TEST_F(PrecacheManagerTest, RecordStatsForFetchHTTP) { 394 TEST_F(PrecacheManagerTest, RecordStatsForFetchHTTP) {
395 precache_manager_->RecordStatsForFetch(GURL("http://http-url.com"), GURL(), 395 precache_manager_->RecordStatsForFetch(GURL("http://http-url.com"), GURL(),
396 base::TimeDelta(), base::Time(), 1000, 396 base::TimeDelta(), base::Time(), 1000,
397 false); 397 false);
398 base::MessageLoop::current()->RunUntilIdle(); 398 base::RunLoop().RunUntilIdle();
399 399
400 EXPECT_THAT(histograms_.GetTotalCountsForPrefix("Precache."), 400 EXPECT_THAT(histograms_.GetTotalCountsForPrefix("Precache."),
401 ElementsAre(Pair("Precache.DownloadedNonPrecache", 1), 401 ElementsAre(Pair("Precache.DownloadedNonPrecache", 1),
402 Pair("Precache.Latency.NonPrefetch", 1), 402 Pair("Precache.Latency.NonPrefetch", 1),
403 Pair("Precache.Latency.NonPrefetch.NonTopHosts", 1))); 403 Pair("Precache.Latency.NonPrefetch.NonTopHosts", 1)));
404 } 404 }
405 405
406 TEST_F(PrecacheManagerTest, RecordStatsForFetchHTTPS) { 406 TEST_F(PrecacheManagerTest, RecordStatsForFetchHTTPS) {
407 precache_manager_->RecordStatsForFetch(GURL("https://https-url.com"), GURL(), 407 precache_manager_->RecordStatsForFetch(GURL("https://https-url.com"), GURL(),
408 base::TimeDelta(), base::Time(), 1000, 408 base::TimeDelta(), base::Time(), 1000,
409 false); 409 false);
410 base::MessageLoop::current()->RunUntilIdle(); 410 base::RunLoop().RunUntilIdle();
411 411
412 EXPECT_THAT(histograms_.GetTotalCountsForPrefix("Precache."), 412 EXPECT_THAT(histograms_.GetTotalCountsForPrefix("Precache."),
413 ElementsAre(Pair("Precache.DownloadedNonPrecache", 1), 413 ElementsAre(Pair("Precache.DownloadedNonPrecache", 1),
414 Pair("Precache.Latency.NonPrefetch", 1), 414 Pair("Precache.Latency.NonPrefetch", 1),
415 Pair("Precache.Latency.NonPrefetch.NonTopHosts", 1))); 415 Pair("Precache.Latency.NonPrefetch.NonTopHosts", 1)));
416 } 416 }
417 417
418 TEST_F(PrecacheManagerTest, RecordStatsForFetchInTopHosts) { 418 TEST_F(PrecacheManagerTest, RecordStatsForFetchInTopHosts) {
419 EXPECT_CALL(history_service_, 419 EXPECT_CALL(history_service_,
420 HostRankIfAvailable(GURL("http://referrer.com"), _)) 420 HostRankIfAvailable(GURL("http://referrer.com"), _))
421 .WillOnce(Invoke( 421 .WillOnce(Invoke(
422 [](const GURL& url, const base::Callback<void(int)>& callback) { 422 [](const GURL& url, const base::Callback<void(int)>& callback) {
423 callback.Run(0); 423 callback.Run(0);
424 })); 424 }));
425 precache_manager_->RecordStatsForFetch( 425 precache_manager_->RecordStatsForFetch(
426 GURL("http://http-url.com"), GURL("http://referrer.com"), 426 GURL("http://http-url.com"), GURL("http://referrer.com"),
427 base::TimeDelta(), base::Time(), 1000, false); 427 base::TimeDelta(), base::Time(), 1000, false);
428 base::MessageLoop::current()->RunUntilIdle(); 428 base::RunLoop().RunUntilIdle();
429 429
430 EXPECT_THAT(histograms_.GetTotalCountsForPrefix("Precache."), 430 EXPECT_THAT(histograms_.GetTotalCountsForPrefix("Precache."),
431 ElementsAre(Pair("Precache.DownloadedNonPrecache", 1), 431 ElementsAre(Pair("Precache.DownloadedNonPrecache", 1),
432 Pair("Precache.Latency.NonPrefetch", 1), 432 Pair("Precache.Latency.NonPrefetch", 1),
433 Pair("Precache.Latency.NonPrefetch.TopHosts", 1))); 433 Pair("Precache.Latency.NonPrefetch.TopHosts", 1)));
434 } 434 }
435 435
436 TEST_F(PrecacheManagerTest, DeleteExpiredPrecacheHistory) { 436 TEST_F(PrecacheManagerTest, DeleteExpiredPrecacheHistory) {
437 // TODO(twifkak): Split this into multiple tests. 437 // TODO(twifkak): Split this into multiple tests.
438 base::HistogramTester::CountsMap expected_histogram_count_map; 438 base::HistogramTester::CountsMap expected_histogram_count_map;
(...skipping 16 matching lines...) Expand all
455 kCurrentTime - base::TimeDelta::FromDays(59), 1000, false); 455 kCurrentTime - base::TimeDelta::FromDays(59), 1000, false);
456 precache_manager_->RecordStatsForFetch( 456 precache_manager_->RecordStatsForFetch(
457 GURL("http://yesterday-fetch.com"), GURL(), base::TimeDelta(), 457 GURL("http://yesterday-fetch.com"), GURL(), base::TimeDelta(),
458 kCurrentTime - base::TimeDelta::FromDays(1), 1000, false); 458 kCurrentTime - base::TimeDelta::FromDays(1), 1000, false);
459 expected_histogram_count_map["Precache.DownloadedPrecacheMotivated"] += 3; 459 expected_histogram_count_map["Precache.DownloadedPrecacheMotivated"] += 3;
460 expected_histogram_count_map["Precache.Fetch.PercentCompleted"]++; 460 expected_histogram_count_map["Precache.Fetch.PercentCompleted"]++;
461 expected_histogram_count_map["Precache.Fetch.ResponseBytes.Network"]++; 461 expected_histogram_count_map["Precache.Fetch.ResponseBytes.Network"]++;
462 expected_histogram_count_map["Precache.Fetch.ResponseBytes.Total"]++; 462 expected_histogram_count_map["Precache.Fetch.ResponseBytes.Total"]++;
463 expected_histogram_count_map["Precache.Fetch.TimeToComplete"]++; 463 expected_histogram_count_map["Precache.Fetch.TimeToComplete"]++;
464 expected_histogram_count_map["Precache.Latency.Prefetch"] += 3; 464 expected_histogram_count_map["Precache.Latency.Prefetch"] += 3;
465 base::MessageLoop::current()->RunUntilIdle(); 465 base::RunLoop().RunUntilIdle();
466 466
467 precache_manager_->CancelPrecaching(); 467 precache_manager_->CancelPrecaching();
468 base::MessageLoop::current()->RunUntilIdle(); 468 base::RunLoop().RunUntilIdle();
469 469
470 // Disable pause-resume. 470 // Disable pause-resume.
471 precache_database_->DeleteUnfinishedWork(); 471 precache_database_->DeleteUnfinishedWork();
472 base::MessageLoop::current()->RunUntilIdle(); 472 base::RunLoop().RunUntilIdle();
473 473
474 // For PrecacheFetcher and RecordURLPrecached. 474 // For PrecacheFetcher and RecordURLPrecached.
475 base::MessageLoop::current()->RunUntilIdle(); 475 base::RunLoop().RunUntilIdle();
476 EXPECT_THAT(histograms_.GetTotalCountsForPrefix("Precache."), 476 EXPECT_THAT(histograms_.GetTotalCountsForPrefix("Precache."),
477 ContainerEq(expected_histogram_count_map)); 477 ContainerEq(expected_histogram_count_map));
478 478
479 // The expired precache will be deleted during precaching this time. 479 // The expired precache will be deleted during precaching this time.
480 precache_manager_->StartPrecaching(precache_callback_.GetCallback()); 480 precache_manager_->StartPrecaching(precache_callback_.GetCallback());
481 EXPECT_TRUE(precache_manager_->IsPrecaching()); 481 EXPECT_TRUE(precache_manager_->IsPrecaching());
482 base::MessageLoop::current()->RunUntilIdle(); 482 base::RunLoop().RunUntilIdle();
483 483
484 // The precache fetcher runs until done, which records these histograms, 484 // The precache fetcher runs until done, which records these histograms,
485 // and then cancels precaching, which records these histograms again. 485 // and then cancels precaching, which records these histograms again.
486 // In practice 486 // In practice
487 expected_histogram_count_map["Precache.Fetch.PercentCompleted"]++; 487 expected_histogram_count_map["Precache.Fetch.PercentCompleted"]++;
488 expected_histogram_count_map["Precache.Fetch.ResponseBytes.Network"]++; 488 expected_histogram_count_map["Precache.Fetch.ResponseBytes.Network"]++;
489 expected_histogram_count_map["Precache.Fetch.ResponseBytes.Total"]++; 489 expected_histogram_count_map["Precache.Fetch.ResponseBytes.Total"]++;
490 // For PrecacheFetcher and RecordURLPrecached. 490 // For PrecacheFetcher and RecordURLPrecached.
491 base::MessageLoop::current()->RunUntilIdle(); 491 base::RunLoop().RunUntilIdle();
492 EXPECT_FALSE(precache_manager_->IsPrecaching()); 492 EXPECT_FALSE(precache_manager_->IsPrecaching());
493 493
494 // A fetch for the same URL as the expired precache was served from the cache, 494 // A fetch for the same URL as the expired precache was served from the cache,
495 // but it isn't reported as saved bytes because it had expired in the precache 495 // but it isn't reported as saved bytes because it had expired in the precache
496 // history. 496 // history.
497 precache_manager_->RecordStatsForFetch(GURL("http://old-fetch.com"), GURL(), 497 precache_manager_->RecordStatsForFetch(GURL("http://old-fetch.com"), GURL(),
498 base::TimeDelta(), kCurrentTime, 1000, 498 base::TimeDelta(), kCurrentTime, 1000,
499 true); 499 true);
500 expected_histogram_count_map["Precache.Fetch.TimeToComplete"]++; 500 expected_histogram_count_map["Precache.Fetch.TimeToComplete"]++;
501 expected_histogram_count_map["Precache.Latency.NonPrefetch"]++; 501 expected_histogram_count_map["Precache.Latency.NonPrefetch"]++;
502 expected_histogram_count_map["Precache.Latency.NonPrefetch.NonTopHosts"]++; 502 expected_histogram_count_map["Precache.Latency.NonPrefetch.NonTopHosts"]++;
503 503
504 base::MessageLoop::current()->RunUntilIdle(); 504 base::RunLoop().RunUntilIdle();
505 EXPECT_THAT(histograms_.GetTotalCountsForPrefix("Precache."), 505 EXPECT_THAT(histograms_.GetTotalCountsForPrefix("Precache."),
506 ContainerEq(expected_histogram_count_map)); 506 ContainerEq(expected_histogram_count_map));
507 507
508 // The other precaches should not have expired, so the following fetches from 508 // The other precaches should not have expired, so the following fetches from
509 // the cache should count as saved bytes. 509 // the cache should count as saved bytes.
510 precache_manager_->RecordStatsForFetch(GURL("http://recent-fetch.com"), GURL() , 510 precache_manager_->RecordStatsForFetch(GURL("http://recent-fetch.com"), GURL() ,
511 base::TimeDelta(), kCurrentTime, 1000, 511 base::TimeDelta(), kCurrentTime, 1000,
512 true); 512 true);
513 precache_manager_->RecordStatsForFetch(GURL("http://yesterday-fetch.com"), 513 precache_manager_->RecordStatsForFetch(GURL("http://yesterday-fetch.com"),
514 GURL(), base::TimeDelta(), kCurrentTime, 514 GURL(), base::TimeDelta(), kCurrentTime,
515 1000, true); 515 1000, true);
516 expected_histogram_count_map["Precache.Latency.NonPrefetch"] += 2; 516 expected_histogram_count_map["Precache.Latency.NonPrefetch"] += 2;
517 expected_histogram_count_map["Precache.Latency.NonPrefetch.NonTopHosts"] += 2; 517 expected_histogram_count_map["Precache.Latency.NonPrefetch.NonTopHosts"] += 2;
518 expected_histogram_count_map["Precache.Saved"] += 2; 518 expected_histogram_count_map["Precache.Saved"] += 2;
519 519
520 base::MessageLoop::current()->RunUntilIdle(); 520 base::RunLoop().RunUntilIdle();
521 EXPECT_THAT(histograms_.GetTotalCountsForPrefix("Precache."), 521 EXPECT_THAT(histograms_.GetTotalCountsForPrefix("Precache."),
522 ContainerEq(expected_histogram_count_map)); 522 ContainerEq(expected_histogram_count_map));
523 } 523 }
524 524
525 } // namespace 525 } // namespace
526 526
527 } // namespace precache 527 } // namespace precache
OLDNEW
« no previous file with comments | « components/password_manager/core/browser/password_store_unittest.cc ('k') | components/rappor/log_uploader_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698