#ifndef COMPONENTS_APP_ICON_LOADER_APP_ICON_LOADER_H_
#define COMPONENTS_APP_ICON_LOADER_APP_ICON_LOADER_H_
#include <string>
#include "base/memory/raw_ptr.h"
#include "components/app_icon_loader/app_icon_loader_delegate.h"
class AppIconLoader {
public:
AppIconLoader(const AppIconLoader&) = delete;
AppIconLoader& operator=(const AppIconLoader&) = delete;
virtual ~AppIconLoader();
virtual bool CanLoadImageForApp(const std::string& app_id) = 0;
virtual void FetchImage(const std::string& app_id) = 0;
virtual void ClearImage(const std::string& app_id) = 0;
virtual void UpdateImage(const std::string& app_id) = 0;
protected:
AppIconLoader();
AppIconLoader(int icon_size_in_dip, AppIconLoaderDelegate* delegate);
int icon_size_in_dip() const { return icon_size_in_dip_; }
AppIconLoaderDelegate* delegate() { return delegate_; }
private:
const int icon_size_in_dip_ = 0;
const raw_ptr<AppIconLoaderDelegate> delegate_ = nullptr;
};
#endif