Chromium Code Reviews| Index: components/ntp_snippets/ntp_snippets_service.h |
| diff --git a/components/ntp_snippets/ntp_snippets_service.h b/components/ntp_snippets/ntp_snippets_service.h |
| index 57542c118dacd18af251ddc534d2f28aab0503fd..aa715372a7d111013f1dc3311948169adbdcf319 100644 |
| --- a/components/ntp_snippets/ntp_snippets_service.h |
| +++ b/components/ntp_snippets/ntp_snippets_service.h |
| @@ -15,18 +15,19 @@ |
| #include "base/gtest_prod_util.h" |
| #include "base/macros.h" |
| #include "base/observer_list.h" |
| -#include "base/scoped_observer.h" |
| #include "base/timer/timer.h" |
| #include "components/image_fetcher/image_fetcher_delegate.h" |
| #include "components/keyed_service/core/keyed_service.h" |
| #include "components/ntp_snippets/ntp_snippet.h" |
| #include "components/ntp_snippets/ntp_snippets_fetcher.h" |
| #include "components/ntp_snippets/ntp_snippets_scheduler.h" |
| +#include "components/ntp_snippets/ntp_snippets_status_service.h" |
| #include "components/suggestions/suggestions_service.h" |
| #include "components/sync_driver/sync_service_observer.h" |
| class PrefRegistrySimple; |
| class PrefService; |
| +class SigninManagerBase; |
| namespace base { |
| class RefCountedMemory; |
| @@ -52,23 +53,11 @@ class SyncService; |
| namespace ntp_snippets { |
| -enum class DisabledReason { |
| - // Snippets are enabled |
| - NONE, |
| - // Snippets have been disabled as part of the service configuration. |
| - EXPLICITLY_DISABLED, |
| - // History sync is not enabled, and the service requires it to be enabled. |
| - HISTORY_SYNC_DISABLED, |
| - // The sync service is not completely initialized, and the status is unknown. |
| - HISTORY_SYNC_STATE_UNKNOWN |
| -}; |
| - |
| class NTPSnippetsDatabase; |
| class NTPSnippetsServiceObserver; |
| // Stores and vends fresh content data for the NTP. |
| class NTPSnippetsService : public KeyedService, |
| - public sync_driver::SyncServiceObserver, |
| public image_fetcher::ImageFetcherDelegate { |
| public: |
| using ImageFetchedCallback = |
| @@ -80,14 +69,15 @@ class NTPSnippetsService : public KeyedService, |
| // (British English person in the US) are not language codes. |
| NTPSnippetsService(bool enabled, |
| PrefService* pref_service, |
| - sync_driver::SyncService* sync_service, |
| suggestions::SuggestionsService* suggestions_service, |
| const std::string& application_language_code, |
| NTPSnippetsScheduler* scheduler, |
| std::unique_ptr<NTPSnippetsFetcher> snippets_fetcher, |
| std::unique_ptr<image_fetcher::ImageFetcher> image_fetcher, |
| std::unique_ptr<image_fetcher::ImageDecoder> image_decoder, |
| - std::unique_ptr<NTPSnippetsDatabase> database); |
| + std::unique_ptr<NTPSnippetsDatabase> database, |
| + std::unique_ptr<NTPSnippetsStatusService> status_service); |
| + |
| ~NTPSnippetsService() override; |
| static void RegisterProfilePrefs(PrefRegistrySimple* registry); |
| @@ -125,6 +115,12 @@ class NTPSnippetsService : public KeyedService, |
| return snippets_fetcher_.get(); |
| } |
| + // Returns a reason why the service is disabled, or DisabledReason::NONE |
| + // if it's not. |
| + DisabledReason disabled_reason() const { |
| + return snippets_status_service_->disabled_reason(); |
| + } |
| + |
| // (Re)schedules the periodic fetching of snippets. This is necessary because |
| // the schedule depends on the time of day. |
| void RescheduleFetching(); |
| @@ -152,15 +148,10 @@ class NTPSnippetsService : public KeyedService, |
| void AddObserver(NTPSnippetsServiceObserver* observer); |
| void RemoveObserver(NTPSnippetsServiceObserver* observer); |
| - // Returns a reason why the service could be disabled, or DisabledReason::NONE |
| - // if it's not. |
| - DisabledReason GetDisabledReason() const; |
| - |
| // Returns the maximum number of snippets that will be shown at once. |
| static int GetMaxSnippetCountForTesting(); |
| private: |
| - FRIEND_TEST_ALL_PREFIXES(NTPSnippetsServiceTest, SyncStateCompatibility); |
| FRIEND_TEST_ALL_PREFIXES(NTPSnippetsServiceTest, HistorySyncStateChanges); |
| // Possible state transitions: |
| @@ -199,9 +190,6 @@ class NTPSnippetsService : public KeyedService, |
| SHUT_DOWN |
| }; |
| - // sync_driver::SyncServiceObserver implementation. |
| - void OnStateChanged() override; |
| - |
| // image_fetcher::ImageFetcherDelegate implementation. |
| void OnImageDataFetched(const std::string& snippet_id, |
| const std::string& image_data) override; |
| @@ -243,9 +231,7 @@ class NTPSnippetsService : public KeyedService, |
| void FetchSnippetImageFromNetwork(const std::string& snippet_id, |
| const ImageFetchedCallback& callback); |
| - // Returns whether the service should be enabled or disable depending on its |
| - // internal state and the state of its dependencies. |
| - State GetStateForDependenciesStatus(); |
| + void UpdateStateForStatus(DisabledReason disabled_reason); |
|
noyau (Ping after 24h)
2016/06/28 13:20:25
Needs a comment.
dgn
2016/06/28 16:38:57
Done.
|
| // Verifies state transitions (see |State|'s documentation) and applies them. |
| // Does nothing if called with the current state. |
| @@ -266,21 +252,8 @@ class NTPSnippetsService : public KeyedService, |
| State state_; |
| - // The service was set up to be disabled and should not be enabled by any |
| - // state change. We track this to make sure we clear scheduled tasks, which |
| - // persist even when Chrome is stopped. |
| - bool explicitly_disabled_; |
| - |
| PrefService* pref_service_; |
| - sync_driver::SyncService* sync_service_; |
| - |
| - // The observer for the SyncService. When the sync state changes, |
| - // SyncService will call |OnStateChanged|, which is propagated to the |
| - // snippet observers. |
| - ScopedObserver<sync_driver::SyncService, sync_driver::SyncServiceObserver> |
| - sync_service_observer_; |
| - |
| suggestions::SuggestionsService* suggestions_service_; |
| // All current suggestions (i.e. not discarded ones). |
| @@ -318,6 +291,9 @@ class NTPSnippetsService : public KeyedService, |
| // The database for persisting snippets. |
| std::unique_ptr<NTPSnippetsDatabase> database_; |
| + // The service that provides events and data about the signin and sync state. |
| + std::unique_ptr<NTPSnippetsStatusService> snippets_status_service_; |
| + |
| // Set to true if FetchSnippets is called before the database has been loaded. |
| // The fetch will be executed after the database load finishes. |
| bool fetch_after_load_; |
| @@ -331,9 +307,10 @@ class NTPSnippetsServiceObserver { |
| virtual void NTPSnippetsServiceLoaded() = 0; |
| // Sent when the service is shutting down. |
| virtual void NTPSnippetsServiceShutdown() = 0; |
| - // Sent when the service has been disabled. Can be from explicit user action |
| - // or because a requirement (e.g. History Sync) is not fulfilled anymore. |
| - virtual void NTPSnippetsServiceDisabled() = 0; |
| + // Sent when the state of the service is changing. Something changed in its |
|
Bernhard Bauer
2016/06/28 13:47:39
Can you add empty lines before the comments? It ge
dgn
2016/06/28 16:38:57
Done.
|
| + // dependencies so it's notifying observers about incoming data changes. |
| + // If the service might be enabled, DisabledReason::NONE will be provided. |
| + virtual void NTPSnippetsServiceDisabledReasonChanged(DisabledReason) = 0; |
| protected: |
| virtual ~NTPSnippetsServiceObserver() {} |