blob: 623fd459f9051ae8f27761428c125e65c187fa8b [file] [log] [blame]
// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_MENU_ICON_LOADER_H_
#define CHROME_BROWSER_EXTENSIONS_EXTENSION_MENU_ICON_LOADER_H_
#include "chrome/browser/extensions/menu_icon_loader.h"
#include "chrome/browser/extensions/menu_manager.h"
#include "extensions/browser/extension_icon_manager.h"
namespace content {
class BrowserContext;
} // namespace content
namespace gfx {
class Image;
} // namespace gfx
namespace extensions {
class Extension;
// This is a wrapper class around `ExtensionIconManager` to be used for the
// Context Menus API.
class ExtensionMenuIconLoader : public MenuIconLoader {
public:
ExtensionMenuIconLoader();
ExtensionMenuIconLoader(const ExtensionMenuIconLoader&) = delete;
ExtensionMenuIconLoader& operator=(const ExtensionMenuIconLoader&) = delete;
~ExtensionMenuIconLoader() override;
// MenuIconLoader implementation
void LoadIcon(content::BrowserContext* context,
const Extension* extension,
const MenuItem::ExtensionKey& extension_key) override;
gfx::Image GetIcon(const MenuItem::ExtensionKey& extensions_key) override;
void RemoveIcon(const MenuItem::ExtensionKey& extensions_key) override;
private:
ExtensionIconManager icon_manager_;
};
} // namespace extensions
#endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_MENU_ICON_LOADER_H_