#ifndef CHROMEOS_ASH_EXPERIENCES_ARC_SESSION_ARC_DATA_REMOVER_H_
#define CHROMEOS_ASH_EXPERIENCES_ARC_SESSION_ARC_DATA_REMOVER_H_
#include <optional>
#include "base/functional/callback.h"
#include "base/memory/weak_ptr.h"
#include "base/threading/thread_checker.h"
#include "chromeos/ash/components/cryptohome/cryptohome_parameters.h"
#include "components/prefs/pref_member.h"
class PrefService;
namespace arc {
class ArcDataRemover {
public:
ArcDataRemover(PrefService* prefs,
const cryptohome::Identification& cryptohome_id);
ArcDataRemover(const ArcDataRemover&) = delete;
ArcDataRemover& operator=(const ArcDataRemover&) = delete;
~ArcDataRemover();
void Schedule();
bool IsScheduledForTesting() const;
using RunCallback = base::OnceCallback<void(std::optional<bool> result)>;
void Run(RunCallback callback);
private:
void OnDataRemoved(RunCallback callback, bool success);
THREAD_CHECKER(thread_checker_);
BooleanPrefMember pref_;
const cryptohome::Identification cryptohome_id_;
base::WeakPtrFactory<ArcDataRemover> weak_factory_{this};
};
}
#endif