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

Unified Diff: chrome/browser/android/ntp/most_visited_sites.cc

Issue 1919823002: Update MostVisitedSites observer interface. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: iMove move to .cc. Created 4 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/android/ntp/most_visited_sites.cc
diff --git a/chrome/browser/android/ntp/most_visited_sites.cc b/chrome/browser/android/ntp/most_visited_sites.cc
index 70b57bf9fb0096bc8c47c4acf59c7f149c096830..7b1de89be00a118b452baa49d13e27ffceee53a4 100644
--- a/chrome/browser/android/ntp/most_visited_sites.cc
+++ b/chrome/browser/android/ntp/most_visited_sites.cc
@@ -16,7 +16,6 @@
#include "base/strings/stringprintf.h"
#include "base/strings/utf_string_conversions.h"
#include "base/time/time.h"
-#include "chrome/browser/android/ntp/popular_sites.h"
#include "chrome/browser/history/top_sites_factory.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/search/suggestions/suggestions_service_factory.h"
@@ -149,14 +148,9 @@ bool AreURLsEquivalent(const GURL& url1, const GURL& url2) {
return url1.host() == url2.host() && url1.path() == url2.path();
}
-} // namespace
-
-MostVisitedSites::Suggestion::Suggestion() : provider_index(-1) {}
-
-MostVisitedSites::Suggestion::~Suggestion() {}
-
-std::string MostVisitedSites::Suggestion::GetSourceHistogramName() const {
- switch (source) {
+std::string GetSourceHistogramName(
+ const MostVisitedSites::Suggestion& suggestion) {
+ switch (suggestion.source) {
case MostVisitedSites::TOP_SITES:
return kHistogramClientName;
case MostVisitedSites::POPULAR:
@@ -164,14 +158,25 @@ std::string MostVisitedSites::Suggestion::GetSourceHistogramName() const {
case MostVisitedSites::WHITELIST:
return kHistogramWhitelistName;
case MostVisitedSites::SUGGESTIONS_SERVICE:
- return provider_index >= 0
- ? base::StringPrintf(kHistogramServerFormat, provider_index)
+ return suggestion.provider_index >= 0
+ ? base::StringPrintf(kHistogramServerFormat,
+ suggestion.provider_index)
: kHistogramServerName;
}
NOTREACHED();
return std::string();
}
+} // namespace
+
+MostVisitedSites::Suggestion::Suggestion() : provider_index(-1) {}
+
+MostVisitedSites::Suggestion::~Suggestion() {}
+
+MostVisitedSites::Suggestion::Suggestion(Suggestion&&) = default;
+MostVisitedSites::Suggestion&
+MostVisitedSites::Suggestion::operator=(Suggestion&&) = default;
+
MostVisitedSites::MostVisitedSites(Profile* profile)
: profile_(profile), observer_(nullptr), num_sites_(0),
received_most_visited_sites_(false), received_popular_sites_(false),
@@ -191,7 +196,7 @@ MostVisitedSites::~MostVisitedSites() {
}
void MostVisitedSites::SetMostVisitedURLsObserver(
- MostVisitedSitesObserver* observer, int num_sites) {
+ MostVisitedSites::Observer* observer, int num_sites) {
observer_ = observer;
num_sites_ = num_sites;
@@ -322,7 +327,7 @@ void MostVisitedSites::RecordTileTypeMetrics(
++counts_per_type[tile_type];
std::string histogram = base::StringPrintf(
"NewTabPage.TileType.%s",
- current_suggestions_[i]->GetSourceHistogramName().c_str());
+ GetSourceHistogramName(current_suggestions_[i]).c_str());
LogHistogramEvent(histogram, tile_type, NUM_TILE_TYPES);
}
@@ -339,12 +344,12 @@ void MostVisitedSites::RecordOpenedMostVisitedItem(int index, int tile_type) {
DCHECK_LT(index, static_cast<int>(current_suggestions_.size()));
std::string histogram = base::StringPrintf(
"NewTabPage.MostVisited.%s",
- current_suggestions_[index]->GetSourceHistogramName().c_str());
+ GetSourceHistogramName(current_suggestions_[index]).c_str());
LogHistogramEvent(histogram, index, num_sites_);
histogram = base::StringPrintf(
"NewTabPage.TileTypeClicked.%s",
- current_suggestions_[index]->GetSourceHistogramName().c_str());
+ GetSourceHistogramName(current_suggestions_[index]).c_str());
LogHistogramEvent(histogram, tile_type, NUM_TILE_TYPES);
}
@@ -402,7 +407,7 @@ void MostVisitedSites::OnMostVisitedURLsAvailable(
SupervisedUserServiceFactory::GetForProfile(profile_)
->GetURLFilterForUIThread();
- MostVisitedSites::SuggestionsVector suggestions;
+ MostVisitedSites::SuggestionsPtrVector suggestions;
size_t num_tiles =
std::min(visited_list.size(), static_cast<size_t>(num_sites_));
for (size_t i = 0; i < num_tiles; ++i) {
@@ -445,7 +450,7 @@ void MostVisitedSites::OnSuggestionsProfileAvailable(
SupervisedUserURLFilter* url_filter =
SupervisedUserServiceFactory::GetForProfile(profile_)
->GetURLFilterForUIThread();
- MostVisitedSites::SuggestionsVector suggestions;
+ MostVisitedSites::SuggestionsPtrVector suggestions;
for (int i = 0; i < num_tiles; ++i) {
const ChromeSuggestion& suggestion = suggestions_profile.suggestions(i);
if (url_filter->GetFilteringBehaviorForURL(GURL(suggestion.url())) ==
@@ -471,14 +476,14 @@ void MostVisitedSites::OnSuggestionsProfileAvailable(
NotifyMostVisitedURLsObserver();
}
-MostVisitedSites::SuggestionsVector
+MostVisitedSites::SuggestionsPtrVector
MostVisitedSites::CreateWhitelistEntryPointSuggestions(
- const MostVisitedSites::SuggestionsVector& personal_suggestions) {
+ const MostVisitedSites::SuggestionsPtrVector& personal_suggestions) {
size_t num_personal_suggestions = personal_suggestions.size();
DCHECK_LE(num_personal_suggestions, static_cast<size_t>(num_sites_));
size_t num_whitelist_suggestions = num_sites_ - num_personal_suggestions;
- MostVisitedSites::SuggestionsVector whitelist_suggestions;
+ MostVisitedSites::SuggestionsPtrVector whitelist_suggestions;
SupervisedUserService* supervised_user_service =
SupervisedUserServiceFactory::GetForProfile(profile_);
@@ -520,13 +525,13 @@ MostVisitedSites::CreateWhitelistEntryPointSuggestions(
return whitelist_suggestions;
}
-MostVisitedSites::SuggestionsVector
+MostVisitedSites::SuggestionsPtrVector
MostVisitedSites::CreatePopularSitesSuggestions(
- const MostVisitedSites::SuggestionsVector& personal_suggestions,
- const MostVisitedSites::SuggestionsVector& whitelist_suggestions) {
+ const MostVisitedSites::SuggestionsPtrVector& personal_suggestions,
+ const MostVisitedSites::SuggestionsPtrVector& whitelist_suggestions) {
// For child accounts popular sites suggestions will not be added.
if (profile_->IsChild())
- return MostVisitedSites::SuggestionsVector();
+ return MostVisitedSites::SuggestionsPtrVector();
size_t num_suggestions =
personal_suggestions.size() + whitelist_suggestions.size();
@@ -535,7 +540,7 @@ MostVisitedSites::CreatePopularSitesSuggestions(
// Collect non-blacklisted popular suggestions, skipping those already present
// in the personal suggestions.
size_t num_popular_sites_suggestions = num_sites_ - num_suggestions;
- MostVisitedSites::SuggestionsVector popular_sites_suggestions;
+ MostVisitedSites::SuggestionsPtrVector popular_sites_suggestions;
if (num_popular_sites_suggestions > 0 && popular_sites_) {
std::set<std::string> hosts;
@@ -567,10 +572,10 @@ MostVisitedSites::CreatePopularSitesSuggestions(
}
void MostVisitedSites::SaveNewNTPSuggestions(
- MostVisitedSites::SuggestionsVector* personal_suggestions) {
- MostVisitedSites::SuggestionsVector whitelist_suggestions =
+ MostVisitedSites::SuggestionsPtrVector* personal_suggestions) {
+ MostVisitedSites::SuggestionsPtrVector whitelist_suggestions =
CreateWhitelistEntryPointSuggestions(*personal_suggestions);
- MostVisitedSites::SuggestionsVector popular_sites_suggestions =
+ MostVisitedSites::SuggestionsPtrVector popular_sites_suggestions =
CreatePopularSitesSuggestions(*personal_suggestions,
whitelist_suggestions);
size_t num_actual_tiles = personal_suggestions->size() +
@@ -582,20 +587,22 @@ void MostVisitedSites::SaveNewNTPSuggestions(
// |old_sites_url| and |old_sites_is_personal|, but that caused problems
// (crbug.com/585391). Either figure out a way to fix them and re-enable,
// or properly remove the order-persisting code. crbug.com/601734
- MostVisitedSites::SuggestionsVector merged_suggestions = MergeSuggestions(
+ MostVisitedSites::SuggestionsPtrVector merged_suggestions = MergeSuggestions(
personal_suggestions, &whitelist_suggestions, &popular_sites_suggestions,
old_sites_url, old_sites_is_personal);
DCHECK_EQ(num_actual_tiles, merged_suggestions.size());
- current_suggestions_.swap(merged_suggestions);
+ current_suggestions_.resize(merged_suggestions.size());
+ for (size_t i = 0; i < merged_suggestions.size(); ++i)
+ std::swap(*merged_suggestions[i], current_suggestions_[i]);
if (received_popular_sites_)
SaveCurrentNTPSites();
}
// static
-MostVisitedSites::SuggestionsVector MostVisitedSites::MergeSuggestions(
- MostVisitedSites::SuggestionsVector* personal_suggestions,
- MostVisitedSites::SuggestionsVector* whitelist_suggestions,
- MostVisitedSites::SuggestionsVector* popular_suggestions,
+MostVisitedSites::SuggestionsPtrVector MostVisitedSites::MergeSuggestions(
+ MostVisitedSites::SuggestionsPtrVector* personal_suggestions,
+ MostVisitedSites::SuggestionsPtrVector* whitelist_suggestions,
+ MostVisitedSites::SuggestionsPtrVector* popular_suggestions,
const std::vector<std::string>& old_sites_url,
const std::vector<bool>& old_sites_is_personal) {
size_t num_personal_suggestions = personal_suggestions->size();
@@ -603,7 +610,7 @@ MostVisitedSites::SuggestionsVector MostVisitedSites::MergeSuggestions(
size_t num_popular_suggestions = popular_suggestions->size();
size_t num_tiles = num_popular_suggestions + num_whitelist_suggestions +
num_personal_suggestions;
- MostVisitedSites::SuggestionsVector merged_suggestions;
+ MostVisitedSites::SuggestionsPtrVector merged_suggestions;
merged_suggestions.resize(num_tiles);
size_t num_old_tiles = old_sites_url.size();
@@ -676,8 +683,8 @@ void MostVisitedSites::SaveCurrentNTPSites() {
base::ListValue url_list;
base::ListValue source_list;
for (const auto& suggestion : current_suggestions_) {
- url_list.AppendString(suggestion->url.spec());
- source_list.AppendBoolean(suggestion->source != MostVisitedSites::POPULAR);
+ url_list.AppendString(suggestion.url.spec());
+ source_list.AppendBoolean(suggestion.source != MostVisitedSites::POPULAR);
}
PrefService* prefs = profile_->GetPrefs();
prefs->Set(prefs::kNTPSuggestionsIsPersonal, source_list);
@@ -686,8 +693,8 @@ void MostVisitedSites::SaveCurrentNTPSites() {
// static
std::vector<size_t> MostVisitedSites::InsertMatchingSuggestions(
- MostVisitedSites::SuggestionsVector* src_suggestions,
- MostVisitedSites::SuggestionsVector* dst_suggestions,
+ MostVisitedSites::SuggestionsPtrVector* src_suggestions,
+ MostVisitedSites::SuggestionsPtrVector* dst_suggestions,
const std::vector<std::string>& match_urls,
const std::vector<std::string>& match_hosts) {
std::vector<size_t> unmatched_suggestions;
@@ -750,18 +757,7 @@ void MostVisitedSites::NotifyMostVisitedURLsObserver() {
if (!observer_)
return;
- std::vector<base::string16> titles;
- std::vector<std::string> urls;
- std::vector<std::string> whitelist_icon_paths;
- titles.reserve(num_suggestions);
- urls.reserve(num_suggestions);
- for (const auto& suggestion : current_suggestions_) {
- titles.push_back(suggestion->title);
- urls.push_back(suggestion->url.spec());
- whitelist_icon_paths.push_back(suggestion->whitelist_icon_path.value());
- }
-
- observer_->OnMostVisitedURLsAvailable(titles, urls, whitelist_icon_paths);
+ observer_->OnMostVisitedURLsAvailable(current_suggestions_);
}
void MostVisitedSites::OnPopularSitesAvailable(bool success) {
@@ -775,15 +771,7 @@ void MostVisitedSites::OnPopularSitesAvailable(bool success) {
if (!observer_)
return;
- std::vector<std::string> urls;
- std::vector<std::string> favicon_urls;
- std::vector<std::string> large_icon_urls;
- for (const PopularSites::Site& popular_site : popular_sites_->sites()) {
- urls.push_back(popular_site.url.spec());
- favicon_urls.push_back(popular_site.favicon_url.spec());
- large_icon_urls.push_back(popular_site.large_icon_url.spec());
- }
- observer_->OnPopularURLsAvailable(urls, favicon_urls, large_icon_urls);
+ observer_->OnPopularURLsAvailable(popular_sites_->sites());
QueryMostVisitedURLs();
}
@@ -791,7 +779,7 @@ void MostVisitedSites::RecordImpressionUMAMetrics() {
for (size_t i = 0; i < current_suggestions_.size(); i++) {
std::string histogram = base::StringPrintf(
"NewTabPage.SuggestionsImpression.%s",
- current_suggestions_[i]->GetSourceHistogramName().c_str());
+ GetSourceHistogramName(current_suggestions_[i]).c_str());
LogHistogramEvent(histogram, static_cast<int>(i), num_sites_);
}
}

Powered by Google App Engine
This is Rietveld 408576698