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

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

Issue 1772363002: Start using the whitelist icon on the NTP. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressing newt's comments Created 4 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/android/most_visited_sites.cc
diff --git a/chrome/browser/android/most_visited_sites.cc b/chrome/browser/android/most_visited_sites.cc
index a41f6c83c7c456fd3c7d41653259aa6e1a236c4f..392abe4797cbc8d98daaa6a101c381f5afcf79dc 100644
--- a/chrome/browser/android/most_visited_sites.cc
+++ b/chrome/browser/android/most_visited_sites.cc
@@ -164,24 +164,63 @@ bool NeedPopularSites(const PrefService* prefs, size_t num_tiles) {
} // namespace
-MostVisitedSites::Suggestion::Suggestion(const base::string16& title,
- const std::string& url,
- MostVisitedSource source)
- : title(title), url(url), source(source), provider_index(-1) {}
+namespace {
+class SuggestionBuilder {
Marc Treib 2016/03/16 11:06:03 nit: empty line after "namespace {" please.
atanasova 2016/03/16 17:58:17 Done.
+ public:
+ SuggestionBuilder(const base::string16& title,
+ const GURL& url,
+ MostVisitedSites::MostVisitedSource source);
+ ~SuggestionBuilder();
+
+ void SetWhitelistIconPath(const base::FilePath& whitelist_icon_path);
+
+ void SetProviderIndex(int provider_index);
+
+ scoped_ptr<MostVisitedSites::Suggestion> Build();
+
+ private:
+ base::string16 title_;
+ GURL url_;
Marc Treib 2016/03/16 11:06:03 Maybe this should store references to the title an
+ MostVisitedSites::MostVisitedSource source_;
+ base::FilePath whitelist_icon_path_;
+ int provider_index_;
+};
+
+SuggestionBuilder::SuggestionBuilder(const base::string16& title,
+ const GURL& url,
+ MostVisitedSites::MostVisitedSource source)
+ : title_(title), url_(url), source_(source), provider_index_(-1) {}
-MostVisitedSites::Suggestion::Suggestion(const base::string16& title,
- const GURL& url,
- MostVisitedSource source)
- : title(title), url(url), source(source), provider_index(-1) {}
+SuggestionBuilder::~SuggestionBuilder() {}
-MostVisitedSites::Suggestion::Suggestion(const base::string16& title,
- const std::string& url,
- MostVisitedSource source,
- int provider_index)
- : title(title), url(url), source(source), provider_index(provider_index) {
- DCHECK_EQ(MostVisitedSites::SUGGESTIONS_SERVICE, source);
+void SuggestionBuilder::SetWhitelistIconPath(
+ const base::FilePath& whitelist_icon_path) {
+ whitelist_icon_path_ = whitelist_icon_path;
}
+void SuggestionBuilder::SetProviderIndex(int provider_index) {
+ provider_index_ = provider_index;
+}
+
+scoped_ptr<MostVisitedSites::Suggestion> SuggestionBuilder::Build() {
+ return make_scoped_ptr(new MostVisitedSites::Suggestion(
+ title_, url_, source_, whitelist_icon_path_, provider_index_));
+}
+
+} // namespace
+
+MostVisitedSites::Suggestion::Suggestion(
+ const base::string16& title,
+ const GURL& url,
+ MostVisitedSource source,
+ const base::FilePath& whitelist_icon_path,
+ int provider_index)
+ : title(title),
+ url(url),
+ source(source),
+ whitelist_icon_path(whitelist_icon_path),
+ provider_index(provider_index) {}
+
MostVisitedSites::Suggestion::~Suggestion() {}
std::string MostVisitedSites::Suggestion::GetSourceHistogramName() const {
@@ -493,8 +532,10 @@ void MostVisitedSites::OnMostVisitedURLsAvailable(
continue;
}
- suggestions.push_back(make_scoped_ptr(
- new Suggestion(visited.title, visited.url.spec(), TOP_SITES)));
+ SuggestionBuilder* builder =
+ new SuggestionBuilder(visited.title, visited.url, TOP_SITES);
Marc Treib 2016/03/16 11:06:03 Memleak! Just SuggestionBuilder builder(...); plea
atanasova 2016/03/16 17:58:17 Done.
+
+ suggestions.push_back(builder->Build());
}
received_most_visited_sites_ = true;
@@ -525,10 +566,13 @@ void MostVisitedSites::OnSuggestionsProfileAvailable(
continue;
}
- suggestions.push_back(make_scoped_ptr(new Suggestion(
- base::UTF8ToUTF16(suggestion.title()), suggestion.url(),
- SUGGESTIONS_SERVICE,
- suggestion.providers_size() > 0 ? suggestion.providers(0) : -1)));
+ const base::string16& title = base::UTF8ToUTF16(suggestion.title());
+ SuggestionBuilder* builder = new SuggestionBuilder(
+ title, GURL(suggestion.url()), SUGGESTIONS_SERVICE);
+ builder->SetProviderIndex(
+ suggestion.providers_size() > 0 ? suggestion.providers(0) : -1);
+
+ suggestions.push_back(builder->Build());
}
received_most_visited_sites_ = true;
@@ -572,8 +616,11 @@ MostVisitedSites::CreateWhitelistEntryPointSuggestions(
continue;
}
- whitelist_suggestions.push_back(make_scoped_ptr(new Suggestion(
- whitelist->title(), whitelist->entry_point(), WHITELIST)));
+ SuggestionBuilder* builder = new SuggestionBuilder(
+ whitelist->title(), whitelist->entry_point(), WHITELIST);
+ builder->SetWhitelistIconPath(whitelist->large_icon_path());
+
+ whitelist_suggestions.push_back(builder->Build());
if (whitelist_suggestions.size() >= num_whitelist_suggestions)
break;
}
@@ -614,8 +661,10 @@ MostVisitedSites::CreatePopularSitesSuggestions(
if (hosts.find(host) != hosts.end())
continue;
- popular_sites_suggestions.push_back(make_scoped_ptr(
- new Suggestion(popular_site.title, popular_site.url, POPULAR)));
+ SuggestionBuilder* builder = new SuggestionBuilder(
+ popular_site.title, GURL(popular_site.url), POPULAR);
+
+ popular_sites_suggestions.push_back(builder->Build());
if (popular_sites_suggestions.size() >= num_popular_sites_suggestions)
break;
}
@@ -802,17 +851,20 @@ void MostVisitedSites::NotifyMostVisitedURLsObserver() {
}
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());
}
JNIEnv* env = AttachCurrentThread();
DCHECK_EQ(titles.size(), urls.size());
Java_MostVisitedURLsObserver_onMostVisitedURLsAvailable(
env, observer_.obj(), ToJavaArrayOfStrings(env, titles).obj(),
- ToJavaArrayOfStrings(env, urls).obj());
+ ToJavaArrayOfStrings(env, urls).obj(),
+ ToJavaArrayOfStrings(env, whitelist_icon_paths).obj());
}
void MostVisitedSites::OnPopularSitesAvailable(bool success) {

Powered by Google App Engine
This is Rietveld 408576698