| 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
|
| index 5c279991b1ebb34975ac2d27fd65f4a6e0ad0f53..6adcd350e42a7999e8e1dc1f2c4a390f1b0ce1c0 100644
|
| --- a/components/ntp_snippets/ntp_snippets_status_service.cc
|
| +++ b/components/ntp_snippets/ntp_snippets_status_service.cc
|
| @@ -3,6 +3,10 @@
|
| // found in the LICENSE file.
|
|
|
| #include "components/ntp_snippets/ntp_snippets_status_service.h"
|
| +
|
| +#include "components/ntp_snippets/pref_names.h"
|
| +#include "components/prefs/pref_registry_simple.h"
|
| +#include "components/prefs/pref_service.h"
|
| #include "components/signin/core/browser/signin_manager.h"
|
| #include "components/sync_driver/sync_service.h"
|
|
|
| @@ -10,14 +14,22 @@ namespace ntp_snippets {
|
|
|
| NTPSnippetsStatusService::NTPSnippetsStatusService(
|
| SigninManagerBase* signin_manager,
|
| - sync_driver::SyncService* sync_service)
|
| + sync_driver::SyncService* sync_service,
|
| + PrefService* pref_service)
|
| : disabled_reason_(DisabledReason::EXPLICITLY_DISABLED),
|
| signin_manager_(signin_manager),
|
| sync_service_(sync_service),
|
| + pref_service_(pref_service),
|
| sync_service_observer_(this) {}
|
|
|
| NTPSnippetsStatusService::~NTPSnippetsStatusService() {}
|
|
|
| +// static
|
| +void NTPSnippetsStatusService::RegisterProfilePrefs(
|
| + PrefRegistrySimple* registry) {
|
| + registry->RegisterBooleanPref(prefs::kDisableSnippets, false);
|
| +}
|
| +
|
| void NTPSnippetsStatusService::Init(
|
| const DisabledReasonChangeCallback& callback) {
|
| DCHECK(disabled_reason_change_callback_.is_null());
|
| @@ -30,6 +42,12 @@ void NTPSnippetsStatusService::Init(
|
| disabled_reason_change_callback_.Run(disabled_reason_);
|
|
|
| sync_service_observer_.Add(sync_service_);
|
| +
|
| + pref_change_registrar_.Init(pref_service_);
|
| + pref_change_registrar_.Add(
|
| + prefs::kDisableSnippets,
|
| + base::Bind(&NTPSnippetsStatusService::OnStateChanged,
|
| + base::Unretained(this)));
|
| }
|
|
|
| void NTPSnippetsStatusService::OnStateChanged() {
|
| @@ -43,6 +61,11 @@ void NTPSnippetsStatusService::OnStateChanged() {
|
| }
|
|
|
| DisabledReason NTPSnippetsStatusService::GetDisabledReasonFromDeps() const {
|
| + if (pref_service_->GetBoolean(prefs::kDisableSnippets)) {
|
| + DVLOG(1) << "[GetNewDisabledReason] Disabled via pref";
|
| + return DisabledReason::EXPLICITLY_DISABLED;
|
| + }
|
| +
|
| if (!signin_manager_ || !signin_manager_->IsAuthenticated()) {
|
| DVLOG(1) << "[GetNewDisabledReason] Signed out";
|
| return DisabledReason::SIGNED_OUT;
|
|
|