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

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

Issue 2790463003: ntp_tiles: Cleanup enum names (Closed)
Patch Set: add back histogram enums 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 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/ntp_tiles/most_visited_sites.h" 5 #include "components/ntp_tiles/most_visited_sites.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <set> 8 #include <set>
9 #include <string> 9 #include <string>
10 #include <utility> 10 #include <utility>
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
56 std::unique_ptr<MostVisitedSitesSupervisor> supervisor) 56 std::unique_ptr<MostVisitedSitesSupervisor> supervisor)
57 : prefs_(prefs), 57 : prefs_(prefs),
58 top_sites_(top_sites), 58 top_sites_(top_sites),
59 suggestions_service_(suggestions), 59 suggestions_service_(suggestions),
60 popular_sites_(std::move(popular_sites)), 60 popular_sites_(std::move(popular_sites)),
61 icon_cacher_(std::move(icon_cacher)), 61 icon_cacher_(std::move(icon_cacher)),
62 supervisor_(std::move(supervisor)), 62 supervisor_(std::move(supervisor)),
63 observer_(nullptr), 63 observer_(nullptr),
64 num_sites_(0), 64 num_sites_(0),
65 top_sites_observer_(this), 65 top_sites_observer_(this),
66 mv_source_(NTPTileSource::TOP_SITES), 66 mv_source_(TileSource::TOP_SITES),
67 top_sites_weak_ptr_factory_(this) { 67 top_sites_weak_ptr_factory_(this) {
68 DCHECK(prefs_); 68 DCHECK(prefs_);
69 // top_sites_ can be null in tests. 69 // top_sites_ can be null in tests.
70 // TODO(sfiera): have iOS use a dummy TopSites in its tests. 70 // TODO(sfiera): have iOS use a dummy TopSites in its tests.
71 DCHECK(suggestions_service_); 71 DCHECK(suggestions_service_);
72 if (supervisor_) 72 if (supervisor_)
73 supervisor_->SetObserver(this); 73 supervisor_->SetObserver(this);
74 } 74 }
75 75
76 MostVisitedSites::~MostVisitedSites() { 76 MostVisitedSites::~MostVisitedSites() {
77 if (supervisor_) 77 if (supervisor_)
78 supervisor_->SetObserver(nullptr); 78 supervisor_->SetObserver(nullptr);
79 } 79 }
80 80
81 bool MostVisitedSites::DoesSourceExist(NTPTileSource source) const { 81 bool MostVisitedSites::DoesSourceExist(TileSource source) const {
82 switch (source) { 82 switch (source) {
83 case NTPTileSource::TOP_SITES: 83 case TileSource::TOP_SITES:
84 return top_sites_ != nullptr; 84 return top_sites_ != nullptr;
85 case NTPTileSource::SUGGESTIONS_SERVICE: 85 case TileSource::SUGGESTIONS_SERVICE:
86 return suggestions_service_ != nullptr; 86 return suggestions_service_ != nullptr;
87 case NTPTileSource::POPULAR: 87 case TileSource::POPULAR:
88 return popular_sites_ != nullptr; 88 return popular_sites_ != nullptr;
89 case NTPTileSource::WHITELIST: 89 case TileSource::WHITELIST:
90 return supervisor_ != nullptr; 90 return supervisor_ != nullptr;
91 } 91 }
92 NOTREACHED(); 92 NOTREACHED();
93 return false; 93 return false;
94 } 94 }
95 95
96 void MostVisitedSites::SetMostVisitedURLsObserver(Observer* observer, 96 void MostVisitedSites::SetMostVisitedURLsObserver(Observer* observer,
97 int num_sites) { 97 int num_sites) {
98 DCHECK(observer); 98 DCHECK(observer);
99 observer_ = observer; 99 observer_ = observer;
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
136 bool add_url) { 136 bool add_url) {
137 if (top_sites_) { 137 if (top_sites_) {
138 // Always blacklist in the local TopSites. 138 // Always blacklist in the local TopSites.
139 if (add_url) 139 if (add_url)
140 top_sites_->AddBlacklistedURL(url); 140 top_sites_->AddBlacklistedURL(url);
141 else 141 else
142 top_sites_->RemoveBlacklistedURL(url); 142 top_sites_->RemoveBlacklistedURL(url);
143 } 143 }
144 144
145 // Only blacklist in the server-side suggestions service if it's active. 145 // Only blacklist in the server-side suggestions service if it's active.
146 if (mv_source_ == NTPTileSource::SUGGESTIONS_SERVICE) { 146 if (mv_source_ == TileSource::SUGGESTIONS_SERVICE) {
147 if (add_url) 147 if (add_url)
148 suggestions_service_->BlacklistURL(url); 148 suggestions_service_->BlacklistURL(url);
149 else 149 else
150 suggestions_service_->UndoBlacklistURL(url); 150 suggestions_service_->UndoBlacklistURL(url);
151 } 151 }
152 } 152 }
153 153
154 void MostVisitedSites::ClearBlacklistedUrls() { 154 void MostVisitedSites::ClearBlacklistedUrls() {
155 if (top_sites_) { 155 if (top_sites_) {
156 // Always update the blacklist in the local TopSites. 156 // Always update the blacklist in the local TopSites.
157 top_sites_->ClearBlacklistedURLs(); 157 top_sites_->ClearBlacklistedURLs();
158 } 158 }
159 159
160 // Only update the server-side blacklist if it's active. 160 // Only update the server-side blacklist if it's active.
161 if (mv_source_ == NTPTileSource::SUGGESTIONS_SERVICE) { 161 if (mv_source_ == TileSource::SUGGESTIONS_SERVICE) {
162 suggestions_service_->ClearBlacklist(); 162 suggestions_service_->ClearBlacklist();
163 } 163 }
164 } 164 }
165 165
166 void MostVisitedSites::OnBlockedSitesChanged() { 166 void MostVisitedSites::OnBlockedSitesChanged() {
167 BuildCurrentTiles(); 167 BuildCurrentTiles();
168 } 168 }
169 169
170 // static 170 // static
171 void MostVisitedSites::RegisterProfilePrefs( 171 void MostVisitedSites::RegisterProfilePrefs(
(...skipping 19 matching lines...) Expand all
191 return whitelist.large_icon_path; 191 return whitelist.large_icon_path;
192 } 192 }
193 } 193 }
194 return base::FilePath(); 194 return base::FilePath();
195 } 195 }
196 196
197 void MostVisitedSites::OnMostVisitedURLsAvailable( 197 void MostVisitedSites::OnMostVisitedURLsAvailable(
198 const history::MostVisitedURLList& visited_list) { 198 const history::MostVisitedURLList& visited_list) {
199 // Ignore the event if tiles provided by the Suggestions Service, which take 199 // Ignore the event if tiles provided by the Suggestions Service, which take
200 // precedence. 200 // precedence.
201 if (mv_source_ == NTPTileSource::SUGGESTIONS_SERVICE) { 201 if (mv_source_ == TileSource::SUGGESTIONS_SERVICE) {
202 return; 202 return;
203 } 203 }
204 204
205 NTPTilesVector tiles; 205 NTPTilesVector tiles;
206 size_t num_tiles = 206 size_t num_tiles =
207 std::min(visited_list.size(), static_cast<size_t>(num_sites_)); 207 std::min(visited_list.size(), static_cast<size_t>(num_sites_));
208 for (size_t i = 0; i < num_tiles; ++i) { 208 for (size_t i = 0; i < num_tiles; ++i) {
209 const history::MostVisitedURL& visited = visited_list[i]; 209 const history::MostVisitedURL& visited = visited_list[i];
210 if (visited.url.is_empty()) 210 if (visited.url.is_empty())
211 break; // This is the signal that there are no more real visited sites. 211 break; // This is the signal that there are no more real visited sites.
212 if (supervisor_ && supervisor_->IsBlocked(visited.url)) 212 if (supervisor_ && supervisor_->IsBlocked(visited.url))
213 continue; 213 continue;
214 214
215 NTPTile tile; 215 NTPTile tile;
216 tile.title = visited.title; 216 tile.title = visited.title;
217 tile.url = visited.url; 217 tile.url = visited.url;
218 tile.source = NTPTileSource::TOP_SITES; 218 tile.source = TileSource::TOP_SITES;
219 tile.whitelist_icon_path = GetWhitelistLargeIconPath(visited.url); 219 tile.whitelist_icon_path = GetWhitelistLargeIconPath(visited.url);
220 220
221 tiles.push_back(std::move(tile)); 221 tiles.push_back(std::move(tile));
222 } 222 }
223 223
224 mv_source_ = NTPTileSource::TOP_SITES; 224 mv_source_ = TileSource::TOP_SITES;
225 SaveNewTilesAndNotify(std::move(tiles)); 225 SaveNewTilesAndNotify(std::move(tiles));
226 } 226 }
227 227
228 void MostVisitedSites::OnSuggestionsProfileChanged( 228 void MostVisitedSites::OnSuggestionsProfileChanged(
229 const SuggestionsProfile& suggestions_profile) { 229 const SuggestionsProfile& suggestions_profile) {
230 if (suggestions_profile.suggestions_size() == 0 && 230 if (suggestions_profile.suggestions_size() == 0 &&
231 mv_source_ != NTPTileSource::SUGGESTIONS_SERVICE) { 231 mv_source_ != TileSource::SUGGESTIONS_SERVICE) {
232 return; 232 return;
233 } 233 }
234 234
235 BuildCurrentTilesGivenSuggestionsProfile(suggestions_profile); 235 BuildCurrentTilesGivenSuggestionsProfile(suggestions_profile);
236 } 236 }
237 237
238 void MostVisitedSites::BuildCurrentTiles() { 238 void MostVisitedSites::BuildCurrentTiles() {
239 BuildCurrentTilesGivenSuggestionsProfile( 239 BuildCurrentTilesGivenSuggestionsProfile(
240 suggestions_service_->GetSuggestionsDataFromCache().value_or( 240 suggestions_service_->GetSuggestionsDataFromCache().value_or(
241 SuggestionsProfile())); 241 SuggestionsProfile()));
242 } 242 }
243 243
244 void MostVisitedSites::BuildCurrentTilesGivenSuggestionsProfile( 244 void MostVisitedSites::BuildCurrentTilesGivenSuggestionsProfile(
245 const suggestions::SuggestionsProfile& suggestions_profile) { 245 const suggestions::SuggestionsProfile& suggestions_profile) {
246 int num_tiles = suggestions_profile.suggestions_size(); 246 int num_tiles = suggestions_profile.suggestions_size();
247 // With no server suggestions, fall back to local TopSites. 247 // With no server suggestions, fall back to local TopSites.
248 if (num_tiles == 0 || 248 if (num_tiles == 0 ||
249 !base::FeatureList::IsEnabled(kDisplaySuggestionsServiceTiles)) { 249 !base::FeatureList::IsEnabled(kDisplaySuggestionsServiceTiles)) {
250 mv_source_ = NTPTileSource::TOP_SITES; 250 mv_source_ = TileSource::TOP_SITES;
251 InitiateTopSitesQuery(); 251 InitiateTopSitesQuery();
252 return; 252 return;
253 } 253 }
254 if (num_sites_ < num_tiles) 254 if (num_sites_ < num_tiles)
255 num_tiles = num_sites_; 255 num_tiles = num_sites_;
256 256
257 NTPTilesVector tiles; 257 NTPTilesVector tiles;
258 for (int i = 0; i < num_tiles; ++i) { 258 for (int i = 0; i < num_tiles; ++i) {
259 const ChromeSuggestion& suggestion_pb = suggestions_profile.suggestions(i); 259 const ChromeSuggestion& suggestion_pb = suggestions_profile.suggestions(i);
260 GURL url(suggestion_pb.url()); 260 GURL url(suggestion_pb.url());
261 if (supervisor_ && supervisor_->IsBlocked(url)) 261 if (supervisor_ && supervisor_->IsBlocked(url))
262 continue; 262 continue;
263 263
264 NTPTile tile; 264 NTPTile tile;
265 tile.title = base::UTF8ToUTF16(suggestion_pb.title()); 265 tile.title = base::UTF8ToUTF16(suggestion_pb.title());
266 tile.url = url; 266 tile.url = url;
267 tile.source = NTPTileSource::SUGGESTIONS_SERVICE; 267 tile.source = TileSource::SUGGESTIONS_SERVICE;
268 tile.whitelist_icon_path = GetWhitelistLargeIconPath(url); 268 tile.whitelist_icon_path = GetWhitelistLargeIconPath(url);
269 tile.thumbnail_url = GURL(suggestion_pb.thumbnail()); 269 tile.thumbnail_url = GURL(suggestion_pb.thumbnail());
270 tile.favicon_url = GURL(suggestion_pb.favicon_url()); 270 tile.favicon_url = GURL(suggestion_pb.favicon_url());
271 271
272 tiles.push_back(std::move(tile)); 272 tiles.push_back(std::move(tile));
273 } 273 }
274 274
275 mv_source_ = NTPTileSource::SUGGESTIONS_SERVICE; 275 mv_source_ = TileSource::SUGGESTIONS_SERVICE;
276 SaveNewTilesAndNotify(std::move(tiles)); 276 SaveNewTilesAndNotify(std::move(tiles));
277 } 277 }
278 278
279 NTPTilesVector MostVisitedSites::CreateWhitelistEntryPointTiles( 279 NTPTilesVector MostVisitedSites::CreateWhitelistEntryPointTiles(
280 const NTPTilesVector& personal_tiles) { 280 const NTPTilesVector& personal_tiles) {
281 if (!supervisor_) { 281 if (!supervisor_) {
282 return NTPTilesVector(); 282 return NTPTilesVector();
283 } 283 }
284 284
285 size_t num_personal_tiles = personal_tiles.size(); 285 size_t num_personal_tiles = personal_tiles.size();
(...skipping 19 matching lines...) Expand all
305 personal_hosts.end()) 305 personal_hosts.end())
306 continue; 306 continue;
307 307
308 // Skip whitelist entry points that are manually blocked. 308 // Skip whitelist entry points that are manually blocked.
309 if (supervisor_->IsBlocked(whitelist.entry_point)) 309 if (supervisor_->IsBlocked(whitelist.entry_point))
310 continue; 310 continue;
311 311
312 NTPTile tile; 312 NTPTile tile;
313 tile.title = whitelist.title; 313 tile.title = whitelist.title;
314 tile.url = whitelist.entry_point; 314 tile.url = whitelist.entry_point;
315 tile.source = NTPTileSource::WHITELIST; 315 tile.source = TileSource::WHITELIST;
316 tile.whitelist_icon_path = whitelist.large_icon_path; 316 tile.whitelist_icon_path = whitelist.large_icon_path;
317 whitelist_tiles.push_back(std::move(tile)); 317 whitelist_tiles.push_back(std::move(tile));
318 } 318 }
319 319
320 return whitelist_tiles; 320 return whitelist_tiles;
321 } 321 }
322 322
323 NTPTilesVector MostVisitedSites::CreatePopularSitesTiles( 323 NTPTilesVector MostVisitedSites::CreatePopularSitesTiles(
324 const NTPTilesVector& personal_tiles, 324 const NTPTilesVector& personal_tiles,
325 const NTPTilesVector& whitelist_tiles) { 325 const NTPTilesVector& whitelist_tiles) {
(...skipping 21 matching lines...) Expand all
347 if (top_sites_ && top_sites_->IsBlacklisted(popular_site.url)) 347 if (top_sites_ && top_sites_->IsBlacklisted(popular_site.url))
348 continue; 348 continue;
349 std::string host = popular_site.url.host(); 349 std::string host = popular_site.url.host();
350 // Skip tiles already present in personal or whitelists. 350 // Skip tiles already present in personal or whitelists.
351 if (hosts.find(host) != hosts.end()) 351 if (hosts.find(host) != hosts.end())
352 continue; 352 continue;
353 353
354 NTPTile tile; 354 NTPTile tile;
355 tile.title = popular_site.title; 355 tile.title = popular_site.title;
356 tile.url = GURL(popular_site.url); 356 tile.url = GURL(popular_site.url);
357 tile.source = NTPTileSource::POPULAR; 357 tile.source = TileSource::POPULAR;
358 358
359 popular_sites_tiles.push_back(std::move(tile)); 359 popular_sites_tiles.push_back(std::move(tile));
360 base::Closure icon_available = 360 base::Closure icon_available =
361 base::Bind(&MostVisitedSites::OnIconMadeAvailable, 361 base::Bind(&MostVisitedSites::OnIconMadeAvailable,
362 base::Unretained(this), popular_site.url); 362 base::Unretained(this), popular_site.url);
363 icon_cacher_->StartFetch(popular_site, icon_available, icon_available); 363 icon_cacher_->StartFetch(popular_site, icon_available, icon_available);
364 if (popular_sites_tiles.size() >= num_popular_sites_tiles) 364 if (popular_sites_tiles.size() >= num_popular_sites_tiles)
365 break; 365 break;
366 } 366 }
367 } 367 }
(...skipping 15 matching lines...) Expand all
383 std::move(popular_sites_tiles)); 383 std::move(popular_sites_tiles));
384 if (current_tiles_.has_value() && (*current_tiles_ == new_tiles)) { 384 if (current_tiles_.has_value() && (*current_tiles_ == new_tiles)) {
385 return; 385 return;
386 } 386 }
387 387
388 current_tiles_.emplace(std::move(new_tiles)); 388 current_tiles_.emplace(std::move(new_tiles));
389 DCHECK_EQ(num_actual_tiles, current_tiles_->size()); 389 DCHECK_EQ(num_actual_tiles, current_tiles_->size());
390 390
391 int num_personal_tiles = 0; 391 int num_personal_tiles = 0;
392 for (const auto& tile : *current_tiles_) { 392 for (const auto& tile : *current_tiles_) {
393 if (tile.source != NTPTileSource::POPULAR) 393 if (tile.source != TileSource::POPULAR)
394 num_personal_tiles++; 394 num_personal_tiles++;
395 } 395 }
396 prefs_->SetInteger(prefs::kNumPersonalTiles, num_personal_tiles); 396 prefs_->SetInteger(prefs::kNumPersonalTiles, num_personal_tiles);
397 397
398 if (!observer_) 398 if (!observer_)
399 return; 399 return;
400 observer_->OnMostVisitedURLsAvailable(*current_tiles_); 400 observer_->OnMostVisitedURLsAvailable(*current_tiles_);
401 } 401 }
402 402
403 // static 403 // static
(...skipping 23 matching lines...) Expand all
427 } 427 }
428 428
429 void MostVisitedSites::OnIconMadeAvailable(const GURL& site_url) { 429 void MostVisitedSites::OnIconMadeAvailable(const GURL& site_url) {
430 observer_->OnIconMadeAvailable(site_url); 430 observer_->OnIconMadeAvailable(site_url);
431 } 431 }
432 432
433 void MostVisitedSites::TopSitesLoaded(TopSites* top_sites) {} 433 void MostVisitedSites::TopSitesLoaded(TopSites* top_sites) {}
434 434
435 void MostVisitedSites::TopSitesChanged(TopSites* top_sites, 435 void MostVisitedSites::TopSitesChanged(TopSites* top_sites,
436 ChangeReason change_reason) { 436 ChangeReason change_reason) {
437 if (mv_source_ == NTPTileSource::TOP_SITES) { 437 if (mv_source_ == TileSource::TOP_SITES) {
438 // The displayed tiles are invalidated. 438 // The displayed tiles are invalidated.
439 InitiateTopSitesQuery(); 439 InitiateTopSitesQuery();
440 } 440 }
441 } 441 }
442 442
443 } // namespace ntp_tiles 443 } // namespace ntp_tiles
OLDNEW
« no previous file with comments | « components/ntp_tiles/most_visited_sites.h ('k') | components/ntp_tiles/most_visited_sites_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698