// Copyright 2025 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef EXTENSIONS_BROWSER_ICON_UTIL_H_
#define EXTENSIONS_BROWSER_ICON_UTIL_H_

#include "base/values.h"
#include "extensions/common/constants.h"

class GURL;

namespace gfx {
class Image;
class ImageSkia;
}  // namespace gfx

namespace extensions {
enum class IconParseResult {
  kSuccess,
  kDecodeFailure,
  kUnpickleFailure,
};

// Tries to parse `*icon` from a dictionary {"19": imageData19, "38":
// imageData38}, and returns the result of the parsing attempt.
IconParseResult ParseIconFromCanvasDictionary(const base::DictValue& dict,
                                              gfx::ImageSkia* icon);

// Creates a placeholder icon image based on the extension's `name` and returns
// a base64 representation of it for the given `size`.
GURL GetPlaceholderIconUrl(extension_misc::ExtensionIcons icon_size,
                           const std::string& name);

// Returns an icon url from the given image.
GURL GetIconUrlFromImage(const gfx::Image& image);

}  // namespace extensions

#endif  // EXTENSIONS_BROWSER_ICON_UTIL_H_
