Chromium Code Reviews| Index: chrome/browser/supervised_user/child_accounts/child_account_service.cc |
| diff --git a/chrome/browser/supervised_user/child_accounts/child_account_service.cc b/chrome/browser/supervised_user/child_accounts/child_account_service.cc |
| index 25eb5ce9e906367e9d6c354caafe7c16257112d4..63c1f68e66f3d8c769de20177dcdc6cd01d3f735 100644 |
| --- a/chrome/browser/supervised_user/child_accounts/child_account_service.cc |
| +++ b/chrome/browser/supervised_user/child_accounts/child_account_service.cc |
| @@ -71,6 +71,7 @@ ChildAccountService::ChildAccountService(Profile* profile) |
| : profile_(profile), active_(false), |
| flag_fetch_backoff_(&kBackoffPolicy), |
| family_fetch_backoff_(&kBackoffPolicy), |
| + account_status_(UNKNOWN), |
| weak_ptr_factory_(this) {} |
| ChildAccountService::~ChildAccountService() {} |
| @@ -101,6 +102,10 @@ void ChildAccountService::Init() { |
| StartFetchingServiceFlags(); |
| } |
| +bool ChildAccountService::IsChildAccountStatusKnown() { |
| + return account_status_ != UNKNOWN; |
| +} |
| + |
| void ChildAccountService::Shutdown() { |
| family_fetcher_.reset(); |
| CancelFetchingServiceFlags(); |
| @@ -109,6 +114,16 @@ void ChildAccountService::Shutdown() { |
| SigninManagerFactory::GetForProfile(profile_)->RemoveObserver(this); |
| } |
| +void ChildAccountService::AddStatusObserver( |
| + ChildAccountStatusObserver* observer) { |
| + observer_list_.AddObserver(observer); |
| +} |
| + |
| +void ChildAccountService::RemoveStatusObserver( |
| + ChildAccountStatusObserver* observer) { |
| + observer_list_.RemoveObserver(observer); |
| +} |
| + |
| bool ChildAccountService::SetActive(bool active) { |
| if (!profile_->IsChild() && !active_) |
| return false; |
| @@ -301,6 +316,14 @@ void ChildAccountService::OnFlagsFetched( |
| bool is_child_account = |
| std::find(flags.begin(), flags.end(), |
| kIsChildAccountServiceFlagName) != flags.end(); |
| + |
| + ChildAccountStatus old_status = account_status_; |
| + account_status_ = is_child_account ? CHILD : NON_CHILD; |
|
Marc Treib
2015/03/04 16:31:48
"TODO(treib): Add a pref for this, so the info wil
merkulova
2015/03/04 19:06:49
Done.
|
| + if (old_status != account_status_) { |
| + FOR_EACH_OBSERVER(ChildAccountStatusObserver, observer_list_, |
| + OnChildAccountStatusChanged()); |
| + } |
| + |
| SetIsChildAccount(is_child_account); |
| ScheduleNextStatusFlagUpdate( |