#ifndef EXTENSIONS_COMMON_ICONS_EXTENSION_ICON_VARIANTS_H_
#define EXTENSIONS_COMMON_ICONS_EXTENSION_ICON_VARIANTS_H_
#include <string>
#include <vector>
#include "base/values.h"
#include "extensions/buildflags/buildflags.h"
#include "extensions/common/icons/extension_icon_set.h"
#include "extensions/common/icons/extension_icon_variant.h"
#include "extensions/common/icons/extension_icon_variants_diagnostics.h"
static_assert(BUILDFLAG(ENABLE_EXTENSIONS_CORE));
namespace extensions {
class Extension;
class ExtensionIconVariants {
public:
ExtensionIconVariants();
~ExtensionIconVariants();
ExtensionIconVariants(ExtensionIconVariants&& other);
ExtensionIconVariants(const ExtensionIconVariants& other);
ExtensionIconVariants& operator=(ExtensionIconVariants&& other) = default;
ExtensionIconVariants& operator=(const ExtensionIconVariants& other) = delete;
void Parse(const Extension& extension, const base::Value::List* list);
bool IsEmpty() const;
void Add(std::unique_ptr<ExtensionIconVariant> icon_variant);
std::vector<diagnostics::icon_variants::Diagnostic>& get_diagnostics() {
return diagnostics_;
}
const std::vector<ExtensionIconVariant>& GetList() const { return list_; }
void AddDiagnostic(diagnostics::icon_variants::Feature feature,
diagnostics::icon_variants::Id id);
private:
std::vector<ExtensionIconVariant> list_;
std::vector<diagnostics::icon_variants::Diagnostic> diagnostics_;
};
}
#endif