// Copyright 2012 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_PROFILES_PROFILE_ATTRIBUTES_STORAGE_OBSERVER_H_
#define CHROME_BROWSER_PROFILES_PROFILE_ATTRIBUTES_STORAGE_OBSERVER_H_

#include <string>

namespace base {
class FilePath;
}

// This class provides an Observer interface to watch for changes to the
// ProfileAttributesStorage.
class ProfileAttributesStorageObserver {
 public:
  ProfileAttributesStorageObserver(const ProfileAttributesStorageObserver&) =
      delete;
  ProfileAttributesStorageObserver& operator=(
      const ProfileAttributesStorageObserver&) = delete;
  virtual ~ProfileAttributesStorageObserver() = default;

  // Notifies observers that a new profile at `profile_path` was added to cache.
  // It is guaranteed to be the first observer method that can observe a new
  // profile being added to cache.
  virtual void OnProfileAdded(const base::FilePath& profile_path) {}
  // Notifies observers that a profile at `profile_path` is going to be removed
  // from cache soon.
  virtual void OnProfileWillBeRemoved(const base::FilePath& profile_path) {}
  // Notifies observers that a profile at `profile_path` was removed from cache.
  // It is guaranteed to be the first observer method that can observe the
  // profile being removed from cache.
  virtual void OnProfileWasRemoved(const base::FilePath& profile_path,
                                   const std::u16string& profile_name) {}
  virtual void OnProfileNameChanged(const base::FilePath& profile_path,
                                    const std::u16string& old_profile_name) {}
  virtual void OnProfileAuthInfoChanged(const base::FilePath& profile_path) {}
  virtual void OnProfileAvatarChanged(const base::FilePath& profile_path) {}
  virtual void OnProfileHighResAvatarLoaded(
      const base::FilePath& profile_path) {}
  virtual void OnProfileSigninRequiredChanged(
      const base::FilePath& profile_path) {}
  virtual void OnProfileSupervisedUserIdChanged(
      const base::FilePath& profile_path) {}
  virtual void OnProfileIsOmittedChanged(const base::FilePath& profile_path) {}
  virtual void OnProfileThemeColorsChanged(const base::FilePath& profile_path) {
  }
  virtual void OnProfileHostedDomainChanged(
      const base::FilePath& profile_path) {}
  virtual void OnProfileIsManagedChanged(const base::FilePath& profile_path) {}
  virtual void OnProfileUserManagementAcceptanceChanged(
      const base::FilePath& profile_path) {}
  virtual void OnProfileManagementEnrollmentTokenChanged(
      const base::FilePath& profile_path) {}
  virtual void OnProfileManagementIdChanged(
      const base::FilePath& profile_path) {}
  virtual void OnProfileIsGlicEligibleChanged(
      const base::FilePath& profile_path) {}
  virtual void OnProfileAiSubscriptionTierUpdated(
      const base::FilePath& profile_path,
      int tier) {}

 protected:
  ProfileAttributesStorageObserver() = default;
};

#endif  // CHROME_BROWSER_PROFILES_PROFILE_ATTRIBUTES_STORAGE_OBSERVER_H_
