Index: chrome/browser/ui/content_settings/content_setting_image_model.cc |
diff --git a/chrome/browser/ui/content_settings/content_setting_image_model.cc b/chrome/browser/ui/content_settings/content_setting_image_model.cc |
index 1bef3be8a1f4d1faa43c6f0c1379345e4de734e6..9660d390c995a27edde09ffdf7c0dc94690ee09c 100644 |
--- a/chrome/browser/ui/content_settings/content_setting_image_model.cc |
+++ b/chrome/browser/ui/content_settings/content_setting_image_model.cc |
@@ -127,6 +127,24 @@ const ContentSettingsImageDetails kImageDetails[] = { |
IDS_BLOCKED_DOWNLOADS_EXPLANATION, IDS_ALLOWED_DOWNLOAD_TITLE}, |
}; |
+// The ordering of the models here influences the order in which icons are |
+// shown in the omnibox. |
+constexpr ContentSettingsType kContentTypeIconOrder[] = { |
+ CONTENT_SETTINGS_TYPE_COOKIES, |
+ CONTENT_SETTINGS_TYPE_IMAGES, |
+ CONTENT_SETTINGS_TYPE_JAVASCRIPT, |
+ CONTENT_SETTINGS_TYPE_PPAPI_BROKER, |
+ CONTENT_SETTINGS_TYPE_PLUGINS, |
+ CONTENT_SETTINGS_TYPE_POPUPS, |
+ CONTENT_SETTINGS_TYPE_GEOLOCATION, |
+ CONTENT_SETTINGS_TYPE_MIXEDSCRIPT, |
+ CONTENT_SETTINGS_TYPE_PROTOCOL_HANDLERS, |
+ CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC, // Note: also does camera. |
Peter Kasting
2017/02/13 23:10:50
Tiny nit: Since the actual icon this currently use
kylix_rd
2017/02/14 15:20:43
Done.
|
+ CONTENT_SETTINGS_TYPE_DECEPTIVE_CONTENT, |
+ CONTENT_SETTINGS_TYPE_AUTOMATIC_DOWNLOADS, |
+ CONTENT_SETTINGS_TYPE_MIDI_SYSEX, |
+}; |
+ |
const ContentSettingsImageDetails* GetImageDetails(ContentSettingsType type) { |
for (const ContentSettingsImageDetails& image_details : kImageDetails) { |
if (image_details.type == type) |
@@ -525,35 +543,47 @@ ContentSettingImageModel::ContentSettingImageModel() |
std::vector<std::unique_ptr<ContentSettingImageModel>> |
ContentSettingImageModel::GenerateContentSettingImageModels() { |
std::vector<std::unique_ptr<ContentSettingImageModel>> result; |
- |
- // The ordering of the models here influences the order in which icons are |
- // shown in the omnibox. |
- result.push_back(base::MakeUnique<ContentSettingBlockedImageModel>( |
- CONTENT_SETTINGS_TYPE_COOKIES)); |
- result.push_back(base::MakeUnique<ContentSettingBlockedImageModel>( |
- CONTENT_SETTINGS_TYPE_IMAGES)); |
- result.push_back(base::MakeUnique<ContentSettingBlockedImageModel>( |
- CONTENT_SETTINGS_TYPE_JAVASCRIPT)); |
- result.push_back(base::MakeUnique<ContentSettingBlockedImageModel>( |
- CONTENT_SETTINGS_TYPE_PPAPI_BROKER)); |
- result.push_back(base::MakeUnique<ContentSettingBlockedImageModel>( |
- CONTENT_SETTINGS_TYPE_PLUGINS)); |
- result.push_back(base::MakeUnique<ContentSettingBlockedImageModel>( |
- CONTENT_SETTINGS_TYPE_POPUPS)); |
- result.push_back(base::MakeUnique<ContentSettingGeolocationImageModel>()); |
- result.push_back(base::MakeUnique<ContentSettingBlockedImageModel>( |
- CONTENT_SETTINGS_TYPE_MIXEDSCRIPT)); |
- result.push_back(base::MakeUnique<ContentSettingRPHImageModel>()); |
- result.push_back(base::MakeUnique<ContentSettingMediaImageModel>()); |
- result.push_back( |
- base::MakeUnique<ContentSettingSubresourceFilterImageModel>()); |
- result.push_back(base::MakeUnique<ContentSettingBlockedImageModel>( |
- CONTENT_SETTINGS_TYPE_AUTOMATIC_DOWNLOADS)); |
- result.push_back(base::MakeUnique<ContentSettingMIDISysExImageModel>()); |
- |
+ std::unique_ptr<ContentSettingImageModel> model; |
+ |
+ for (auto icon : kContentTypeIconOrder) { |
+ switch (icon) { |
+ case CONTENT_SETTINGS_TYPE_GEOLOCATION: |
+ model = base::MakeUnique<ContentSettingGeolocationImageModel>(); |
+ break; |
+ case CONTENT_SETTINGS_TYPE_PROTOCOL_HANDLERS: |
+ model = base::MakeUnique<ContentSettingRPHImageModel>(); |
+ break; |
+ case CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC: |
+ model = base::MakeUnique<ContentSettingMediaImageModel>(); |
+ break; |
+ case CONTENT_SETTINGS_TYPE_DECEPTIVE_CONTENT: |
+ model = base::MakeUnique<ContentSettingSubresourceFilterImageModel>(); |
+ break; |
+ case CONTENT_SETTINGS_TYPE_MIDI_SYSEX: |
+ model = base::MakeUnique<ContentSettingMIDISysExImageModel>(); |
+ break; |
+ default: |
+ // All other content settings types use ContentSettingBlockedImageModel. |
+ model = base::MakeUnique<ContentSettingBlockedImageModel>(icon); |
+ break; |
+ } |
+ result.push_back(std::move(model)); |
+ } |
return result; |
} |
+// static |
+size_t ContentSettingImageModel::GetContentSettingImageModelIndexForTesting( |
+ ContentSettingsType content_type) { |
+ if (content_type == CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA) |
+ content_type = CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC; |
+ for (size_t i = 0; i < arraysize(kContentTypeIconOrder); ++i) |
Peter Kasting
2017/02/13 23:10:50
Nit: {} since body is more than one physical line
kylix_rd
2017/02/14 15:20:43
Done.
|
+ if (content_type == kContentTypeIconOrder[i]) |
+ return i; |
+ NOTREACHED(); |
+ return arraysize(kContentTypeIconOrder); |
+} |
+ |
#if defined(OS_MACOSX) |
bool ContentSettingImageModel::UpdateFromWebContentsAndCheckIfIconChanged( |
content::WebContents* web_contents) { |