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

Side by Side Diff: components/ntp_tiles/icon_cacher_impl_unittest.cc

Issue 2794343002: Network traffic annotation added to image_data_fetcher. (Closed)
Patch Set: Comments addressed. Created 3 years, 7 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
« no previous file with comments | « components/ntp_tiles/icon_cacher_impl.cc ('k') | components/suggestions/image_manager.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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/ntp_tiles/icon_cacher_impl.h" 5 #include "components/ntp_tiles/icon_cacher_impl.h"
6 6
7 #include <set> 7 #include <set>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/files/scoped_temp_dir.h" 10 #include "base/files/scoped_temp_dir.h"
11 #include "base/memory/ptr_util.h" 11 #include "base/memory/ptr_util.h"
12 #include "base/path_service.h" 12 #include "base/path_service.h"
13 #include "base/run_loop.h" 13 #include "base/run_loop.h"
14 #include "base/test/mock_callback.h" 14 #include "base/test/mock_callback.h"
15 #include "base/test/scoped_task_environment.h" 15 #include "base/test/scoped_task_environment.h"
16 #include "base/test/test_simple_task_runner.h" 16 #include "base/test/test_simple_task_runner.h"
17 #include "base/threading/thread_task_runner_handle.h" 17 #include "base/threading/thread_task_runner_handle.h"
18 #include "components/favicon/core/favicon_client.h" 18 #include "components/favicon/core/favicon_client.h"
19 #include "components/favicon/core/favicon_service_impl.h" 19 #include "components/favicon/core/favicon_service_impl.h"
20 #include "components/favicon/core/favicon_util.h" 20 #include "components/favicon/core/favicon_util.h"
21 #include "components/favicon/core/large_icon_service.h" 21 #include "components/favicon/core/large_icon_service.h"
22 #include "components/history/core/browser/history_database_params.h" 22 #include "components/history/core/browser/history_database_params.h"
23 #include "components/history/core/browser/history_service.h" 23 #include "components/history/core/browser/history_service.h"
24 #include "components/image_fetcher/core/image_decoder.h" 24 #include "components/image_fetcher/core/image_decoder.h"
25 #include "components/image_fetcher/core/image_fetcher.h" 25 #include "components/image_fetcher/core/image_fetcher.h"
26 #include "components/image_fetcher/core/request_metadata.h" 26 #include "components/image_fetcher/core/request_metadata.h"
27 #include "net/traffic_annotation/network_traffic_annotation_test_helper.h"
27 #include "testing/gmock/include/gmock/gmock.h" 28 #include "testing/gmock/include/gmock/gmock.h"
28 #include "testing/gtest/include/gtest/gtest.h" 29 #include "testing/gtest/include/gtest/gtest.h"
29 #include "ui/base/resource/resource_bundle.h" 30 #include "ui/base/resource/resource_bundle.h"
30 #include "ui/base/ui_base_paths.h" 31 #include "ui/base/ui_base_paths.h"
31 #include "ui/gfx/image/image_unittest_util.h" 32 #include "ui/gfx/image/image_unittest_util.h"
32 33
33 using ::testing::_; 34 using ::testing::_;
34 using ::testing::Eq; 35 using ::testing::Eq;
35 using ::testing::Invoke; 36 using ::testing::Invoke;
36 using ::testing::InSequence; 37 using ::testing::InSequence;
37 using ::testing::NiceMock; 38 using ::testing::NiceMock;
38 using ::testing::Return; 39 using ::testing::Return;
39 using ::testing::ReturnArg; 40 using ::testing::ReturnArg;
40 41
41 namespace ntp_tiles { 42 namespace ntp_tiles {
42 namespace { 43 namespace {
43 44
44 class MockImageFetcher : public image_fetcher::ImageFetcher { 45 class MockImageFetcher : public image_fetcher::ImageFetcher {
45 public: 46 public:
46 MOCK_METHOD1(SetImageFetcherDelegate, 47 MOCK_METHOD1(SetImageFetcherDelegate,
47 void(image_fetcher::ImageFetcherDelegate* delegate)); 48 void(image_fetcher::ImageFetcherDelegate* delegate));
48 MOCK_METHOD1(SetDataUseServiceName, 49 MOCK_METHOD1(SetDataUseServiceName,
49 void(image_fetcher::ImageFetcher::DataUseServiceName name)); 50 void(image_fetcher::ImageFetcher::DataUseServiceName name));
50 MOCK_METHOD1(SetImageDownloadLimit, 51 MOCK_METHOD1(SetImageDownloadLimit,
51 void(base::Optional<int64_t> max_download_bytes)); 52 void(base::Optional<int64_t> max_download_bytes));
52 MOCK_METHOD3(StartOrQueueNetworkRequest, 53 MOCK_METHOD4(StartOrQueueNetworkRequest,
53 void(const std::string& id, 54 void(const std::string& id,
54 const GURL& image_url, 55 const GURL& image_url,
55 const ImageFetcherCallback& callback)); 56 const ImageFetcherCallback& callback,
57 const net::NetworkTrafficAnnotationTag&));
56 MOCK_METHOD1(SetDesiredImageFrameSize, void(const gfx::Size&)); 58 MOCK_METHOD1(SetDesiredImageFrameSize, void(const gfx::Size&));
57 MOCK_METHOD0(GetImageDecoder, image_fetcher::ImageDecoder*()); 59 MOCK_METHOD0(GetImageDecoder, image_fetcher::ImageDecoder*());
58 }; 60 };
59 61
60 class MockImageDecoder : public image_fetcher::ImageDecoder { 62 class MockImageDecoder : public image_fetcher::ImageDecoder {
61 public: 63 public:
62 MOCK_METHOD3(DecodeImage, 64 MOCK_METHOD3(DecodeImage,
63 void(const std::string& image_data, 65 void(const std::string& image_data,
64 const gfx::Size& desired_image_frame_size, 66 const gfx::Size& desired_image_frame_size,
65 const image_fetcher::ImageDecodedCallback& callback)); 67 const image_fetcher::ImageDecodedCallback& callback));
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after
252 TEST_F(IconCacherTestPopularSites, LargeNotCachedAndFetchSucceeded) { 254 TEST_F(IconCacherTestPopularSites, LargeNotCachedAndFetchSucceeded) {
253 base::MockCallback<base::Closure> done; 255 base::MockCallback<base::Closure> done;
254 base::RunLoop loop; 256 base::RunLoop loop;
255 { 257 {
256 InSequence s; 258 InSequence s;
257 EXPECT_CALL(*image_fetcher_, 259 EXPECT_CALL(*image_fetcher_,
258 SetDataUseServiceName( 260 SetDataUseServiceName(
259 data_use_measurement::DataUseUserData::NTP_TILES)); 261 data_use_measurement::DataUseUserData::NTP_TILES));
260 EXPECT_CALL(*image_fetcher_, SetDesiredImageFrameSize(gfx::Size(128, 128))); 262 EXPECT_CALL(*image_fetcher_, SetDesiredImageFrameSize(gfx::Size(128, 128)));
261 EXPECT_CALL(*image_fetcher_, 263 EXPECT_CALL(*image_fetcher_,
262 StartOrQueueNetworkRequest(_, site_.large_icon_url, _)) 264 StartOrQueueNetworkRequest(_, site_.large_icon_url, _, _))
263 .WillOnce(PassFetch(128, 128)); 265 .WillOnce(PassFetch(128, 128));
264 EXPECT_CALL(done, Run()).WillOnce(Quit(&loop)); 266 EXPECT_CALL(done, Run()).WillOnce(Quit(&loop));
265 } 267 }
266 268
267 IconCacherImpl cacher(&favicon_service_, nullptr, std::move(image_fetcher_)); 269 IconCacherImpl cacher(&favicon_service_, nullptr, std::move(image_fetcher_));
268 cacher.StartFetchPopularSites(site_, done.Get(), done.Get()); 270 cacher.StartFetchPopularSites(site_, done.Get(), done.Get());
269 loop.Run(); 271 loop.Run();
270 EXPECT_FALSE(IconIsCachedFor(site_.url, favicon_base::FAVICON)); 272 EXPECT_FALSE(IconIsCachedFor(site_.url, favicon_base::FAVICON));
271 EXPECT_TRUE(IconIsCachedFor(site_.url, favicon_base::TOUCH_ICON)); 273 EXPECT_TRUE(IconIsCachedFor(site_.url, favicon_base::TOUCH_ICON));
272 } 274 }
273 275
274 TEST_F(IconCacherTestPopularSites, SmallNotCachedAndFetchSucceeded) { 276 TEST_F(IconCacherTestPopularSites, SmallNotCachedAndFetchSucceeded) {
275 site_.large_icon_url = GURL(); 277 site_.large_icon_url = GURL();
276 278
277 base::MockCallback<base::Closure> done; 279 base::MockCallback<base::Closure> done;
278 base::RunLoop loop; 280 base::RunLoop loop;
279 { 281 {
280 InSequence s; 282 InSequence s;
281 EXPECT_CALL(*image_fetcher_, 283 EXPECT_CALL(*image_fetcher_,
282 SetDataUseServiceName( 284 SetDataUseServiceName(
283 data_use_measurement::DataUseUserData::NTP_TILES)); 285 data_use_measurement::DataUseUserData::NTP_TILES));
284 EXPECT_CALL(*image_fetcher_, SetDesiredImageFrameSize(gfx::Size(128, 128))); 286 EXPECT_CALL(*image_fetcher_, SetDesiredImageFrameSize(gfx::Size(128, 128)));
285 EXPECT_CALL(*image_fetcher_, 287 EXPECT_CALL(*image_fetcher_,
286 StartOrQueueNetworkRequest(_, site_.favicon_url, _)) 288 StartOrQueueNetworkRequest(_, site_.favicon_url, _, _))
287 .WillOnce(PassFetch(128, 128)); 289 .WillOnce(PassFetch(128, 128));
288 EXPECT_CALL(done, Run()).WillOnce(Quit(&loop)); 290 EXPECT_CALL(done, Run()).WillOnce(Quit(&loop));
289 } 291 }
290 292
291 IconCacherImpl cacher(&favicon_service_, nullptr, std::move(image_fetcher_)); 293 IconCacherImpl cacher(&favicon_service_, nullptr, std::move(image_fetcher_));
292 cacher.StartFetchPopularSites(site_, done.Get(), done.Get()); 294 cacher.StartFetchPopularSites(site_, done.Get(), done.Get());
293 loop.Run(); 295 loop.Run();
294 EXPECT_TRUE(IconIsCachedFor(site_.url, favicon_base::FAVICON)); 296 EXPECT_TRUE(IconIsCachedFor(site_.url, favicon_base::FAVICON));
295 EXPECT_FALSE(IconIsCachedFor(site_.url, favicon_base::TOUCH_ICON)); 297 EXPECT_FALSE(IconIsCachedFor(site_.url, favicon_base::TOUCH_ICON));
296 } 298 }
297 299
298 TEST_F(IconCacherTestPopularSites, LargeNotCachedAndFetchFailed) { 300 TEST_F(IconCacherTestPopularSites, LargeNotCachedAndFetchFailed) {
299 base::MockCallback<base::Closure> done; 301 base::MockCallback<base::Closure> done;
300 EXPECT_CALL(done, Run()).Times(0); 302 EXPECT_CALL(done, Run()).Times(0);
301 { 303 {
302 InSequence s; 304 InSequence s;
303 EXPECT_CALL(*image_fetcher_, 305 EXPECT_CALL(*image_fetcher_,
304 SetDataUseServiceName( 306 SetDataUseServiceName(
305 data_use_measurement::DataUseUserData::NTP_TILES)); 307 data_use_measurement::DataUseUserData::NTP_TILES));
306 EXPECT_CALL(*image_fetcher_, SetDesiredImageFrameSize(gfx::Size(128, 128))); 308 EXPECT_CALL(*image_fetcher_, SetDesiredImageFrameSize(gfx::Size(128, 128)));
307 EXPECT_CALL(*image_fetcher_, 309 EXPECT_CALL(*image_fetcher_,
308 StartOrQueueNetworkRequest(_, site_.large_icon_url, _)) 310 StartOrQueueNetworkRequest(_, site_.large_icon_url, _, _))
309 .WillOnce(FailFetch()); 311 .WillOnce(FailFetch());
310 } 312 }
311 313
312 IconCacherImpl cacher(&favicon_service_, nullptr, std::move(image_fetcher_)); 314 IconCacherImpl cacher(&favicon_service_, nullptr, std::move(image_fetcher_));
313 cacher.StartFetchPopularSites(site_, done.Get(), done.Get()); 315 cacher.StartFetchPopularSites(site_, done.Get(), done.Get());
314 WaitForMainThreadTasksToFinish(); 316 WaitForMainThreadTasksToFinish();
315 EXPECT_FALSE(IconIsCachedFor(site_.url, favicon_base::FAVICON)); 317 EXPECT_FALSE(IconIsCachedFor(site_.url, favicon_base::FAVICON));
316 EXPECT_FALSE(IconIsCachedFor(site_.url, favicon_base::TOUCH_ICON)); 318 EXPECT_FALSE(IconIsCachedFor(site_.url, favicon_base::TOUCH_ICON));
317 } 319 }
318 320
319 TEST_F(IconCacherTestPopularSites, HandlesEmptyCallbacksNicely) { 321 TEST_F(IconCacherTestPopularSites, HandlesEmptyCallbacksNicely) {
320 EXPECT_CALL(*image_fetcher_, SetDataUseServiceName(_)); 322 EXPECT_CALL(*image_fetcher_, SetDataUseServiceName(_));
321 EXPECT_CALL(*image_fetcher_, SetDesiredImageFrameSize(_)); 323 EXPECT_CALL(*image_fetcher_, SetDesiredImageFrameSize(_));
322 EXPECT_CALL(*image_fetcher_, StartOrQueueNetworkRequest(_, _, _)) 324 EXPECT_CALL(*image_fetcher_, StartOrQueueNetworkRequest(_, _, _, _))
323 .WillOnce(PassFetch(128, 128)); 325 .WillOnce(PassFetch(128, 128));
324 IconCacherImpl cacher(&favicon_service_, nullptr, std::move(image_fetcher_)); 326 IconCacherImpl cacher(&favicon_service_, nullptr, std::move(image_fetcher_));
325 cacher.StartFetchPopularSites(site_, base::Closure(), base::Closure()); 327 cacher.StartFetchPopularSites(site_, base::Closure(), base::Closure());
326 WaitForHistoryThreadTasksToFinish(); // Writing the icon into the DB. 328 WaitForHistoryThreadTasksToFinish(); // Writing the icon into the DB.
327 WaitForMainThreadTasksToFinish(); // Finishing tasks after the DB write. 329 WaitForMainThreadTasksToFinish(); // Finishing tasks after the DB write.
328 // Even though the callbacks are not called, the icon gets written out. 330 // Even though the callbacks are not called, the icon gets written out.
329 EXPECT_FALSE(IconIsCachedFor(site_.url, favicon_base::FAVICON)); 331 EXPECT_FALSE(IconIsCachedFor(site_.url, favicon_base::FAVICON));
330 EXPECT_TRUE(IconIsCachedFor(site_.url, favicon_base::TOUCH_ICON)); 332 EXPECT_TRUE(IconIsCachedFor(site_.url, favicon_base::TOUCH_ICON));
331 } 333 }
332 334
(...skipping 11 matching lines...) Expand all
344 base::MockCallback<base::Closure> icon_available; 346 base::MockCallback<base::Closure> icon_available;
345 base::RunLoop default_loop; 347 base::RunLoop default_loop;
346 base::RunLoop fetch_loop; 348 base::RunLoop fetch_loop;
347 { 349 {
348 InSequence s; 350 InSequence s;
349 EXPECT_CALL(*image_fetcher_, 351 EXPECT_CALL(*image_fetcher_,
350 SetDataUseServiceName( 352 SetDataUseServiceName(
351 data_use_measurement::DataUseUserData::NTP_TILES)); 353 data_use_measurement::DataUseUserData::NTP_TILES));
352 EXPECT_CALL(*image_fetcher_, SetDesiredImageFrameSize(gfx::Size(128, 128))); 354 EXPECT_CALL(*image_fetcher_, SetDesiredImageFrameSize(gfx::Size(128, 128)));
353 EXPECT_CALL(*image_fetcher_, 355 EXPECT_CALL(*image_fetcher_,
354 StartOrQueueNetworkRequest(_, site_.large_icon_url, _)) 356 StartOrQueueNetworkRequest(_, site_.large_icon_url, _, _))
355 .WillOnce(PassFetch(128, 128)); 357 .WillOnce(PassFetch(128, 128));
356 358
357 // Both callback are called async after the request but preliminary has to 359 // Both callback are called async after the request but preliminary has to
358 // preceed icon_available. 360 // preceed icon_available.
359 EXPECT_CALL(preliminary_icon_available, Run()) 361 EXPECT_CALL(preliminary_icon_available, Run())
360 .WillOnce(Quit(&default_loop)); 362 .WillOnce(Quit(&default_loop));
361 EXPECT_CALL(icon_available, Run()).WillOnce(Quit(&fetch_loop)); 363 EXPECT_CALL(icon_available, Run()).WillOnce(Quit(&fetch_loop));
362 } 364 }
363 365
364 IconCacherImpl cacher(&favicon_service_, nullptr, std::move(image_fetcher_)); 366 IconCacherImpl cacher(&favicon_service_, nullptr, std::move(image_fetcher_));
(...skipping 15 matching lines...) Expand all
380 base::MockCallback<base::Closure> done; 382 base::MockCallback<base::Closure> done;
381 base::RunLoop loop; 383 base::RunLoop loop;
382 { 384 {
383 InSequence s; 385 InSequence s;
384 // Image fetcher is used only once. 386 // Image fetcher is used only once.
385 EXPECT_CALL(*image_fetcher_, 387 EXPECT_CALL(*image_fetcher_,
386 SetDataUseServiceName( 388 SetDataUseServiceName(
387 data_use_measurement::DataUseUserData::NTP_TILES)); 389 data_use_measurement::DataUseUserData::NTP_TILES));
388 EXPECT_CALL(*image_fetcher_, SetDesiredImageFrameSize(gfx::Size(128, 128))); 390 EXPECT_CALL(*image_fetcher_, SetDesiredImageFrameSize(gfx::Size(128, 128)));
389 EXPECT_CALL(*image_fetcher_, 391 EXPECT_CALL(*image_fetcher_,
390 StartOrQueueNetworkRequest(_, site_.large_icon_url, _)) 392 StartOrQueueNetworkRequest(_, site_.large_icon_url, _, _))
391 .WillOnce(PassFetch(128, 128)); 393 .WillOnce(PassFetch(128, 128));
392 // Success will be notified to both requests. 394 // Success will be notified to both requests.
393 EXPECT_CALL(done, Run()).WillOnce(Return()).WillOnce(Quit(&loop)); 395 EXPECT_CALL(done, Run()).WillOnce(Return()).WillOnce(Quit(&loop));
394 } 396 }
395 397
396 IconCacherImpl cacher(&favicon_service_, nullptr, std::move(image_fetcher_)); 398 IconCacherImpl cacher(&favicon_service_, nullptr, std::move(image_fetcher_));
397 cacher.StartFetchPopularSites(site_, done.Get(), done.Get()); 399 cacher.StartFetchPopularSites(site_, done.Get(), done.Get());
398 cacher.StartFetchPopularSites(site_, done.Get(), done.Get()); 400 cacher.StartFetchPopularSites(site_, done.Get(), done.Get());
399 loop.Run(); 401 loop.Run();
400 EXPECT_FALSE(IconIsCachedFor(site_.url, favicon_base::FAVICON)); 402 EXPECT_FALSE(IconIsCachedFor(site_.url, favicon_base::FAVICON));
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
450 GURL page_url("http://www.site.com"); 452 GURL page_url("http://www.site.com");
451 453
452 base::MockCallback<base::Closure> done; 454 base::MockCallback<base::Closure> done;
453 base::RunLoop loop; 455 base::RunLoop loop;
454 { 456 {
455 InSequence s; 457 InSequence s;
456 EXPECT_CALL(*fetcher_for_large_icon_service_, 458 EXPECT_CALL(*fetcher_for_large_icon_service_,
457 SetDataUseServiceName( 459 SetDataUseServiceName(
458 data_use_measurement::DataUseUserData::LARGE_ICON_SERVICE)); 460 data_use_measurement::DataUseUserData::LARGE_ICON_SERVICE));
459 EXPECT_CALL(*fetcher_for_large_icon_service_, 461 EXPECT_CALL(*fetcher_for_large_icon_service_,
460 StartOrQueueNetworkRequest(_, _, _)) 462 StartOrQueueNetworkRequest(_, _, _, _))
461 .WillOnce(PassFetch(128, 128)); 463 .WillOnce(PassFetch(128, 128));
462 EXPECT_CALL(done, Run()).WillOnce(Quit(&loop)); 464 EXPECT_CALL(done, Run()).WillOnce(Quit(&loop));
463 } 465 }
464 466
465 favicon::LargeIconService large_icon_service( 467 favicon::LargeIconService large_icon_service(
466 &favicon_service_, large_icon_service_background_task_runner_, 468 &favicon_service_, large_icon_service_background_task_runner_,
467 std::move(fetcher_for_large_icon_service_)); 469 std::move(fetcher_for_large_icon_service_));
468 IconCacherImpl cacher(&favicon_service_, &large_icon_service, 470 IconCacherImpl cacher(&favicon_service_, &large_icon_service,
469 std::move(fetcher_for_icon_cacher_)); 471 std::move(fetcher_for_icon_cacher_));
470 472
(...skipping 11 matching lines...) Expand all
482 TEST_F(IconCacherTestMostLikely, NotCachedAndFetchFailed) { 484 TEST_F(IconCacherTestMostLikely, NotCachedAndFetchFailed) {
483 GURL page_url("http://www.site.com"); 485 GURL page_url("http://www.site.com");
484 486
485 base::MockCallback<base::Closure> done; 487 base::MockCallback<base::Closure> done;
486 { 488 {
487 InSequence s; 489 InSequence s;
488 EXPECT_CALL(*fetcher_for_large_icon_service_, 490 EXPECT_CALL(*fetcher_for_large_icon_service_,
489 SetDataUseServiceName( 491 SetDataUseServiceName(
490 data_use_measurement::DataUseUserData::LARGE_ICON_SERVICE)); 492 data_use_measurement::DataUseUserData::LARGE_ICON_SERVICE));
491 EXPECT_CALL(*fetcher_for_large_icon_service_, 493 EXPECT_CALL(*fetcher_for_large_icon_service_,
492 StartOrQueueNetworkRequest(_, _, _)) 494 StartOrQueueNetworkRequest(_, _, _, _))
493 .WillOnce(FailFetch()); 495 .WillOnce(FailFetch());
494 EXPECT_CALL(done, Run()).Times(0); 496 EXPECT_CALL(done, Run()).Times(0);
495 } 497 }
496 498
497 favicon::LargeIconService large_icon_service( 499 favicon::LargeIconService large_icon_service(
498 &favicon_service_, large_icon_service_background_task_runner_, 500 &favicon_service_, large_icon_service_background_task_runner_,
499 std::move(fetcher_for_large_icon_service_)); 501 std::move(fetcher_for_large_icon_service_));
500 IconCacherImpl cacher(&favicon_service_, &large_icon_service, 502 IconCacherImpl cacher(&favicon_service_, &large_icon_service,
501 std::move(fetcher_for_icon_cacher_)); 503 std::move(fetcher_for_icon_cacher_));
502 504
503 cacher.StartFetchMostLikely(page_url, done.Get()); 505 cacher.StartFetchMostLikely(page_url, done.Get());
504 // Both these task runners need to be flushed before flushing the main thread 506 // Both these task runners need to be flushed before flushing the main thread
505 // queue in order to finish the work. 507 // queue in order to finish the work.
506 WaitForHistoryThreadTasksToFinish(); 508 WaitForHistoryThreadTasksToFinish();
507 large_icon_service_background_task_runner_->RunUntilIdle(); 509 large_icon_service_background_task_runner_->RunUntilIdle();
508 WaitForMainThreadTasksToFinish(); 510 WaitForMainThreadTasksToFinish();
509 511
510 EXPECT_FALSE(IconIsCachedFor(page_url, favicon_base::FAVICON)); 512 EXPECT_FALSE(IconIsCachedFor(page_url, favicon_base::FAVICON));
511 EXPECT_FALSE(IconIsCachedFor(page_url, favicon_base::TOUCH_ICON)); 513 EXPECT_FALSE(IconIsCachedFor(page_url, favicon_base::TOUCH_ICON));
512 } 514 }
513 515
514 TEST_F(IconCacherTestMostLikely, HandlesEmptyCallbacksNicely) { 516 TEST_F(IconCacherTestMostLikely, HandlesEmptyCallbacksNicely) {
515 GURL page_url("http://www.site.com"); 517 GURL page_url("http://www.site.com");
516 518
517 EXPECT_CALL(*fetcher_for_large_icon_service_, SetDataUseServiceName(_)); 519 EXPECT_CALL(*fetcher_for_large_icon_service_, SetDataUseServiceName(_));
518 EXPECT_CALL(*fetcher_for_large_icon_service_, 520 EXPECT_CALL(*fetcher_for_large_icon_service_,
519 StartOrQueueNetworkRequest(_, _, _)) 521 StartOrQueueNetworkRequest(_, _, _, _))
520 .WillOnce(PassFetch(128, 128)); 522 .WillOnce(PassFetch(128, 128));
521 523
522 favicon::LargeIconService large_icon_service( 524 favicon::LargeIconService large_icon_service(
523 &favicon_service_, large_icon_service_background_task_runner_, 525 &favicon_service_, large_icon_service_background_task_runner_,
524 std::move(fetcher_for_large_icon_service_)); 526 std::move(fetcher_for_large_icon_service_));
525 IconCacherImpl cacher(&favicon_service_, &large_icon_service, 527 IconCacherImpl cacher(&favicon_service_, &large_icon_service,
526 std::move(fetcher_for_icon_cacher_)); 528 std::move(fetcher_for_icon_cacher_));
527 529
528 cacher.StartFetchMostLikely(page_url, base::Closure()); 530 cacher.StartFetchMostLikely(page_url, base::Closure());
529 // Both these task runners need to be flushed before flushing the main thread 531 // Both these task runners need to be flushed before flushing the main thread
(...skipping 12 matching lines...) Expand all
542 544
543 base::MockCallback<base::Closure> done; 545 base::MockCallback<base::Closure> done;
544 base::RunLoop loop; 546 base::RunLoop loop;
545 { 547 {
546 InSequence s; 548 InSequence s;
547 // Image fetcher is used only once. 549 // Image fetcher is used only once.
548 EXPECT_CALL(*fetcher_for_large_icon_service_, 550 EXPECT_CALL(*fetcher_for_large_icon_service_,
549 SetDataUseServiceName( 551 SetDataUseServiceName(
550 data_use_measurement::DataUseUserData::LARGE_ICON_SERVICE)); 552 data_use_measurement::DataUseUserData::LARGE_ICON_SERVICE));
551 EXPECT_CALL(*fetcher_for_large_icon_service_, 553 EXPECT_CALL(*fetcher_for_large_icon_service_,
552 StartOrQueueNetworkRequest(_, _, _)) 554 StartOrQueueNetworkRequest(_, _, _, _))
553 .WillOnce(PassFetch(128, 128)); 555 .WillOnce(PassFetch(128, 128));
554 // Success will be notified to both requests. 556 // Success will be notified to both requests.
555 EXPECT_CALL(done, Run()).WillOnce(Return()).WillOnce(Quit(&loop)); 557 EXPECT_CALL(done, Run()).WillOnce(Return()).WillOnce(Quit(&loop));
556 } 558 }
557 559
558 favicon::LargeIconService large_icon_service( 560 favicon::LargeIconService large_icon_service(
559 &favicon_service_, large_icon_service_background_task_runner_, 561 &favicon_service_, large_icon_service_background_task_runner_,
560 std::move(fetcher_for_large_icon_service_)); 562 std::move(fetcher_for_large_icon_service_));
561 IconCacherImpl cacher(&favicon_service_, &large_icon_service, 563 IconCacherImpl cacher(&favicon_service_, &large_icon_service,
562 std::move(fetcher_for_icon_cacher_)); 564 std::move(fetcher_for_icon_cacher_));
563 565
564 cacher.StartFetchMostLikely(page_url, done.Get()); 566 cacher.StartFetchMostLikely(page_url, done.Get());
565 cacher.StartFetchMostLikely(page_url, done.Get()); 567 cacher.StartFetchMostLikely(page_url, done.Get());
566 // Both these task runners need to be flushed in order to get |done| called by 568 // Both these task runners need to be flushed in order to get |done| called by
567 // running the main loop. 569 // running the main loop.
568 WaitForHistoryThreadTasksToFinish(); 570 WaitForHistoryThreadTasksToFinish();
569 large_icon_service_background_task_runner_->RunUntilIdle(); 571 large_icon_service_background_task_runner_->RunUntilIdle();
570 572
571 loop.Run(); 573 loop.Run();
572 EXPECT_FALSE(IconIsCachedFor(page_url, favicon_base::FAVICON)); 574 EXPECT_FALSE(IconIsCachedFor(page_url, favicon_base::FAVICON));
573 EXPECT_TRUE(IconIsCachedFor(page_url, favicon_base::TOUCH_ICON)); 575 EXPECT_TRUE(IconIsCachedFor(page_url, favicon_base::TOUCH_ICON));
574 } 576 }
575 577
576 } // namespace 578 } // namespace
577 } // namespace ntp_tiles 579 } // namespace ntp_tiles
OLDNEW
« no previous file with comments | « components/ntp_tiles/icon_cacher_impl.cc ('k') | components/suggestions/image_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698