OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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_SNIPPETS_NTP_SNIPPETS_SERVICE_H_ | 5 #ifndef COMPONENTS_NTP_SNIPPETS_NTP_SNIPPETS_SERVICE_H_ |
6 #define COMPONENTS_NTP_SNIPPETS_NTP_SNIPPETS_SERVICE_H_ | 6 #define COMPONENTS_NTP_SNIPPETS_NTP_SNIPPETS_SERVICE_H_ |
7 | 7 |
8 #include <stddef.h> | 8 #include <stddef.h> |
9 | 9 |
10 #include <memory> | 10 #include <memory> |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
85 std::unique_ptr<NTPSnippetsStatusService> status_service); | 85 std::unique_ptr<NTPSnippetsStatusService> status_service); |
86 | 86 |
87 ~NTPSnippetsService() override; | 87 ~NTPSnippetsService() override; |
88 | 88 |
89 static void RegisterProfilePrefs(PrefRegistrySimple* registry); | 89 static void RegisterProfilePrefs(PrefRegistrySimple* registry); |
90 | 90 |
91 // Inherited from KeyedService. | 91 // Inherited from KeyedService. |
92 void Shutdown() override; | 92 void Shutdown() override; |
93 | 93 |
94 // Returns whether the service is ready. While this is false, the list of | 94 // Returns whether the service is ready. While this is false, the list of |
95 // snippets will be empty, and all modifications to it (fetch, discard, etc) | 95 // snippets will be empty, and all modifications to it (fetch, dismiss, etc) |
96 // will be ignored. | 96 // will be ignored. |
97 bool ready() const { return state_ == State::READY; } | 97 bool ready() const { return state_ == State::READY; } |
98 | 98 |
99 // Returns whether the service is initialized. While this is false, some | 99 // Returns whether the service is initialized. While this is false, some |
100 // calls may trigger DCHECKs. | 100 // calls may trigger DCHECKs. |
101 bool initialized() const { return ready() || state_ == State::DISABLED; } | 101 bool initialized() const { return ready() || state_ == State::DISABLED; } |
102 | 102 |
103 // Fetches snippets from the server and adds them to the current ones. | 103 // Fetches snippets from the server and adds them to the current ones. |
104 void FetchSnippets(); | 104 void FetchSnippets(); |
105 // Fetches snippets from the server for specified hosts (overriding | 105 // Fetches snippets from the server for specified hosts (overriding |
106 // suggestions from the suggestion service) and adds them to the current ones. | 106 // suggestions from the suggestion service) and adds them to the current ones. |
107 // Only called from chrome://snippets-internals, DO NOT USE otherwise! | 107 // Only called from chrome://snippets-internals, DO NOT USE otherwise! |
108 // Ignored while |loaded()| is false. | 108 // Ignored while |loaded()| is false. |
109 void FetchSnippetsFromHosts(const std::set<std::string>& hosts); | 109 void FetchSnippetsFromHosts(const std::set<std::string>& hosts); |
110 | 110 |
111 // Available snippets. | 111 // Available snippets. |
112 const NTPSnippet::PtrVector& snippets() const { return snippets_; } | 112 const NTPSnippet::PtrVector& snippets() const { return snippets_; } |
113 | 113 |
114 // Returns the list of snippets previously discarded by the user (that are | 114 // Returns the list of snippets previously dismissed by the user (that are |
115 // not expired yet). | 115 // not expired yet). |
116 const NTPSnippet::PtrVector& discarded_snippets() const { | 116 const NTPSnippet::PtrVector& dismissed_snippets() const { |
117 return discarded_snippets_; | 117 return dismissed_snippets_; |
118 } | 118 } |
119 | 119 |
120 const NTPSnippetsFetcher* snippets_fetcher() const { | 120 const NTPSnippetsFetcher* snippets_fetcher() const { |
121 return snippets_fetcher_.get(); | 121 return snippets_fetcher_.get(); |
122 } | 122 } |
123 | 123 |
124 // Returns a reason why the service is disabled, or DisabledReason::NONE | 124 // Returns a reason why the service is disabled, or DisabledReason::NONE |
125 // if it's not. | 125 // if it's not. |
126 DisabledReason disabled_reason() const { | 126 DisabledReason disabled_reason() const { |
127 return snippets_status_service_->disabled_reason(); | 127 return snippets_status_service_->disabled_reason(); |
128 } | 128 } |
129 | 129 |
130 // (Re)schedules the periodic fetching of snippets. This is necessary because | 130 // (Re)schedules the periodic fetching of snippets. This is necessary because |
131 // the schedule depends on the time of day. | 131 // the schedule depends on the time of day. |
132 void RescheduleFetching(); | 132 void RescheduleFetching(); |
133 | 133 |
134 // ContentSuggestionsProvider implementation | 134 // ContentSuggestionsProvider implementation |
135 // TODO(pke): At some point reorder the implementations in the .cc file | 135 // TODO(pke): At some point reorder the implementations in the .cc file |
136 // accordingly. | 136 // accordingly. |
137 void SetObserver(Observer* observer) override; | 137 void SetObserver(Observer* observer) override; |
138 ContentSuggestionsCategoryStatus GetCategoryStatus( | 138 ContentSuggestionsCategoryStatus GetCategoryStatus( |
139 ContentSuggestionsCategory category) override; | 139 ContentSuggestionsCategory category) override; |
140 void DiscardSuggestion(const std::string& suggestion_id) override; | 140 void DismissSuggestion(const std::string& suggestion_id) override; |
141 void FetchSuggestionImage(const std::string& suggestion_id, | 141 void FetchSuggestionImage(const std::string& suggestion_id, |
142 const ImageFetchedCallback& callback) override; | 142 const ImageFetchedCallback& callback) override; |
143 void ClearCachedSuggestionsForDebugging() override; | 143 void ClearCachedSuggestionsForDebugging() override; |
144 void ClearDiscardedSuggestionsForDebugging() override; | 144 void ClearDismissedSuggestionsForDebugging() override; |
145 | 145 |
146 // Returns the lists of suggestion hosts the snippets are restricted to. | 146 // Returns the lists of suggestion hosts the snippets are restricted to. |
147 std::set<std::string> GetSuggestionsHosts() const; | 147 std::set<std::string> GetSuggestionsHosts() const; |
148 | 148 |
149 // Observer accessors. | 149 // Observer accessors. |
150 void AddObserver(NTPSnippetsServiceObserver* observer); | 150 void AddObserver(NTPSnippetsServiceObserver* observer); |
151 void RemoveObserver(NTPSnippetsServiceObserver* observer); | 151 void RemoveObserver(NTPSnippetsServiceObserver* observer); |
152 | 152 |
153 // Returns the maximum number of snippets that will be shown at once. | 153 // Returns the maximum number of snippets that will be shown at once. |
154 static int GetMaxSnippetCountForTesting(); | 154 static int GetMaxSnippetCountForTesting(); |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
209 | 209 |
210 // Callback for the NTPSnippetsFetcher. | 210 // Callback for the NTPSnippetsFetcher. |
211 void OnFetchFinished(NTPSnippetsFetcher::OptionalSnippets snippets); | 211 void OnFetchFinished(NTPSnippetsFetcher::OptionalSnippets snippets); |
212 | 212 |
213 // Merges newly available snippets with the previously available list. | 213 // Merges newly available snippets with the previously available list. |
214 void MergeSnippets(NTPSnippet::PtrVector new_snippets); | 214 void MergeSnippets(NTPSnippet::PtrVector new_snippets); |
215 | 215 |
216 std::set<std::string> GetSnippetHostsFromPrefs() const; | 216 std::set<std::string> GetSnippetHostsFromPrefs() const; |
217 void StoreSnippetHostsToPrefs(const std::set<std::string>& hosts); | 217 void StoreSnippetHostsToPrefs(const std::set<std::string>& hosts); |
218 | 218 |
219 // Removes the expired snippets (including discarded) from the service and the | 219 // Removes the expired snippets (including dismissed) from the service and the |
220 // database, and schedules another pass for the next expiration. | 220 // database, and schedules another pass for the next expiration. |
221 void ClearExpiredSnippets(); | 221 void ClearExpiredSnippets(); |
222 | 222 |
223 // Completes the initialization phase of the service, registering the last | 223 // Completes the initialization phase of the service, registering the last |
224 // observers. This is done after construction, once the database is loaded. | 224 // observers. This is done after construction, once the database is loaded. |
225 void FinishInitialization(); | 225 void FinishInitialization(); |
226 | 226 |
227 void OnSnippetImageFetchedFromDatabase(const std::string& snippet_id, | 227 void OnSnippetImageFetchedFromDatabase(const std::string& snippet_id, |
228 const ImageFetchedCallback& callback, | 228 const ImageFetchedCallback& callback, |
229 std::string data); | 229 std::string data); |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
265 void NotifyCategoryStatusChanged(); | 265 void NotifyCategoryStatusChanged(); |
266 | 266 |
267 State state_; | 267 State state_; |
268 | 268 |
269 ContentSuggestionsCategoryStatus category_status_; | 269 ContentSuggestionsCategoryStatus category_status_; |
270 | 270 |
271 PrefService* pref_service_; | 271 PrefService* pref_service_; |
272 | 272 |
273 suggestions::SuggestionsService* suggestions_service_; | 273 suggestions::SuggestionsService* suggestions_service_; |
274 | 274 |
275 // All current suggestions (i.e. not discarded ones). | 275 // All current suggestions (i.e. not dismissed ones). |
276 NTPSnippet::PtrVector snippets_; | 276 NTPSnippet::PtrVector snippets_; |
277 | 277 |
278 // Suggestions that the user discarded. We keep these around until they expire | 278 // Suggestions that the user dismissed. We keep these around until they expire |
279 // so we won't re-add them on the next fetch. | 279 // so we won't re-add them on the next fetch. |
280 NTPSnippet::PtrVector discarded_snippets_; | 280 NTPSnippet::PtrVector dismissed_snippets_; |
281 | 281 |
282 // The ISO 639-1 code of the language used by the application. | 282 // The ISO 639-1 code of the language used by the application. |
283 const std::string application_language_code_; | 283 const std::string application_language_code_; |
284 | 284 |
285 // The observers. | 285 // The observers. |
286 // TODO(pke): This is an old kind of observers that will be removed. | 286 // TODO(pke): This is an old kind of observers that will be removed. |
287 base::ObserverList<NTPSnippetsServiceObserver> observers_; | 287 base::ObserverList<NTPSnippetsServiceObserver> observers_; |
288 | 288 |
289 // The observer to deliver data to. | 289 // The observer to deliver data to. |
290 Observer* observer_; | 290 Observer* observer_; |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
336 // If the service might be enabled, DisabledReason::NONE will be provided. | 336 // If the service might be enabled, DisabledReason::NONE will be provided. |
337 virtual void NTPSnippetsServiceDisabledReasonChanged(DisabledReason) = 0; | 337 virtual void NTPSnippetsServiceDisabledReasonChanged(DisabledReason) = 0; |
338 | 338 |
339 protected: | 339 protected: |
340 virtual ~NTPSnippetsServiceObserver() {} | 340 virtual ~NTPSnippetsServiceObserver() {} |
341 }; | 341 }; |
342 | 342 |
343 } // namespace ntp_snippets | 343 } // namespace ntp_snippets |
344 | 344 |
345 #endif // COMPONENTS_NTP_SNIPPETS_NTP_SNIPPETS_SERVICE_H_ | 345 #endif // COMPONENTS_NTP_SNIPPETS_NTP_SNIPPETS_SERVICE_H_ |
OLD | NEW |