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

Unified Diff: components/ntp_snippets/ntp_snippets_status_service.cc

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
Index: components/ntp_snippets/ntp_snippets_status_service.cc
diff --git a/components/ntp_snippets/ntp_snippets_status_service.cc b/components/ntp_snippets/ntp_snippets_status_service.cc
new file mode 100644
index 0000000000000000000000000000000000000000..5c279991b1ebb34975ac2d27fd65f4a6e0ad0f53
--- /dev/null
+++ b/components/ntp_snippets/ntp_snippets_status_service.cc
@@ -0,0 +1,80 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "components/ntp_snippets/ntp_snippets_status_service.h"
+#include "components/signin/core/browser/signin_manager.h"
+#include "components/sync_driver/sync_service.h"
+
+namespace ntp_snippets {
+
+NTPSnippetsStatusService::NTPSnippetsStatusService(
+ SigninManagerBase* signin_manager,
+ sync_driver::SyncService* sync_service)
+ : disabled_reason_(DisabledReason::EXPLICITLY_DISABLED),
+ signin_manager_(signin_manager),
+ sync_service_(sync_service),
+ sync_service_observer_(this) {}
+
+NTPSnippetsStatusService::~NTPSnippetsStatusService() {}
+
+void NTPSnippetsStatusService::Init(
+ const DisabledReasonChangeCallback& callback) {
+ DCHECK(disabled_reason_change_callback_.is_null());
+
+ disabled_reason_change_callback_ = callback;
+
+ // Notify about the current state before registering the observer, to make
+ // sure we don't get a double notification due to an undefined start state.
+ disabled_reason_ = GetDisabledReasonFromDeps();
+ disabled_reason_change_callback_.Run(disabled_reason_);
+
+ sync_service_observer_.Add(sync_service_);
+}
+
+void NTPSnippetsStatusService::OnStateChanged() {
+ DisabledReason new_disabled_reason = GetDisabledReasonFromDeps();
+
+ if (new_disabled_reason == disabled_reason_)
+ return;
+
+ disabled_reason_ = new_disabled_reason;
+ disabled_reason_change_callback_.Run(disabled_reason_);
+}
+
+DisabledReason NTPSnippetsStatusService::GetDisabledReasonFromDeps() const {
+ 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;
+}
+
+} // namespace ntp_snippets
« no previous file with comments | « components/ntp_snippets/ntp_snippets_status_service.h ('k') | components/ntp_snippets/ntp_snippets_status_service_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698