Chromium Code Reviews| Index: components/arc/user_data/arc_user_data_service.cc |
| diff --git a/components/arc/user_data/arc_user_data_service.cc b/components/arc/user_data/arc_user_data_service.cc |
| index 524c5023270d86b40bd04e02dd912b4ff9142c47..dfc465b9d6f26b7526eb78e6c189df4cc36cd30c 100644 |
| --- a/components/arc/user_data/arc_user_data_service.cc |
| +++ b/components/arc/user_data/arc_user_data_service.cc |
| @@ -10,7 +10,6 @@ |
| #include "chromeos/chromeos_switches.h" |
| #include "chromeos/cryptohome/cryptohome_parameters.h" |
| #include "chromeos/dbus/dbus_thread_manager.h" |
| -#include "chromeos/dbus/session_manager_client.h" |
| #include "components/prefs/pref_member.h" |
| #include "components/signin/core/account_id/account_id.h" |
| #include "components/user_manager/user_manager.h" |
| @@ -31,7 +30,7 @@ ArcUserDataService::ArcUserDataService( |
| arc_enabled_pref_->GetPrefName(), |
| base::Bind(&ArcUserDataService::OnOptInPreferenceChanged, |
| weak_ptr_factory_.GetWeakPtr())); |
| - ClearIfDisabled(); |
| + WipeIfRequired(); |
| } |
| ArcUserDataService::~ArcUserDataService() { |
| @@ -50,30 +49,38 @@ void ArcUserDataService::OnBridgeStopped(ArcBridgeService::StopReason reason) { |
| primary_user_account_id_ = EmptyAccountId(); |
| return; |
| } |
| - ClearIfDisabled(); |
| + WipeIfRequired(); |
| } |
| -void ArcUserDataService::ClearIfDisabled() { |
| +void ArcUserDataService::RequireUserDataWiped(const ArcDataCallback& callback) { |
| + VLOG(1) << "Require ARC user data to be wiped."; |
| + arc_user_data_wipe_required_ = true; |
| + callback_ = callback; |
| +} |
| + |
| +void ArcUserDataService::WipeIfRequired() { |
| DCHECK(thread_checker_.CalledOnValidThread()); |
| if (!arc_bridge_service()->stopped()) { |
| LOG(ERROR) << "ARC instance not stopped, user data can't be cleared"; |
|
Luis Héctor Chávez
2016/07/25 16:47:57
nit: s/cleared/wiped/
Polina Bondarenko
2016/07/25 17:19:44
Done.
|
| return; |
| } |
| - if ((arc_enabled_pref_->GetValue() && !arc_disabled_) || |
| + if ((arc_enabled_pref_->GetValue() && !arc_user_data_wipe_required_) || |
| base::CommandLine::ForCurrentProcess()->HasSwitch( |
| chromeos::switches::kDisableArcDataWipe)) { |
| return; |
| } |
| - arc_disabled_ = false; |
| + VLOG(1) << "Wipe ARC user data."; |
| + arc_user_data_wipe_required_ = false; |
| const cryptohome::Identification cryptohome_id(primary_user_account_id_); |
| chromeos::SessionManagerClient* session_manager_client = |
| chromeos::DBusThreadManager::Get()->GetSessionManagerClient(); |
| - session_manager_client->RemoveArcData(cryptohome_id); |
| + session_manager_client->RemoveArcData(cryptohome_id, callback_); |
| + callback_.Reset(); |
| } |
| void ArcUserDataService::OnOptInPreferenceChanged() { |
| if (!arc_enabled_pref_->GetValue()) |
| - arc_disabled_ = true; |
| + arc_user_data_wipe_required_ = true; |
| } |
| } // namespace arc |