| 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 31de1d8818deb67581230646fdf0d7053c2de7b1..bacc9dafac15524886a774489ccea4d006bf9c17 100644
|
| --- a/chrome/browser/android/ntp/most_visited_sites.cc
|
| +++ b/chrome/browser/android/ntp/most_visited_sites.cc
|
| @@ -163,6 +163,45 @@ std::string GetSourceHistogramName(
|
|
|
| } // namespace
|
|
|
| +SupervisedUserServiceSupervisor::SupervisedUserServiceSupervisor(Profile* profile)
|
| + : profile_(profile) {}
|
| +
|
| +void SupervisedUserServiceSupervisor::AddObserver(Observer* observer) {
|
| + DCHECK(observers_.find(observer) == observers_.end());
|
| + SupervisedUserService* supervised_user_service =
|
| + SupervisedUserServiceFactory::GetForProfile(profile_);
|
| + std::unique_ptr<SUSObserver> ptr(
|
| + new SUSObserver(supervised_user_service, observer));
|
| + observers_.emplace(observer, std::move(ptr));
|
| +}
|
| +
|
| +void SupervisedUserServiceSupervisor::RemoveObserver(Observer* observer) {
|
| + auto it = observers_.find(observer);
|
| + DCHECK(it != observers_.end());
|
| + observers_.erase(it);
|
| +}
|
| +
|
| +SupervisedUserURLFilter* SupervisedUserServiceSupervisor::GetURLFilterForUIThread() {
|
| + SupervisedUserService* supervised_user_service =
|
| + SupervisedUserServiceFactory::GetForProfile(profile_);
|
| + return supervised_user_service->GetURLFilterForUIThread();
|
| +}
|
| +
|
| +std::vector<Supervisor::Whitelist>
|
| +SupervisedUserServiceSupervisor::whitelists() const {
|
| + std::vector<Supervisor::Whitelist> results;
|
| + SupervisedUserService* supervised_user_service =
|
| + SupervisedUserServiceFactory::GetForProfile(profile_);
|
| + for (const auto& whitelist : supervised_user_service->whitelists()) {
|
| + results.emplace_back(Whitelist{
|
| + whitelist->title(),
|
| + whitelist->entry_point(),
|
| + whitelist->large_icon_path(),
|
| + });
|
| + }
|
| + return results;
|
| +}
|
| +
|
| MostVisitedSites::Suggestion::Suggestion() : provider_index(-1) {}
|
|
|
| MostVisitedSites::Suggestion::~Suggestion() {}
|
| @@ -179,25 +218,20 @@ MostVisitedSites::MostVisitedSites(
|
| scoped_refptr<history::TopSites> top_sites,
|
| SuggestionsService* suggestions,
|
| bool is_child_profile,
|
| - Profile* profile)
|
| - : profile_(profile), prefs_(prefs),
|
| - template_url_service_(template_url_service),
|
| + Supervisor* supervisor)
|
| + : prefs_(prefs), template_url_service_(template_url_service),
|
| variations_service_(variations_service),
|
| download_context_(download_context), top_sites_(top_sites),
|
| - suggestions_service_(suggestions), is_child_profile_(is_child_profile),
|
| - observer_(nullptr), num_sites_(0), received_most_visited_sites_(false),
|
| - received_popular_sites_(false), recorded_uma_(false),
|
| - scoped_observer_(this), mv_source_(SUGGESTIONS_SERVICE),
|
| - weak_ptr_factory_(this) {
|
| - SupervisedUserService* supervised_user_service =
|
| - SupervisedUserServiceFactory::GetForProfile(profile_);
|
| - supervised_user_service->AddObserver(this);
|
| + suggestions_service_(suggestions), supervisor_(supervisor),
|
| + is_child_profile_(is_child_profile), observer_(nullptr), num_sites_(0),
|
| + received_most_visited_sites_(false), received_popular_sites_(false),
|
| + recorded_uma_(false), scoped_observer_(this),
|
| + mv_source_(SUGGESTIONS_SERVICE), weak_ptr_factory_(this) {
|
| + supervisor_->AddObserver(this);
|
| }
|
|
|
| MostVisitedSites::~MostVisitedSites() {
|
| - SupervisedUserService* supervised_user_service =
|
| - SupervisedUserServiceFactory::GetForProfile(profile_);
|
| - supervised_user_service->RemoveObserver(this);
|
| + supervisor_->RemoveObserver(this);
|
| }
|
|
|
| void MostVisitedSites::SetMostVisitedURLsObserver(
|
| @@ -380,21 +414,16 @@ void MostVisitedSites::InitiateTopSitesQuery() {
|
| }
|
|
|
| base::FilePath MostVisitedSites::GetWhitelistLargeIconPath(const GURL& url) {
|
| - SupervisedUserService* supervised_user_service =
|
| - SupervisedUserServiceFactory::GetForProfile(profile_);
|
| -
|
| - for (const auto& whitelist : supervised_user_service->whitelists()) {
|
| - if (AreURLsEquivalent(whitelist->entry_point(), url))
|
| - return whitelist->large_icon_path();
|
| + for (const auto& whitelist : supervisor_->whitelists()) {
|
| + if (AreURLsEquivalent(whitelist.entry_point, url))
|
| + return whitelist.large_icon_path;
|
| }
|
| return base::FilePath();
|
| }
|
|
|
| void MostVisitedSites::OnMostVisitedURLsAvailable(
|
| const history::MostVisitedURLList& visited_list) {
|
| - SupervisedUserURLFilter* url_filter =
|
| - SupervisedUserServiceFactory::GetForProfile(profile_)
|
| - ->GetURLFilterForUIThread();
|
| + SupervisedUserURLFilter* url_filter = supervisor_->GetURLFilterForUIThread();
|
|
|
| MostVisitedSites::SuggestionsPtrVector suggestions;
|
| size_t num_tiles =
|
| @@ -436,9 +465,7 @@ void MostVisitedSites::OnSuggestionsProfileAvailable(
|
| if (num_sites_ < num_tiles)
|
| num_tiles = num_sites_;
|
|
|
| - SupervisedUserURLFilter* url_filter =
|
| - SupervisedUserServiceFactory::GetForProfile(profile_)
|
| - ->GetURLFilterForUIThread();
|
| + SupervisedUserURLFilter* url_filter = supervisor_->GetURLFilterForUIThread();
|
| MostVisitedSites::SuggestionsPtrVector suggestions;
|
| for (int i = 0; i < num_tiles; ++i) {
|
| const ChromeSuggestion& suggestion = suggestions_profile.suggestions(i);
|
| @@ -474,36 +501,34 @@ MostVisitedSites::CreateWhitelistEntryPointSuggestions(
|
| size_t num_whitelist_suggestions = num_sites_ - num_personal_suggestions;
|
| MostVisitedSites::SuggestionsPtrVector whitelist_suggestions;
|
|
|
| - SupervisedUserService* supervised_user_service =
|
| - SupervisedUserServiceFactory::GetForProfile(profile_);
|
| SupervisedUserURLFilter* url_filter =
|
| - supervised_user_service->GetURLFilterForUIThread();
|
| + supervisor_->GetURLFilterForUIThread();
|
|
|
| std::set<std::string> personal_hosts;
|
| for (const auto& suggestion : personal_suggestions)
|
| personal_hosts.insert(suggestion->url.host());
|
|
|
| - for (const auto& whitelist : supervised_user_service->whitelists()) {
|
| + for (const auto& whitelist : supervisor_->whitelists()) {
|
| // Skip blacklisted sites.
|
| - if (top_sites_ && top_sites_->IsBlacklisted(whitelist->entry_point()))
|
| + if (top_sites_ && top_sites_->IsBlacklisted(whitelist.entry_point))
|
| continue;
|
|
|
| // Skip suggestions already present.
|
| - if (personal_hosts.find(whitelist->entry_point().host()) !=
|
| + if (personal_hosts.find(whitelist.entry_point.host()) !=
|
| personal_hosts.end())
|
| continue;
|
|
|
| // Skip whitelist entry points that are manually blocked.
|
| - if (url_filter->GetFilteringBehaviorForURL(whitelist->entry_point()) ==
|
| + if (url_filter->GetFilteringBehaviorForURL(whitelist.entry_point) ==
|
| SupervisedUserURLFilter::FilteringBehavior::BLOCK) {
|
| continue;
|
| }
|
|
|
| std::unique_ptr<Suggestion> suggestion(new Suggestion());
|
| - suggestion->title = whitelist->title();
|
| - suggestion->url = whitelist->entry_point();
|
| + suggestion->title = whitelist.title;
|
| + suggestion->url = whitelist.entry_point;
|
| suggestion->source = WHITELIST;
|
| - suggestion->whitelist_icon_path = whitelist->large_icon_path();
|
| + suggestion->whitelist_icon_path = whitelist.large_icon_path;
|
|
|
| whitelist_suggestions.push_back(std::move(suggestion));
|
| if (whitelist_suggestions.size() >= num_whitelist_suggestions)
|
|
|