#ifndef ASH_BIRCH_BIRCH_CORAL_ITEM_H_
#define ASH_BIRCH_BIRCH_CORAL_ITEM_H_
#include <string>
#include "ash/ash_export.h"
#include "ash/birch/birch_item.h"
#include "ash/birch/coral_constants.h"
#include "base/functional/callback_forward.h"
#include "base/json/json_writer.h"
#include "ui/base/models/image_model.h"
#include "url/gurl.h"
namespace ash {
class BirchChipButtonBase;
class ASH_EXPORT BirchCoralItem : public BirchItem {
public:
enum class ActionType {
kRestore,
kLaunchToNewDesk,
kSaveAsDeskTemplate,
kMaxValue = kSaveAsDeskTemplate,
};
BirchCoralItem(const std::u16string& coral_title,
const std::u16string& coral_text,
CoralSource source,
const base::Token& group_id);
BirchCoralItem(BirchCoralItem&&);
BirchCoralItem(const BirchCoralItem&);
BirchCoralItem& operator=(const BirchCoralItem&);
bool operator==(const BirchCoralItem& rhs) const;
~BirchCoralItem() override;
void LaunchGroup(BirchChipButtonBase* birch_chip_button);
const base::Token& group_id() const { return group_id_; }
BirchItemType GetType() const override;
std::string ToString() const override;
void PerformAction() override;
void LoadIcon(LoadIconCallback callback) const override;
BirchAddonType GetAddonType() const override;
std::u16string GetAddonAccessibleName() const override;
base::Value::Dict ToCoralItemDetails() const;
private:
void GetFaviconImageCoral(
const GURL& url,
base::OnceCallback<void(const ui::ImageModel&)> barrier_callback) const;
void GetAppIconCoral(
const std::string& app_id,
base::OnceCallback<void(const ui::ImageModel&)> barrier_callback) const;
CoralSource source_;
base::Token group_id_;
};
}
#endif