Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(297)

Unified Diff: components/ntp_snippets/ntp_snippets_service.h

Issue 2061803002: 📰 The Status card reports disabled sync states (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@simplifyBridge
Patch Set: yolo: another big bag of changes Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « components/ntp_snippets/ntp_snippets_fetcher.h ('k') | components/ntp_snippets/ntp_snippets_service.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..faf064a98bb0f43e1ea08f1cdaa322648a8236a1 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,10 @@ 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();
+ // Triggers a state transition depending on the provided reason to be
+ // disabled (or lack thereof). This method is called when a change is detected
+ // by |snippets_status_service_|
+ void UpdateStateForStatus(DisabledReason disabled_reason);
// Verifies state transitions (see |State|'s documentation) and applies them.
// Does nothing if called with the current state.
@@ -266,21 +255,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 +294,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_;
@@ -329,11 +308,14 @@ class NTPSnippetsServiceObserver {
public:
// Sent every time the service loads a new set of data.
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() {}
« no previous file with comments | « components/ntp_snippets/ntp_snippets_fetcher.h ('k') | components/ntp_snippets/ntp_snippets_service.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698