#ifndef CHROME_BROWSER_ASH_ARC_ICON_DECODE_REQUEST_H_
#define CHROME_BROWSER_ASH_ARC_ICON_DECODE_REQUEST_H_
#include <vector>
#include "base/functional/callback.h"
#include "base/memory/weak_ptr.h"
class SkBitmap;
namespace gfx {
class ImageSkia;
}
namespace arc {
enum class ArcAppShortcutStatus {
kEmpty = 0,
kNotEmpty = 1,
kMaxValue = kNotEmpty
};
class IconDecodeRequest {
public:
using SetIconCallback = base::OnceCallback<void(const gfx::ImageSkia& icon)>;
explicit IconDecodeRequest(int dimension_dip);
IconDecodeRequest(const IconDecodeRequest&) = delete;
IconDecodeRequest& operator=(const IconDecodeRequest&) = delete;
~IconDecodeRequest();
static void DisableSafeDecodingForTesting();
void Start(const std::vector<uint8_t>& image_data,
SetIconCallback set_icon_callback);
private:
void OnImageDecoded(SetIconCallback callback, const SkBitmap& bitmap);
const int dimension_dip_;
base::WeakPtrFactory<IconDecodeRequest> weak_ptr_factory_{this};
};
}
#endif