#ifndef ASH_ACCELERATORS_ACCELERATOR_PREFS_H_
#define ASH_ACCELERATORS_ACCELERATOR_PREFS_H_
#include "ash/accelerators/accelerator_prefs_delegate.h"
#include "ash/ash_export.h"
#include "ash/public/cpp/session/session_observer.h"
#include "base/observer_list.h"
#include "components/prefs/pref_change_registrar.h"
class PrefRegistrySimple;
class PrefService;
namespace ash {
class ASH_EXPORT AcceleratorPrefs : public SessionObserver {
public:
class Observer : public base::CheckedObserver {
public:
~Observer() override = default;
virtual void OnShortcutPolicyUpdated() = 0;
};
explicit AcceleratorPrefs(std::unique_ptr<AcceleratorPrefsDelegate> delegate);
AcceleratorPrefs(const AcceleratorPrefs&) = delete;
AcceleratorPrefs& operator=(const AcceleratorPrefs&) = delete;
~AcceleratorPrefs() override;
static void RegisterProfilePrefs(PrefRegistrySimple* registry);
void OnActiveUserPrefServiceChanged(PrefService* prefs) override;
void AddObserver(Observer* observer);
void RemoveObserver(Observer* observer);
void ObservePrefs(PrefService* prefs);
void OnCustomizationPolicyChanged();
bool IsCustomizationAllowed();
bool IsCustomizationAllowedByPolicy();
bool IsUserEnterpriseManaged();
private:
std::unique_ptr<AcceleratorPrefsDelegate> delegate_;
base::ObserverList<Observer> observers_;
std::unique_ptr<PrefChangeRegistrar> pref_change_registrar_;
};
}
#endif