| 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 fad27ab7e665d649fbdd8dccb2234d728026a086..1ce509c5a38536fbea7282f2236805ec1eb94186 100644
|
| --- a/components/ntp_snippets/ntp_snippets_service.h
|
| +++ b/components/ntp_snippets/ntp_snippets_service.h
|
| @@ -26,6 +26,7 @@
|
|
|
| class PrefRegistrySimple;
|
| class PrefService;
|
| +class SigninManagerBase;
|
|
|
| namespace base {
|
| class Value;
|
| @@ -49,11 +50,19 @@ class SyncService;
|
|
|
| namespace ntp_snippets {
|
|
|
| -enum class DisabledReason {
|
| +// A Java counterpart will be generated for this enum.
|
| +// GENERATED_JAVA_ENUM_PACKAGE: org.chromium.chrome.browser.ntp.snippets
|
| +enum class DisabledReason : int {
|
| // Snippets are enabled
|
| NONE,
|
| // Snippets have been disabled as part of the service configuration.
|
| EXPLICITLY_DISABLED,
|
| + // The user is not signed in, and the service requires it to be enabled.
|
| + SIGNED_OUT,
|
| + // Sync is not enabled, and the service requires it to be enabled.
|
| + SYNC_DISABLED,
|
| + // The service requires passphrase encryption to be disabled.
|
| + PASSPHRASE_ENCRYPTION_ENABLED,
|
| // 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.
|
| @@ -76,6 +85,7 @@ class NTPSnippetsService : public KeyedService,
|
| // (British English person in the US) are not language codes.
|
| NTPSnippetsService(bool enabled,
|
| PrefService* pref_service,
|
| + SigninManagerBase* signin_manager,
|
| sync_driver::SyncService* sync_service,
|
| suggestions::SuggestionsService* suggestions_service,
|
| const std::string& application_language_code,
|
| @@ -120,6 +130,10 @@ 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 disabled_reason_; }
|
| +
|
| // (Re)schedules the periodic fetching of snippets. This is necessary because
|
| // the schedule depends on the time of day.
|
| void RescheduleFetching();
|
| @@ -147,10 +161,6 @@ 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();
|
|
|
| @@ -222,6 +232,14 @@ class NTPSnippetsService : public KeyedService,
|
|
|
| void LoadingSnippetsFinished();
|
|
|
| + // Updates |disabled_reason_| (see |GetNewDisabledReason()|) and notifies
|
| + // observers of changes if necessary.
|
| + void UpdateDisabledReason();
|
| +
|
| + // Utility method that looks at the state of the service and its dependencies
|
| + // to determine if and why it should be disabled.
|
| + DisabledReason GetNewDisabledReason() const;
|
| +
|
| // Returns whether the service should be enabled or disable depending on its
|
| // internal state and the state of its dependencies.
|
| State GetStateForDependenciesStatus();
|
| @@ -245,13 +263,12 @@ 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_;
|
| + DisabledReason disabled_reason_;
|
|
|
| PrefService* pref_service_;
|
|
|
| + SigninManagerBase* signin_manager_;
|
| +
|
| sync_driver::SyncService* sync_service_;
|
|
|
| // The observer for the SyncService. When the sync state changes,
|
| @@ -309,9 +326,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
|
| + // 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() {}
|
|
|