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

Unified Diff: components/ntp_snippets/ntp_snippets_service.cc

Issue 2061803002: 📰 The Status card reports disabled sync states (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@simplifyBridge
Patch Set: fix compilation: origins 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
Index: components/ntp_snippets/ntp_snippets_service.cc
diff --git a/components/ntp_snippets/ntp_snippets_service.cc b/components/ntp_snippets/ntp_snippets_service.cc
index 040c1c82c926f186caa88dfb4c7ff668ed2a6d8f..454dd537aed56193e1e2dc9e027785b52e212868 100644
--- a/components/ntp_snippets/ntp_snippets_service.cc
+++ b/components/ntp_snippets/ntp_snippets_service.cc
@@ -26,6 +26,7 @@
#include "components/ntp_snippets/switches.h"
#include "components/prefs/pref_registry_simple.h"
#include "components/prefs/pref_service.h"
+#include "components/signin/core/browser/signin_manager.h"
#include "components/suggestions/proto/suggestions.pb.h"
#include "components/sync_driver/sync_service.h"
#include "components/variations/variations_associated_data.h"
@@ -180,6 +181,7 @@ void Compact(NTPSnippet::PtrVector* snippets) {
NTPSnippetsService::NTPSnippetsService(
bool enabled,
PrefService* pref_service,
+ SigninManagerBase* signin_manager,
sync_driver::SyncService* sync_service,
SuggestionsService* suggestions_service,
const std::string& application_language_code,
@@ -188,8 +190,10 @@ NTPSnippetsService::NTPSnippetsService(
std::unique_ptr<ImageFetcher> image_fetcher,
std::unique_ptr<NTPSnippetsDatabase> database)
: state_(State::NOT_INITED),
- explicitly_disabled_(!enabled),
+ disabled_reason_(enabled ? DisabledReason::NONE
+ : DisabledReason::EXPLICITLY_DISABLED),
pref_service_(pref_service),
+ signin_manager_(signin_manager),
sync_service_(sync_service),
sync_service_observer_(this),
suggestions_service_(suggestions_service),
@@ -202,7 +206,8 @@ NTPSnippetsService::NTPSnippetsService(
// TODO(dgn) should be removed after branch point (https:://crbug.com/617585).
ClearDeprecatedPrefs();
- if (explicitly_disabled_) {
+ if (disabled_reason_ == DisabledReason::EXPLICITLY_DISABLED) {
+ // Don't even bother loading the database.
EnterState(State::DISABLED);
return;
}
@@ -343,34 +348,6 @@ void NTPSnippetsService::RemoveObserver(NTPSnippetsServiceObserver* observer) {
observers_.RemoveObserver(observer);
}
-DisabledReason NTPSnippetsService::GetDisabledReason() const {
- if (explicitly_disabled_)
- return DisabledReason::EXPLICITLY_DISABLED;
-
- if (!sync_service_ || !sync_service_->CanSyncStart()) {
- DVLOG(1) << "[GetDisabledReason] Sync disabled";
- return DisabledReason::HISTORY_SYNC_DISABLED;
- }
-
- // !IsSyncActive in cases where CanSyncStart is true hints at the backend not
- // being initialized.
- // ConfigurationDone() verifies that the sync service has properly loaded its
- // configuration and is aware of the different data types to sync.
- if (!sync_service_->IsSyncActive() || !sync_service_->ConfigurationDone()) {
- DVLOG(1) << "[GetDisabledReason] Sync initialization is not complete.";
- return DisabledReason::HISTORY_SYNC_STATE_UNKNOWN;
- }
-
- if (!sync_service_->GetActiveDataTypes().Has(
- syncer::HISTORY_DELETE_DIRECTIVES)) {
- DVLOG(1) << "[GetDisabledReason] History sync disabled";
- return DisabledReason::HISTORY_SYNC_DISABLED;
- }
-
- DVLOG(1) << "[GetDisabledReason] Enabled";
- return DisabledReason::NONE;
-}
-
// static
int NTPSnippetsService::GetMaxSnippetCountForTesting() {
return kMaxSnippetCount;
@@ -624,8 +601,6 @@ void NTPSnippetsService::EnterStateDisabled() {
expiry_timer_.Stop();
RescheduleFetching();
- FOR_EACH_OBSERVER(NTPSnippetsServiceObserver, observers_,
- NTPSnippetsServiceDisabled());
}
void NTPSnippetsService::EnterStateShutdown() {
@@ -635,7 +610,8 @@ void NTPSnippetsService::EnterStateShutdown() {
expiry_timer_.Stop();
suggestions_service_subscription_.reset();
- if (sync_service_)
+ // When explicity disabled we don't register the observer.
+ if (sync_service_ && disabled_reason_ != DisabledReason::EXPLICITLY_DISABLED)
sync_service_observer_.Remove(sync_service_);
}
@@ -658,17 +634,62 @@ void NTPSnippetsService::FinishInitialization() {
FOR_EACH_OBSERVER(NTPSnippetsServiceObserver, observers_,
NTPSnippetsServiceLoaded());
+}
- // Start a fetch if we don't have any snippets yet, or a fetch was requested
- // earlier.
- if (ready() && (snippets_.empty() || fetch_after_load_)) {
- fetch_after_load_ = false;
- FetchSnippets();
+void NTPSnippetsService::UpdateDisabledReason() {
+ DisabledReason new_disabled_reason = GetNewDisabledReason();
+
+ if (new_disabled_reason == disabled_reason_)
+ return;
+
+ disabled_reason_ = new_disabled_reason;
+ FOR_EACH_OBSERVER(NTPSnippetsServiceObserver, observers_,
+ NTPSnippetsServiceDisabledReasonChanged(disabled_reason_));
+}
+
+DisabledReason NTPSnippetsService::GetNewDisabledReason() const {
+ if (disabled_reason_ == DisabledReason::EXPLICITLY_DISABLED) {
+ DVLOG(1) << "[GetNewDisabledReason] Explicitly disabled";
+ return DisabledReason::EXPLICITLY_DISABLED;
+ }
+
+ if (!signin_manager_ || !signin_manager_->IsAuthenticated()) {
+ DVLOG(1) << "[GetNewDisabledReason] Signed out";
+ return DisabledReason::SIGNED_OUT;
}
+
+ if (!sync_service_ || !sync_service_->CanSyncStart()) {
+ DVLOG(1) << "[GetNewDisabledReason] Sync disabled";
+ return DisabledReason::SYNC_DISABLED;
+ }
+
+ // !IsSyncActive in cases where CanSyncStart is true hints at the backend not
+ // being initialized.
+ // ConfigurationDone() verifies that the sync service has properly loaded its
+ // configuration and is aware of the different data types to sync.
+ if (!sync_service_->IsSyncActive() || !sync_service_->ConfigurationDone()) {
+ DVLOG(1) << "[GetNewDisabledReason] Sync initialization is not complete.";
+ return DisabledReason::HISTORY_SYNC_STATE_UNKNOWN;
+ }
+
+ if (sync_service_->IsEncryptEverythingEnabled()) {
+ DVLOG(1) << "[GetNewDisabledReason] Encryption is enabled";
+ return DisabledReason::PASSPHRASE_ENCRYPTION_ENABLED;
+ }
+
+ if (!sync_service_->GetActiveDataTypes().Has(
+ syncer::HISTORY_DELETE_DIRECTIVES)) {
+ DVLOG(1) << "[GetNewDisabledReason] History sync disabled";
+ return DisabledReason::HISTORY_SYNC_DISABLED;
+ }
+
+ DVLOG(1) << "[GetNewDisabledReason] Enabled";
+ return DisabledReason::NONE;
}
NTPSnippetsService::State NTPSnippetsService::GetStateForDependenciesStatus() {
- switch (GetDisabledReason()) {
+ UpdateDisabledReason();
+ switch (disabled_reason_) {
case DisabledReason::NONE:
return State::READY;
@@ -677,10 +698,13 @@ NTPSnippetsService::State NTPSnippetsService::GetStateForDependenciesStatus() {
// state is and we just return the current one. If things change,
// |OnStateChanged| will call this function again to update the state.
DVLOG(1) << "Sync configuration incomplete, continuing based on the "
- "current state.";
+ "current state.";
return state_;
case DisabledReason::EXPLICITLY_DISABLED:
+ case DisabledReason::SIGNED_OUT:
+ case DisabledReason::SYNC_DISABLED:
+ case DisabledReason::PASSPHRASE_ENCRYPTION_ENABLED:
case DisabledReason::HISTORY_SYNC_DISABLED:
return State::DISABLED;
}
@@ -703,9 +727,7 @@ void NTPSnippetsService::EnterState(State state) {
case State::READY: {
DCHECK(state_ == State::NOT_INITED || state_ == State::DISABLED);
- // If the service was previously disabled, we will need to start a fetch
- // because otherwise there won't be any.
- bool fetch_snippets = state_ == State::DISABLED || fetch_after_load_;
+ bool fetch_snippets = snippets_.empty() || fetch_after_load_;
DVLOG(1) << "Entering state: READY";
state_ = State::READY;
fetch_after_load_ = false;

Powered by Google App Engine
This is Rietveld 408576698