chromium/chrome/browser/ash/policy/skyvault/local_files_cleanup.h

// Copyright 2024 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef CHROME_BROWSER_ASH_POLICY_SKYVAULT_LOCAL_FILES_CLEANUP_H_
#define CHROME_BROWSER_ASH_POLICY_SKYVAULT_LOCAL_FILES_CLEANUP_H_

#include "base/memory/weak_ptr.h"
#include "chrome/browser/ash/policy/skyvault/local_user_files_policy_observer.h"
#include "chrome/browser/chromeos/extensions/login_screen/login/cleanup/files_cleanup_handler.h"

namespace policy::local_user_files {

// Kicks-off user files removal when LocalUserFilesEnabled is set to 'false'.
class LocalFilesCleanup : public LocalUserFilesPolicyObserver {
 public:
  LocalFilesCleanup();
  ~LocalFilesCleanup() override;

 private:
  // policy::local_user_files::Observer overrides:
  void OnLocalUserFilesPolicyChanged() override;

  // Callback called once cleanup is done.
  void CleanupDone(const std::optional<std::string>& error_message);

  chromeos::FilesCleanupHandler cleanup_handler_;

  // Tracks whether a cleanup is already in progress.
  bool in_progress_ = false;

  // Tracks number of requested cleanup during this user session.
  size_t cleanups_count_ = 0;

  base::WeakPtrFactory<LocalFilesCleanup> weak_factory_{this};
};

}  // namespace policy::local_user_files

#endif  // CHROME_BROWSER_ASH_POLICY_SKYVAULT_LOCAL_FILES_CLEANUP_H_