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

Side by Side Diff: chrome/browser/favicon/favicon_handler.cc

Issue 987113005: Refactor favicon to use C++11 loop and fix style violation (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@favicon_client
Patch Set: Rebase Created 5 years, 9 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 "chrome/browser/favicon/favicon_handler.h" 5 #include "chrome/browser/favicon/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 29 matching lines...) Expand all
40 // identical and if they match the icon URL and icon type in |favicon_url|. 40 // identical and if they match the icon URL and icon type in |favicon_url|.
41 // Returns false if |bitmap_results| is empty. 41 // Returns false if |bitmap_results| is empty.
42 bool DoUrlsAndIconsMatch( 42 bool DoUrlsAndIconsMatch(
43 const FaviconURL& favicon_url, 43 const FaviconURL& favicon_url,
44 const std::vector<favicon_base::FaviconRawBitmapResult>& bitmap_results) { 44 const std::vector<favicon_base::FaviconRawBitmapResult>& bitmap_results) {
45 if (bitmap_results.empty()) 45 if (bitmap_results.empty())
46 return false; 46 return false;
47 47
48 const favicon_base::IconType icon_type = favicon_url.icon_type; 48 const favicon_base::IconType icon_type = favicon_url.icon_type;
49 49
50 for (size_t i = 0; i < bitmap_results.size(); ++i) { 50 for (const auto& bitmap_result : bitmap_results) {
51 if (favicon_url.icon_url != bitmap_results[i].icon_url || 51 if (favicon_url.icon_url != bitmap_result.icon_url ||
52 icon_type != bitmap_results[i].icon_type) { 52 icon_type != bitmap_result.icon_type) {
53 return false; 53 return false;
54 } 54 }
55 } 55 }
56 return true; 56 return true;
57 } 57 }
58 58
59 std::string UrlWithoutFragment(const GURL& gurl) { 59 std::string UrlWithoutFragment(const GURL& gurl) {
60 GURL::Replacements replacements; 60 GURL::Replacements replacements;
61 replacements.ClearRef(); 61 replacements.ClearRef();
62 return gurl.ReplaceComponents(replacements).spec(); 62 return gurl.ReplaceComponents(replacements).spec();
(...skipping 30 matching lines...) Expand all
93 return false; 93 return false;
94 94
95 // Check if the favicon for at least one of the scale factors is missing. 95 // Check if the favicon for at least one of the scale factors is missing.
96 // |bitmap_results| should always be complete for data inserted by 96 // |bitmap_results| should always be complete for data inserted by
97 // FaviconHandler as the FaviconHandler stores favicons resized to all 97 // FaviconHandler as the FaviconHandler stores favicons resized to all
98 // of favicon_base::GetFaviconScales() into the history backend. 98 // of favicon_base::GetFaviconScales() into the history backend.
99 // Examples of when |bitmap_results| can be incomplete: 99 // Examples of when |bitmap_results| can be incomplete:
100 // - Favicons inserted into the history backend by sync. 100 // - Favicons inserted into the history backend by sync.
101 // - Favicons for imported bookmarks. 101 // - Favicons for imported bookmarks.
102 std::vector<gfx::Size> favicon_sizes; 102 std::vector<gfx::Size> favicon_sizes;
103 for (size_t i = 0; i < bitmap_results.size(); ++i) 103 for (const auto& bitmap_result : bitmap_results)
104 favicon_sizes.push_back(bitmap_results[i].pixel_size); 104 favicon_sizes.push_back(bitmap_result.pixel_size);
105 105
106 std::vector<float> favicon_scales = favicon_base::GetFaviconScales(); 106 std::vector<float> favicon_scales = favicon_base::GetFaviconScales();
107 for (size_t i = 0; i < favicon_scales.size(); ++i) { 107 for (float favicon_scale : favicon_scales) {
108 int edge_size_in_pixel = std::ceil(desired_size_in_dip * favicon_scales[i]); 108 int edge_size_in_pixel = std::ceil(desired_size_in_dip * favicon_scale);
109 std::vector<gfx::Size>::iterator it = std::find(favicon_sizes.begin(), 109 auto it = std::find(favicon_sizes.begin(), favicon_sizes.end(),
110 favicon_sizes.end(), gfx::Size(edge_size_in_pixel, edge_size_in_pixel)); 110 gfx::Size(edge_size_in_pixel, edge_size_in_pixel));
111 if (it == favicon_sizes.end()) 111 if (it == favicon_sizes.end())
112 return true; 112 return true;
113 } 113 }
114 return false; 114 return false;
115 } 115 }
116 116
117 // Returns true if at least one of |bitmap_results| is valid. 117 // Returns true if at least one of |bitmap_results| is valid.
118 bool HasValidResult( 118 bool HasValidResult(
119 const std::vector<favicon_base::FaviconRawBitmapResult>& bitmap_results) { 119 const std::vector<favicon_base::FaviconRawBitmapResult>& bitmap_results) {
120 return std::find_if(bitmap_results.begin(), bitmap_results.end(), IsValid) != 120 return std::find_if(bitmap_results.begin(), bitmap_results.end(), IsValid) !=
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
156 area2 = b2.icon_sizes.front().GetArea(); 156 area2 = b2.icon_sizes.front().GetArea();
157 157
158 return area1 > area2; 158 return area1 > area2;
159 } 159 }
160 160
161 } // namespace 161 } // namespace
162 162
163 //////////////////////////////////////////////////////////////////////////////// 163 ////////////////////////////////////////////////////////////////////////////////
164 164
165 FaviconHandler::DownloadRequest::DownloadRequest() 165 FaviconHandler::DownloadRequest::DownloadRequest()
166 : icon_type(favicon_base::INVALID_ICON) {} 166 : icon_type(favicon_base::INVALID_ICON) {
167 }
167 168
168 FaviconHandler::DownloadRequest::~DownloadRequest() { 169 FaviconHandler::DownloadRequest::~DownloadRequest() {
169 } 170 }
170 171
171 FaviconHandler::DownloadRequest::DownloadRequest( 172 FaviconHandler::DownloadRequest::DownloadRequest(
172 const GURL& url, 173 const GURL& url,
173 const GURL& image_url, 174 const GURL& image_url,
174 favicon_base::IconType icon_type) 175 favicon_base::IconType icon_type)
175 : url(url), image_url(image_url), icon_type(icon_type) {} 176 : url(url), image_url(image_url), icon_type(icon_type) {
177 }
176 178
177 //////////////////////////////////////////////////////////////////////////////// 179 ////////////////////////////////////////////////////////////////////////////////
178 180
179 FaviconHandler::FaviconCandidate::FaviconCandidate() 181 FaviconHandler::FaviconCandidate::FaviconCandidate()
180 : score(0), icon_type(favicon_base::INVALID_ICON) {} 182 : score(0), icon_type(favicon_base::INVALID_ICON) {
183 }
181 184
182 FaviconHandler::FaviconCandidate::~FaviconCandidate() { 185 FaviconHandler::FaviconCandidate::~FaviconCandidate() {
183 } 186 }
184 187
185 FaviconHandler::FaviconCandidate::FaviconCandidate( 188 FaviconHandler::FaviconCandidate::FaviconCandidate(
186 const GURL& url, 189 const GURL& url,
187 const GURL& image_url, 190 const GURL& image_url,
188 const gfx::Image& image, 191 const gfx::Image& image,
189 float score, 192 float score,
190 favicon_base::IconType icon_type) 193 favicon_base::IconType icon_type)
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
317 favicon_base::SetFaviconColorSpace(&image_with_adjusted_colorspace); 320 favicon_base::SetFaviconColorSpace(&image_with_adjusted_colorspace);
318 321
319 driver_->OnFaviconAvailable( 322 driver_->OnFaviconAvailable(
320 image_with_adjusted_colorspace, icon_url, is_active_favicon); 323 image_with_adjusted_colorspace, icon_url, is_active_favicon);
321 } 324 }
322 325
323 void FaviconHandler::OnUpdateFaviconURL( 326 void FaviconHandler::OnUpdateFaviconURL(
324 const std::vector<FaviconURL>& candidates) { 327 const std::vector<FaviconURL>& candidates) {
325 image_urls_.clear(); 328 image_urls_.clear();
326 best_favicon_candidate_ = FaviconCandidate(); 329 best_favicon_candidate_ = FaviconCandidate();
327 for (std::vector<FaviconURL>::const_iterator i = candidates.begin(); 330 for (const FaviconURL& candidate : candidates) {
328 i != candidates.end(); ++i) { 331 if (!candidate.icon_url.is_empty() && (candidate.icon_type & icon_types_))
329 if (!i->icon_url.is_empty() && (i->icon_type & icon_types_)) 332 image_urls_.push_back(candidate);
330 image_urls_.push_back(*i);
331 } 333 }
332 334
333 if (download_largest_icon_) 335 if (download_largest_icon_)
334 SortAndPruneImageUrls(); 336 SortAndPruneImageUrls();
335 337
336 // TODO(davemoore) Should clear on empty url. Currently we ignore it. 338 // TODO(davemoore) Should clear on empty url. Currently we ignore it.
337 // This appears to be what FF does as well. 339 // This appears to be what FF does as well.
338 if (!image_urls_.empty()) 340 if (!image_urls_.empty())
339 ProcessCurrentUrl(); 341 ProcessCurrentUrl();
340 } 342 }
(...skipping 322 matching lines...) Expand 10 before | Expand all | Expand 10 after
663 // Download ids should be unique. 665 // Download ids should be unique.
664 DCHECK(download_requests_.find(download_id) == download_requests_.end()); 666 DCHECK(download_requests_.find(download_id) == download_requests_.end());
665 download_requests_[download_id] = 667 download_requests_[download_id] =
666 DownloadRequest(url, image_url, icon_type); 668 DownloadRequest(url, image_url, icon_type);
667 } 669 }
668 670
669 return download_id; 671 return download_id;
670 } 672 }
671 673
672 void FaviconHandler::SortAndPruneImageUrls() { 674 void FaviconHandler::SortAndPruneImageUrls() {
673 for (std::vector<FaviconURL>::iterator i = image_urls_.begin(); 675 // Not using const-reference since the loop mutates FaviconURL::icon_sizes.
674 i != image_urls_.end(); ++i) { 676 for (favicon::FaviconURL& image_url : image_urls_) {
675 if (i->icon_sizes.empty()) 677 if (image_url.icon_sizes.empty())
676 continue; 678 continue;
677 679
678 gfx::Size largest = i->icon_sizes[GetLargestSizeIndex(i->icon_sizes)]; 680 gfx::Size largest =
679 i->icon_sizes.clear(); 681 image_url.icon_sizes[GetLargestSizeIndex(image_url.icon_sizes)];
680 i->icon_sizes.push_back(largest); 682 image_url.icon_sizes.clear();
683 image_url.icon_sizes.push_back(largest);
681 } 684 }
682 std::stable_sort(image_urls_.begin(), image_urls_.end(), 685 std::stable_sort(image_urls_.begin(), image_urls_.end(),
683 CompareIconSize); 686 CompareIconSize);
684 } 687 }
OLDNEW
« no previous file with comments | « chrome/browser/favicon/favicon_handler.h ('k') | chrome/browser/favicon/favicon_handler_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698