// Copyright 2012 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_UI_WEBUI_EXTENSIONS_EXTENSION_ICON_SOURCE_H_ #define CHROME_BROWSER_UI_WEBUI_EXTENSIONS_EXTENSION_ICON_SOURCE_H_ #include <map> #include <string> #include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/task/cancelable_task_tracker.h" #include "components/favicon/core/favicon_service.h" #include "content/public/browser/url_data_source.h" #include "extensions/common/extension_resource.h" #include "extensions/common/icons/extension_icon_set.h" class ExtensionIconSet; class Profile; class SkBitmap; namespace extensions { class Extension; // ExtensionIconSource serves extension icons through network level chrome: // requests. Icons can be retrieved for any installed extension or app. // // The format for requesting an icon is as follows: // chrome://extension-icon/<extension_id>/<icon_size>/<match_type>?[options] // // Parameters (<> required, [] optional): // <extension_id> = the id of the extension // <icon_size> = the size of the icon, as the integer value of the // corresponding Extension:Icons enum. // <match_type> = the fallback matching policy, as the integer value of // the corresponding ExtensionIconSet::Match enum. // [options] = Optional transformations to apply. Supported options: // grayscale=true to desaturate the image. // // Examples: // chrome-extension://gbmgkahjioeacddebbnengilkgbkhodg/32/1?grayscale=true // (ICON_SMALL, kBigger, grayscale) // chrome-extension://gbmgkahjioeacddebbnengilkgbkhodg/128/0 // (ICON_LARGE, kExactly) // // We attempt to load icons from the following sources in order: // 1) The icons as listed in the extension / app manifests. // 2) If a 16px icon was requested, the favicon for extension's launch URL. // 3) The default extension / application icon if there are still no matches. // class ExtensionIconSource : public content::URLDataSource { … }; } // namespace extensions #endif // CHROME_BROWSER_UI_WEBUI_EXTENSIONS_EXTENSION_ICON_SOURCE_H_