Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 #ifndef COMPONENTS_NTP_TILES_MOST_VISITED_SITES_H_ | 5 #ifndef COMPONENTS_NTP_TILES_MOST_VISITED_SITES_H_ |
| 6 #define COMPONENTS_NTP_TILES_MOST_VISITED_SITES_H_ | 6 #define COMPONENTS_NTP_TILES_MOST_VISITED_SITES_H_ |
| 7 | 7 |
| 8 #include <stddef.h> | 8 #include <stddef.h> |
| 9 | 9 |
| 10 #include <memory> | 10 #include <memory> |
| (...skipping 16 matching lines...) Expand all Loading... | |
| 27 namespace history { | 27 namespace history { |
| 28 class TopSites; | 28 class TopSites; |
| 29 } | 29 } |
| 30 | 30 |
| 31 namespace user_prefs { | 31 namespace user_prefs { |
| 32 class PrefRegistrySyncable; | 32 class PrefRegistrySyncable; |
| 33 } | 33 } |
| 34 | 34 |
| 35 namespace ntp_tiles { | 35 namespace ntp_tiles { |
| 36 | 36 |
| 37 class IconCacher; | |
| 38 | |
| 37 // Shim interface for SupervisedUserService. | 39 // Shim interface for SupervisedUserService. |
| 38 class MostVisitedSitesSupervisor { | 40 class MostVisitedSitesSupervisor { |
| 39 public: | 41 public: |
| 40 struct Whitelist { | 42 struct Whitelist { |
| 41 base::string16 title; | 43 base::string16 title; |
| 42 GURL entry_point; | 44 GURL entry_point; |
| 43 base::FilePath large_icon_path; | 45 base::FilePath large_icon_path; |
| 44 }; | 46 }; |
| 45 | 47 |
| 46 class Observer { | 48 class Observer { |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 98 ICON_COLOR, | 100 ICON_COLOR, |
| 99 // The item displays a default gray box in place of an icon. | 101 // The item displays a default gray box in place of an icon. |
| 100 ICON_DEFAULT, | 102 ICON_DEFAULT, |
| 101 NUM_TILE_TYPES, | 103 NUM_TILE_TYPES, |
| 102 }; | 104 }; |
| 103 | 105 |
| 104 // The observer to be notified when the list of most visited sites changes. | 106 // The observer to be notified when the list of most visited sites changes. |
| 105 class Observer { | 107 class Observer { |
| 106 public: | 108 public: |
| 107 virtual void OnMostVisitedURLsAvailable(const NTPTilesVector& tiles) = 0; | 109 virtual void OnMostVisitedURLsAvailable(const NTPTilesVector& tiles) = 0; |
| 108 virtual void OnPopularURLsAvailable(const PopularSitesVector& sites) {} | 110 // TODO(sfiera): make this method required after iOS implements it: |
| 111 virtual void OnIconMadeAvailable(const GURL& site_url) {} | |
| 109 | 112 |
| 110 protected: | 113 protected: |
| 111 virtual ~Observer() {} | 114 virtual ~Observer() {} |
| 112 }; | 115 }; |
| 113 | 116 |
| 114 // Construct a MostVisitedSites instance. | 117 // Construct a MostVisitedSites instance. |
| 115 // | 118 // |
| 116 // |prefs| and |suggestions| are required and may not be null. |top_sites|, | 119 // |prefs| and |suggestions| are required and may not be null. |top_sites|, |
| 117 // |popular_sites|, and |supervisor| are optional and if null the associated | 120 // |popular_sites|, and |supervisor| are optional and if null the associated |
| 118 // features will be disabled. | 121 // features will be disabled. |
| 119 MostVisitedSites(PrefService* prefs, | 122 MostVisitedSites(PrefService* prefs, |
| 120 scoped_refptr<history::TopSites> top_sites, | 123 scoped_refptr<history::TopSites> top_sites, |
| 121 suggestions::SuggestionsService* suggestions, | 124 suggestions::SuggestionsService* suggestions, |
| 122 std::unique_ptr<PopularSites> popular_sites, | 125 std::unique_ptr<PopularSites> popular_sites, |
| 126 std::unique_ptr<IconCacher> icon_cacher, | |
| 123 MostVisitedSitesSupervisor* supervisor); | 127 MostVisitedSitesSupervisor* supervisor); |
| 124 | 128 |
| 125 ~MostVisitedSites() override; | 129 ~MostVisitedSites() override; |
| 126 | 130 |
| 127 // Does not take ownership of |observer|, which must outlive this object and | 131 // Does not take ownership of |observer|, which must outlive this object and |
| 128 // must not be null. | 132 // must not be null. |
| 129 void SetMostVisitedURLsObserver(Observer* observer, int num_sites); | 133 void SetMostVisitedURLsObserver(Observer* observer, int num_sites); |
| 130 | 134 |
| 131 void AddOrRemoveBlacklistedUrl(const GURL& url, bool add_url); | 135 void AddOrRemoveBlacklistedUrl(const GURL& url, bool add_url); |
| 132 void RecordTileTypeMetrics(const std::vector<MostVisitedTileType>& tile_types, | 136 void RecordTileTypeMetrics(const std::vector<MostVisitedTileType>& tile_types, |
| 133 const std::vector<NTPTileSource>& sources); | 137 const std::vector<NTPTileSource>& sources); |
| 134 void RecordOpenedMostVisitedItem(int index, | 138 void RecordOpenedMostVisitedItem(int index, |
| 135 MostVisitedTileType tile_type, | 139 MostVisitedTileType tile_type, |
| 136 NTPTileSource source); | 140 NTPTileSource source); |
| 137 | 141 |
| 138 // MostVisitedSitesSupervisor::Observer implementation. | 142 // MostVisitedSitesSupervisor::Observer implementation. |
| 139 void OnBlockedSitesChanged() override; | 143 void OnBlockedSitesChanged() override; |
| 140 | 144 |
| 141 static void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry); | 145 static void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry); |
| 142 | 146 |
| 143 private: | 147 private: |
| 144 friend class MostVisitedSitesTest; | 148 friend class MostVisitedSitesTest; |
| 145 | 149 |
| 150 void OnIconMadeAvailable(const GURL& site_url, bool newly_available); | |
|
Marc Treib
2016/10/12 09:11:29
nit: Maybe move this below OnPopularSitesAvailable
sfiera
2016/10/13 09:06:46
Done.
| |
| 151 | |
| 146 void BuildCurrentTiles(); | 152 void BuildCurrentTiles(); |
| 147 | 153 |
| 148 // Initialize the query to Top Sites. Called if the SuggestionsService | 154 // Initialize the query to Top Sites. Called if the SuggestionsService |
| 149 // returned no data. | 155 // returned no data. |
| 150 void InitiateTopSitesQuery(); | 156 void InitiateTopSitesQuery(); |
| 151 | 157 |
| 152 // If there's a whitelist entry point for the URL, return the large icon path. | 158 // If there's a whitelist entry point for the URL, return the large icon path. |
| 153 base::FilePath GetWhitelistLargeIconPath(const GURL& url); | 159 base::FilePath GetWhitelistLargeIconPath(const GURL& url); |
| 154 | 160 |
| 155 // Callback for when data is available from TopSites. | 161 // Callback for when data is available from TopSites. |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 191 | 197 |
| 192 // history::TopSitesObserver implementation. | 198 // history::TopSitesObserver implementation. |
| 193 void TopSitesLoaded(history::TopSites* top_sites) override; | 199 void TopSitesLoaded(history::TopSites* top_sites) override; |
| 194 void TopSitesChanged(history::TopSites* top_sites, | 200 void TopSitesChanged(history::TopSites* top_sites, |
| 195 ChangeReason change_reason) override; | 201 ChangeReason change_reason) override; |
| 196 | 202 |
| 197 PrefService* prefs_; | 203 PrefService* prefs_; |
| 198 scoped_refptr<history::TopSites> top_sites_; | 204 scoped_refptr<history::TopSites> top_sites_; |
| 199 suggestions::SuggestionsService* suggestions_service_; | 205 suggestions::SuggestionsService* suggestions_service_; |
| 200 std::unique_ptr<PopularSites> const popular_sites_; | 206 std::unique_ptr<PopularSites> const popular_sites_; |
| 207 std::unique_ptr<IconCacher> const icon_cacher_; | |
| 201 MostVisitedSitesSupervisor* supervisor_; | 208 MostVisitedSitesSupervisor* supervisor_; |
| 202 | 209 |
| 203 Observer* observer_; | 210 Observer* observer_; |
| 204 | 211 |
| 205 // The maximum number of most visited sites to return. | 212 // The maximum number of most visited sites to return. |
| 206 int num_sites_; | 213 int num_sites_; |
| 207 | 214 |
| 208 // True if we are still waiting for an initial set of most visited sites (from | 215 // True if we are still waiting for an initial set of most visited sites (from |
| 209 // either TopSites or the SuggestionsService). | 216 // either TopSites or the SuggestionsService). |
| 210 bool waiting_for_most_visited_sites_; | 217 bool waiting_for_most_visited_sites_; |
| (...skipping 20 matching lines...) Expand all Loading... | |
| 231 | 238 |
| 232 // For callbacks may be run after destruction. | 239 // For callbacks may be run after destruction. |
| 233 base::WeakPtrFactory<MostVisitedSites> weak_ptr_factory_; | 240 base::WeakPtrFactory<MostVisitedSites> weak_ptr_factory_; |
| 234 | 241 |
| 235 DISALLOW_COPY_AND_ASSIGN(MostVisitedSites); | 242 DISALLOW_COPY_AND_ASSIGN(MostVisitedSites); |
| 236 }; | 243 }; |
| 237 | 244 |
| 238 } // namespace ntp_tiles | 245 } // namespace ntp_tiles |
| 239 | 246 |
| 240 #endif // COMPONENTS_NTP_TILES_MOST_VISITED_SITES_H_ | 247 #endif // COMPONENTS_NTP_TILES_MOST_VISITED_SITES_H_ |
| OLD | NEW |