#ifndef ASH_PUBLIC_CPP_GRADUATION_GRADUATION_MANAGER_H_
#define ASH_PUBLIC_CPP_GRADUATION_GRADUATION_MANAGER_H_
#include <string>
#include "ash/public/cpp/ash_public_export.h"
#include "base/observer_list_types.h"
namespace base {
class Clock;
class TickClock;
}
namespace content {
class BrowserContext;
class StoragePartition;
class StoragePartitionConfig;
}
namespace signin {
class IdentityManager;
}
namespace ash::graduation {
class ASH_PUBLIC_EXPORT GraduationManagerObserver
: public base::CheckedObserver {
public:
virtual void OnGraduationAppUpdate(bool enabled) = 0;
};
class ASH_PUBLIC_EXPORT GraduationManager {
public:
static GraduationManager* Get();
GraduationManager();
GraduationManager(const GraduationManager&) = delete;
GraduationManager& operator=(const GraduationManager&) = delete;
virtual ~GraduationManager();
virtual std::string GetLanguageCode() const = 0;
virtual signin::IdentityManager* GetIdentityManager(
content::BrowserContext* context) = 0;
virtual content::StoragePartition* GetStoragePartition(
content::BrowserContext* context,
const content::StoragePartitionConfig& storage_partition_config) = 0;
virtual void AddObserver(GraduationManagerObserver* observer) = 0;
virtual void RemoveObserver(GraduationManagerObserver* observer) = 0;
virtual void SetClocksForTesting(const base::Clock* clock,
const base::TickClock* tick_clock) = 0;
virtual void ResumeTimerForTesting() = 0;
};
}
#endif