diff --git a/shell/browser/plugins/plugin_utils.cc b/shell/browser/plugins/plugin_utils.cc index 1da80c073de..9c220eb888b 100644 --- a/shell/browser/plugins/plugin_utils.cc +++ b/shell/browser/plugins/plugin_utils.cc @@ -33,30 +33,33 @@ std::string PluginUtils::GetExtensionIdForMimeType( base::flat_map PluginUtils::GetMimeTypeToExtensionIdMap( content::BrowserContext* browser_context) { - base::flat_map mime_type_to_extension_id_map; #if BUILDFLAG(ENABLE_ELECTRON_EXTENSIONS) - std::vector allowed_extension_ids = - MimeTypesHandler::GetMIMETypeAllowlist(); + const auto& allowed_extension_ids = MimeTypesHandler::GetMIMETypeAllowlist(); + if (allowed_extension_ids.empty()) + return {}; + + const extensions::ExtensionSet& enabled_extensions = + extensions::ExtensionRegistry::Get(browser_context)->enabled_extensions(); + + base::flat_map mime_type_to_extension_id_map; + // Go through the white-listed extensions and try to use them to intercept // the URL request. - for (const std::string& extension_id : allowed_extension_ids) { - const extensions::Extension* extension = - extensions::ExtensionRegistry::Get(browser_context) - ->enabled_extensions() - .GetByID(extension_id); - // The white-listed extension may not be installed, so we have to nullptr - // check |extension|. - if (!extension) { + for (const std::string& id : allowed_extension_ids) { + const extensions::Extension* extension = enabled_extensions.GetByID(id); + if (!extension) // extension might not be installed, so check for nullptr continue; - } - if (MimeTypesHandler* handler = MimeTypesHandler::GetHandler(extension)) { - for (const auto& supported_mime_type : handler->mime_type_set()) { - DCHECK(!mime_type_to_extension_id_map.contains(supported_mime_type)); - mime_type_to_extension_id_map[supported_mime_type] = extension_id; + if (const MimeTypesHandler* handler = + MimeTypesHandler::GetHandler(extension)) { + for (const std::string& mime_type : handler->mime_type_set()) { + const auto [_, inserted] = + mime_type_to_extension_id_map.insert_or_assign(mime_type, id); + DCHECK(inserted); } } } #endif + return mime_type_to_extension_id_map; }