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

Side by Side Diff: components/ntp_snippets/content_suggestions_service.cc

Issue 2811123003: [Content suggestions] Allow to specify URLs for favicons (Closed)
Patch Set: Marc's comment Created 3 years, 8 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 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_snippets/content_suggestions_service.h" 5 #include "components/ntp_snippets/content_suggestions_service.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <iterator> 8 #include <iterator>
9 #include <set> 9 #include <set>
10 #include <utility> 10 #include <utility>
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
132 } 132 }
133 providers_by_category_[suggestion_id.category()]->FetchSuggestionImage( 133 providers_by_category_[suggestion_id.category()]->FetchSuggestionImage(
134 suggestion_id, callback); 134 suggestion_id, callback);
135 } 135 }
136 136
137 void ContentSuggestionsService::FetchSuggestionFavicon( 137 void ContentSuggestionsService::FetchSuggestionFavicon(
138 const ContentSuggestion::ID& suggestion_id, 138 const ContentSuggestion::ID& suggestion_id,
139 int minimum_size_in_pixel, 139 int minimum_size_in_pixel,
140 int desired_size_in_pixel, 140 int desired_size_in_pixel,
141 const ImageFetchedCallback& callback) { 141 const ImageFetchedCallback& callback) {
142 // TODO(jkrcal): Allow the provider to provide (or possibly override) the URL
143 // for looking up the favicon.
144 std::vector<ContentSuggestion>* suggestions = 142 std::vector<ContentSuggestion>* suggestions =
145 &suggestions_by_category_[suggestion_id.category()]; 143 &suggestions_by_category_[suggestion_id.category()];
146 auto position = 144 auto position =
147 std::find_if(suggestions->begin(), suggestions->end(), 145 std::find_if(suggestions->begin(), suggestions->end(),
148 [&suggestion_id](const ContentSuggestion& suggestion) { 146 [&suggestion_id](const ContentSuggestion& suggestion) {
149 return suggestion_id == suggestion.id(); 147 return suggestion_id == suggestion.id();
150 }); 148 });
151 if (position == suggestions->end() || !large_icon_service_) { 149 if (position == suggestions->end() || !large_icon_service_) {
152 base::ThreadTaskRunnerHandle::Get()->PostTask( 150 base::ThreadTaskRunnerHandle::Get()->PostTask(
153 FROM_HERE, base::Bind(callback, gfx::Image())); 151 FROM_HERE, base::Bind(callback, gfx::Image()));
154 return; 152 return;
155 } 153 }
156 154
157 const GURL& publisher_url = position->url().GetWithEmptyPath(); 155 const GURL& publisher_url =
Marc Treib 2017/04/12 11:48:00 s/publisher_url/url_with_favicon/ ?
jkrcal 2017/04/12 12:44:18 Done. Renamed to domain_with_favicon to make the t
156 position->url_with_favicon().is_valid()
157 ? position->url_with_favicon().GetWithEmptyPath()
Marc Treib 2017/04/12 11:48:00 Hm, should the fallback logic live in ContentSugge
jkrcal 2017/04/12 12:44:19 I do not think so, because it is CSS who is using
Marc Treib 2017/04/12 12:50:18 I didn't mean the trimming, just the "url_with_fav
jkrcal 2017/04/12 12:58:17 Ah, fair enough. Done.
158 : position->url().GetWithEmptyPath();
158 159
159 // TODO(jkrcal): Create a general wrapper function in LargeIconService that 160 // TODO(jkrcal): Create a general wrapper function in LargeIconService that
160 // does handle the get-from-cache-and-fallback-to-google-server functionality 161 // does handle the get-from-cache-and-fallback-to-google-server functionality
161 // in one shot (for all clients that do not need to react in between). 162 // in one shot (for all clients that do not need to react in between).
162 large_icon_service_->GetLargeIconImageOrFallbackStyle( 163 large_icon_service_->GetLargeIconImageOrFallbackStyle(
163 publisher_url, minimum_size_in_pixel, desired_size_in_pixel, 164 publisher_url, minimum_size_in_pixel, desired_size_in_pixel,
164 base::Bind(&ContentSuggestionsService::OnGetFaviconFromCacheFinished, 165 base::Bind(&ContentSuggestionsService::OnGetFaviconFromCacheFinished,
165 base::Unretained(this), publisher_url, minimum_size_in_pixel, 166 base::Unretained(this), publisher_url, minimum_size_in_pixel,
166 desired_size_in_pixel, callback, 167 desired_size_in_pixel, callback,
167 /*continue_to_google_server=*/true), 168 /*continue_to_google_server=*/true),
168 &favicons_task_tracker_); 169 &favicons_task_tracker_);
169 } 170 }
170 171
171 void ContentSuggestionsService::OnGetFaviconFromCacheFinished( 172 void ContentSuggestionsService::OnGetFaviconFromCacheFinished(
Marc Treib 2017/04/12 11:48:00 Orthogonal to this CL: We might want to extract th
jkrcal 2017/04/12 12:44:19 Good point, added a CL.
172 const GURL& publisher_url, 173 const GURL& publisher_url,
173 int minimum_size_in_pixel, 174 int minimum_size_in_pixel,
174 int desired_size_in_pixel, 175 int desired_size_in_pixel,
175 const ImageFetchedCallback& callback, 176 const ImageFetchedCallback& callback,
176 bool continue_to_google_server, 177 bool continue_to_google_server,
177 const favicon_base::LargeIconImageResult& result) { 178 const favicon_base::LargeIconImageResult& result) {
178 if (!result.image.IsEmpty()) { 179 if (!result.image.IsEmpty()) {
179 callback.Run(result.image); 180 callback.Run(result.image);
180 return; 181 return;
181 } 182 }
(...skipping 439 matching lines...) Expand 10 before | Expand all | Expand 10 after
621 void ContentSuggestionsService::StoreDismissedCategoriesToPrefs() { 622 void ContentSuggestionsService::StoreDismissedCategoriesToPrefs() {
622 base::ListValue list; 623 base::ListValue list;
623 for (const auto& category_provider_pair : dismissed_providers_by_category_) { 624 for (const auto& category_provider_pair : dismissed_providers_by_category_) {
624 list.AppendInteger(category_provider_pair.first.id()); 625 list.AppendInteger(category_provider_pair.first.id());
625 } 626 }
626 627
627 pref_service_->Set(prefs::kDismissedCategories, list); 628 pref_service_->Set(prefs::kDismissedCategories, list);
628 } 629 }
629 630
630 } // namespace ntp_snippets 631 } // namespace ntp_snippets
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698