| // Copyright 2019 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "chrome/browser/ash/account_manager/child_account_type_changed_user_data.h" |
| |
| #include "chrome/browser/profiles/profile.h" |
| |
| namespace ash { |
| |
| namespace { |
| const void* const kChildAccountTypeChangedUserDataUserKey = |
| &kChildAccountTypeChangedUserDataUserKey; |
| } // namespace |
| |
| ChildAccountTypeChangedUserData::ChildAccountTypeChangedUserData() = default; |
| ChildAccountTypeChangedUserData::~ChildAccountTypeChangedUserData() = default; |
| |
| // static |
| ChildAccountTypeChangedUserData* ChildAccountTypeChangedUserData::GetForProfile( |
| Profile* profile) { |
| ChildAccountTypeChangedUserData* user_data = |
| static_cast<ChildAccountTypeChangedUserData*>( |
| profile->GetUserData(kChildAccountTypeChangedUserDataUserKey)); |
| |
| if (!user_data) { |
| profile->SetUserData(kChildAccountTypeChangedUserDataUserKey, |
| std::make_unique<ChildAccountTypeChangedUserData>()); |
| user_data = static_cast<ChildAccountTypeChangedUserData*>( |
| profile->GetUserData(kChildAccountTypeChangedUserDataUserKey)); |
| } |
| |
| return user_data; |
| } |
| |
| void ChildAccountTypeChangedUserData::SetValue(bool value) { |
| value_ = value; |
| callback_list_.Notify(value_); |
| } |
| |
| bool ChildAccountTypeChangedUserData::value() const { |
| return value_; |
| } |
| |
| base::CallbackListSubscription |
| ChildAccountTypeChangedUserData::RegisterCallback( |
| const base::RepeatingCallback<void(bool)>& cb) { |
| return callback_list_.Add(cb); |
| } |
| |
| } // namespace ash |