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

Side by Side Diff: components/favicon/core/favicon_handler.cc

Issue 2703603002: Improve FaviconHandler tests by testing public API (Closed)
Patch Set: Created 3 years, 10 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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/favicon/core/favicon_handler.h" 5 #include "components/favicon/core/favicon_handler.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <cmath> 8 #include <cmath>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after
255 download_requests_.clear(); 255 download_requests_.clear();
256 image_urls_.clear(); 256 image_urls_.clear();
257 notification_icon_url_ = GURL(); 257 notification_icon_url_ = GURL();
258 notification_icon_type_ = favicon_base::INVALID_ICON; 258 notification_icon_type_ = favicon_base::INVALID_ICON;
259 current_candidate_index_ = 0u; 259 current_candidate_index_ = 0u;
260 best_favicon_candidate_ = FaviconCandidate(); 260 best_favicon_candidate_ = FaviconCandidate();
261 261
262 // Request the favicon from the history service. In parallel to this the 262 // Request the favicon from the history service. In parallel to this the
263 // renderer is going to notify us (well WebContents) when the favicon url is 263 // renderer is going to notify us (well WebContents) when the favicon url is
264 // available. 264 // available.
265 GetFaviconForURLFromFaviconService( 265 if (service_) {
266 url_, icon_types_, 266 service_->GetFaviconForPageURL(
267 base::Bind(&FaviconHandler::OnFaviconDataForInitialURLFromFaviconService, 267 url_, icon_types_, preferred_icon_size(),
268 base::Unretained(this)), 268 base::Bind(
269 &cancelable_task_tracker_); 269 &FaviconHandler::OnFaviconDataForInitialURLFromFaviconService,
270 base::Unretained(this)),
271 &cancelable_task_tracker_);
272 }
270 } 273 }
271 274
272 bool FaviconHandler::UpdateFaviconCandidate(const GURL& image_url, 275 bool FaviconHandler::UpdateFaviconCandidate(const GURL& image_url,
273 const gfx::Image& image, 276 const gfx::Image& image,
274 float score, 277 float score,
275 favicon_base::IconType icon_type) { 278 favicon_base::IconType icon_type) {
276 bool replace_best_favicon_candidate = false; 279 bool replace_best_favicon_candidate = false;
277 bool exact_match = false; 280 bool exact_match = false;
278 if (download_largest_icon_) { 281 if (download_largest_icon_) {
279 replace_best_favicon_candidate = 282 replace_best_favicon_candidate =
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
312 if (replace_best_favicon_candidate) { 315 if (replace_best_favicon_candidate) {
313 best_favicon_candidate_ = 316 best_favicon_candidate_ =
314 FaviconCandidate(image_url, image, score, icon_type); 317 FaviconCandidate(image_url, image, score, icon_type);
315 } 318 }
316 return exact_match; 319 return exact_match;
317 } 320 }
318 321
319 void FaviconHandler::SetFavicon(const GURL& icon_url, 322 void FaviconHandler::SetFavicon(const GURL& icon_url,
320 const gfx::Image& image, 323 const gfx::Image& image,
321 favicon_base::IconType icon_type) { 324 favicon_base::IconType icon_type) {
322 if (ShouldSaveFavicon()) 325 if (service_ && ShouldSaveFavicon())
323 SetHistoryFavicons(url_, icon_url, icon_type, image); 326 service_->SetFavicons(url_, icon_url, icon_type, image);
324 327
325 NotifyFaviconUpdated(icon_url, icon_type, image); 328 NotifyFaviconUpdated(icon_url, icon_type, image);
326 } 329 }
327 330
328 void FaviconHandler::NotifyFaviconUpdated( 331 void FaviconHandler::NotifyFaviconUpdated(
329 const std::vector<favicon_base::FaviconRawBitmapResult>& 332 const std::vector<favicon_base::FaviconRawBitmapResult>&
330 favicon_bitmap_results) { 333 favicon_bitmap_results) {
331 if (favicon_bitmap_results.empty()) 334 if (favicon_bitmap_results.empty())
332 return; 335 return;
333 336
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after
491 current_candidate_index_ = image_urls_.size(); 494 current_candidate_index_ = image_urls_.size();
492 best_favicon_candidate_ = FaviconCandidate(); 495 best_favicon_candidate_ = FaviconCandidate();
493 } 496 }
494 } 497 }
495 498
496 bool FaviconHandler::HasPendingTasksForTest() { 499 bool FaviconHandler::HasPendingTasksForTest() {
497 return !download_requests_.empty() || 500 return !download_requests_.empty() ||
498 cancelable_task_tracker_.HasTrackedTasks(); 501 cancelable_task_tracker_.HasTrackedTasks();
499 } 502 }
500 503
501 void FaviconHandler::UpdateFaviconMappingAndFetch(
502 const GURL& page_url,
503 const GURL& icon_url,
504 favicon_base::IconType icon_type,
505 const favicon_base::FaviconResultsCallback& callback,
506 base::CancelableTaskTracker* tracker) {
507 // TODO(pkotwicz): pass in all of |image_urls_| to
508 // UpdateFaviconMappingsAndFetch().
509 if (service_) {
510 std::vector<GURL> icon_urls;
511 icon_urls.push_back(icon_url);
512 service_->UpdateFaviconMappingsAndFetch(page_url, icon_urls, icon_type,
513 preferred_icon_size(), callback,
514 tracker);
515 }
516 }
517
518 void FaviconHandler::GetFaviconFromFaviconService(
519 const GURL& icon_url,
520 favicon_base::IconType icon_type,
521 const favicon_base::FaviconResultsCallback& callback,
522 base::CancelableTaskTracker* tracker) {
523 if (service_) {
524 service_->GetFavicon(icon_url, icon_type, preferred_icon_size(), callback,
525 tracker);
526 }
527 }
528
529 void FaviconHandler::GetFaviconForURLFromFaviconService(
530 const GURL& page_url,
531 int icon_types,
532 const favicon_base::FaviconResultsCallback& callback,
533 base::CancelableTaskTracker* tracker) {
534 if (service_) {
535 service_->GetFaviconForPageURL(page_url, icon_types, preferred_icon_size(),
536 callback, tracker);
537 }
538 }
539
540 void FaviconHandler::SetHistoryFavicons(const GURL& page_url,
541 const GURL& icon_url,
542 favicon_base::IconType icon_type,
543 const gfx::Image& image) {
544 if (service_) {
545 service_->SetFavicons(page_url, icon_url, icon_type, image);
546 }
547 }
548
549 bool FaviconHandler::ShouldSaveFavicon() { 504 bool FaviconHandler::ShouldSaveFavicon() {
550 if (!delegate_->IsOffTheRecord()) 505 if (!delegate_->IsOffTheRecord())
551 return true; 506 return true;
552 507
553 // Always save favicon if the page is bookmarked. 508 // Always save favicon if the page is bookmarked.
554 return delegate_->IsBookmarked(url_); 509 return delegate_->IsBookmarked(url_);
555 } 510 }
556 511
557 int FaviconHandler::GetMaximalIconSize(favicon_base::IconType icon_type) { 512 int FaviconHandler::GetMaximalIconSize(favicon_base::IconType icon_type) {
558 switch (icon_type) { 513 switch (icon_type) {
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
598 OnGotInitialHistoryDataAndIconURLCandidates(); 553 OnGotInitialHistoryDataAndIconURLCandidates();
599 } 554 }
600 555
601 void FaviconHandler::DownloadCurrentCandidateOrAskFaviconService() { 556 void FaviconHandler::DownloadCurrentCandidateOrAskFaviconService() {
602 GURL icon_url = current_candidate()->icon_url; 557 GURL icon_url = current_candidate()->icon_url;
603 favicon_base::IconType icon_type = current_candidate()->icon_type; 558 favicon_base::IconType icon_type = current_candidate()->icon_type;
604 559
605 if (redownload_icons_) { 560 if (redownload_icons_) {
606 // We have the mapping, but the favicon is out of date. Download it now. 561 // We have the mapping, but the favicon is out of date. Download it now.
607 ScheduleDownload(icon_url, icon_type); 562 ScheduleDownload(icon_url, icon_type);
608 } else { 563 } else if (service_) {
609 // We don't know the favicon, but we may have previously downloaded the 564 // We don't know the favicon, but we may have previously downloaded the
610 // favicon for another page that shares the same favicon. Ask for the 565 // favicon for another page that shares the same favicon. Ask for the
611 // favicon given the favicon URL. 566 // favicon given the favicon URL.
612 if (delegate_->IsOffTheRecord()) { 567 if (delegate_->IsOffTheRecord()) {
613 GetFaviconFromFaviconService( 568 service_->GetFavicon(
614 icon_url, icon_type, 569 icon_url, icon_type, preferred_icon_size(),
615 base::Bind(&FaviconHandler::OnFaviconData, base::Unretained(this)), 570 base::Bind(&FaviconHandler::OnFaviconData, base::Unretained(this)),
616 &cancelable_task_tracker_); 571 &cancelable_task_tracker_);
617 } else { 572 } else {
618 // Ask the history service for the icon. This does two things: 573 // Ask the history service for the icon. This does two things:
619 // 1. Attempts to fetch the favicon data from the database. 574 // 1. Attempts to fetch the favicon data from the database.
620 // 2. If the favicon exists in the database, this updates the database to 575 // 2. If the favicon exists in the database, this updates the database to
621 // include the mapping between the page url and the favicon url. 576 // include the mapping between the page url and the favicon url.
622 // This is asynchronous. The history service will call back when done. 577 // This is asynchronous. The history service will call back when done.
623 UpdateFaviconMappingAndFetch( 578 // TODO(pkotwicz): pass in all of |image_urls_| to
624 url_, icon_url, icon_type, 579 // UpdateFaviconMappingsAndFetch().
580 service_->UpdateFaviconMappingsAndFetch(
581 url_, {icon_url}, icon_type, preferred_icon_size(),
625 base::Bind(&FaviconHandler::OnFaviconData, base::Unretained(this)), 582 base::Bind(&FaviconHandler::OnFaviconData, base::Unretained(this)),
626 &cancelable_task_tracker_); 583 &cancelable_task_tracker_);
627 } 584 }
628 } 585 }
629 } 586 }
630 587
631 void FaviconHandler::OnFaviconData(const std::vector< 588 void FaviconHandler::OnFaviconData(const std::vector<
632 favicon_base::FaviconRawBitmapResult>& favicon_bitmap_results) { 589 favicon_base::FaviconRawBitmapResult>& favicon_bitmap_results) {
633 bool has_results = !favicon_bitmap_results.empty(); 590 bool has_results = !favicon_bitmap_results.empty();
634 bool has_valid_result = HasValidResult(favicon_bitmap_results); 591 bool has_valid_result = HasValidResult(favicon_bitmap_results);
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
678 if (download_id == 0) { 635 if (download_id == 0) {
679 // If DownloadFavicon() did not start a download, it returns a download id 636 // If DownloadFavicon() did not start a download, it returns a download id
680 // of 0. We still need to call OnDidDownloadFavicon() because the method is 637 // of 0. We still need to call OnDidDownloadFavicon() because the method is
681 // responsible for initiating the data request for the next candidate. 638 // responsible for initiating the data request for the next candidate.
682 DidDownloadFavicon(download_id, 0, image_url, std::vector<SkBitmap>(), 639 DidDownloadFavicon(download_id, 0, image_url, std::vector<SkBitmap>(),
683 std::vector<gfx::Size>()); 640 std::vector<gfx::Size>());
684 } 641 }
685 } 642 }
686 643
687 } // namespace favicon 644 } // namespace favicon
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698