#include "chrome/browser/extensions/api/developer_private/extension_info_generator.h"
#include <iterator>
#include <memory>
#include <string>
#include <string_view>
#include <utility>
#include <vector>
#include "base/base64.h"
#include "base/functional/bind.h"
#include "base/location.h"
#include "base/metrics/histogram_functions.h"
#include "base/strings/utf_string_conversions.h"
#include "base/task/single_thread_task_runner.h"
#include "chrome/browser/extensions/api/developer_private/developer_private_api.h"
#include "chrome/browser/extensions/api/developer_private/inspectable_views_finder.h"
#include "chrome/browser/extensions/api/extension_action/extension_action_api.h"
#include "chrome/browser/extensions/commands/command_service.h"
#include "chrome/browser/extensions/error_console/error_console.h"
#include "chrome/browser/extensions/extension_allowlist.h"
#include "chrome/browser/extensions/extension_safety_check_utils.h"
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/extensions/extension_util.h"
#include "chrome/browser/extensions/manifest_v2_experiment_manager.h"
#include "chrome/browser/extensions/mv2_experiment_stage.h"
#include "chrome/browser/extensions/permissions/site_permissions_helper.h"
#include "chrome/browser/extensions/shared_module_service.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/supervised_user/supervised_user_browser_utils.h"
#include "chrome/browser/ui/toolbar/toolbar_actions_model.h"
#include "chrome/browser/ui/webui/extensions/extension_icon_source.h"
#include "chrome/common/chrome_features.h"
#include "chrome/common/extensions/manifest_handlers/app_launch_info.h"
#include "chrome/common/pref_names.h"
#include "chrome/grit/branded_strings.h"
#include "chrome/grit/generated_resources.h"
#include "components/supervised_user/core/browser/supervised_user_preferences.h"
#include "components/supervised_user/core/common/pref_names.h"
#include "content/public/browser/render_frame_host.h"
#include "extensions/browser/blocklist_extension_prefs.h"
#include "extensions/browser/blocklist_state.h"
#include "extensions/browser/extension_error.h"
#include "extensions/browser/extension_icon_placeholder.h"
#include "extensions/browser/extension_prefs.h"
#include "extensions/browser/extension_registry.h"
#include "extensions/browser/extension_system.h"
#include "extensions/browser/extension_util.h"
#include "extensions/browser/image_loader.h"
#include "extensions/browser/path_util.h"
#include "extensions/browser/ui_util.h"
#include "extensions/browser/warning_service.h"
#include "extensions/common/api/extension_action/action_info.h"
#include "extensions/common/command.h"
#include "extensions/common/extension_set.h"
#include "extensions/common/extension_urls.h"
#include "extensions/common/install_warning.h"
#include "extensions/common/manifest.h"
#include "extensions/common/manifest_handlers/background_info.h"
#include "extensions/common/manifest_handlers/icons_handler.h"
#include "extensions/common/manifest_handlers/offline_enabled_info.h"
#include "extensions/common/manifest_handlers/options_page_info.h"
#include "extensions/common/manifest_handlers/permissions_parser.h"
#include "extensions/common/manifest_url_handlers.h"
#include "extensions/common/permissions/permission_message_provider.h"
#include "extensions/common/permissions/permission_message_util.h"
#include "extensions/common/permissions/permissions_data.h"
#include "extensions/grit/extensions_browser_resources.h"
#include "third_party/skia/include/core/SkBitmap.h"
#include "ui/base/l10n/l10n_util.h"
#include "ui/base/resource/resource_bundle.h"
#include "ui/gfx/codec/png_codec.h"
#include "ui/gfx/color_utils.h"
#include "ui/gfx/image/image.h"
#include "ui/gfx/skbitmap_operations.h"
#if BUILDFLAG(ENABLE_SUPERVISED_USERS)
#include "components/supervised_user/core/browser/supervised_user_preferences.h"
#include "components/supervised_user/core/common/features.h"
#endif
namespace extensions {
developer;
namespace {
developer::ExtensionType GetExtensionType(Manifest::Type manifest_type) { … }
template <typename ErrorType>
void PopulateErrorBase(const ExtensionError& error, ErrorType* out) { … }
developer::ManifestError ConstructManifestError(const ManifestError& error) { … }
developer::RuntimeError ConstructRuntimeError(const RuntimeError& error) { … }
void ConstructCommands(CommandService* command_service,
const ExtensionId& extension_id,
std::vector<developer::Command>* commands) { … }
std::vector<developer::SiteControl> GetSpecificSiteControls(
const PermissionSet& granted_permissions,
const PermissionSet& withheld_permissions) { … }
developer::RuntimeHostPermissions CreateRuntimeHostPermissionsInfo(
content::BrowserContext* browser_context,
const Extension& extension) { … }
bool CanAccessSiteData(PermissionsManager* permissions_manager,
const Extension& extension) { … }
void AddPermissionsInfo(content::BrowserContext* browser_context,
const Extension& extension,
developer::Permissions* permissions) { … }
}
ExtensionInfoGenerator::ExtensionInfoGenerator(
content::BrowserContext* browser_context)
: … { … }
ExtensionInfoGenerator::~ExtensionInfoGenerator() { … }
void ExtensionInfoGenerator::CreateExtensionInfo(
const ExtensionId& id,
ExtensionInfosCallback callback) { … }
void ExtensionInfoGenerator::CreateExtensionsInfo(
bool include_disabled,
bool include_terminated,
ExtensionInfosCallback callback) { … }
std::vector<URLPattern> ExtensionInfoGenerator::GetDistinctHosts(
const URLPatternSet& patterns) { … }
void ExtensionInfoGenerator::CreateExtensionInfoHelper(
const Extension& extension,
developer::ExtensionState state) { … }
std::string ExtensionInfoGenerator::GetDefaultIconUrl(const std::string& name) { … }
std::string ExtensionInfoGenerator::GetIconUrlFromImage(
const gfx::Image& image) { … }
void ExtensionInfoGenerator::OnImageLoaded(
std::unique_ptr<developer::ExtensionInfo> info,
const gfx::Image& icon) { … }
}