Index: components/content_settings/core/common/content_settings.cc |
diff --git a/components/content_settings/core/common/content_settings.cc b/components/content_settings/core/common/content_settings.cc |
index ec1621532d923046acf5d916aaf72ed060168235..59fc9c660400857369878192dad2548d8b31ecc6 100644 |
--- a/components/content_settings/core/common/content_settings.cc |
+++ b/components/content_settings/core/common/content_settings.cc |
@@ -16,50 +16,46 @@ ContentSetting IntToContentSetting(int content_setting) { |
CONTENT_SETTING_DEFAULT : static_cast<ContentSetting>(content_setting); |
} |
-// WARNING: This array should not be reordered or removed as it is used for |
-// histogram values. If a ContentSettingsType value has been removed, the entry |
-// must be replaced by a placeholder. It should correspond directly to the |
-// ContentType enum in histograms.xml. |
+struct HistogramValue { |
+ ContentSettingsType type; |
+ int value; |
+}; |
+ |
+// WARNING: The value specified here for a type should match exactly the value |
+// specified in the ContentType enum in histograms.xml. Since these values are |
+// used for histograms, please do not reuse the same value for a different |
+// content setting. Always append to the end and increment. |
// TODO(raymes): We should use a sparse histogram here on the hash of the |
// content settings type name instead. |
-ContentSettingsType kHistogramOrder[] = { |
- CONTENT_SETTINGS_TYPE_COOKIES, |
- CONTENT_SETTINGS_TYPE_IMAGES, |
- CONTENT_SETTINGS_TYPE_JAVASCRIPT, |
- CONTENT_SETTINGS_TYPE_PLUGINS, |
- CONTENT_SETTINGS_TYPE_POPUPS, |
- CONTENT_SETTINGS_TYPE_GEOLOCATION, |
- CONTENT_SETTINGS_TYPE_NOTIFICATIONS, |
- CONTENT_SETTINGS_TYPE_AUTO_SELECT_CERTIFICATE, |
- CONTENT_SETTINGS_TYPE_DEFAULT, // FULLSCREEN (removed). |
- CONTENT_SETTINGS_TYPE_DEFAULT, // MOUSELOCK (removed). |
- CONTENT_SETTINGS_TYPE_MIXEDSCRIPT, |
- CONTENT_SETTINGS_TYPE_DEFAULT, // MEDIASTREAM (removed). |
- CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC, |
- CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA, |
- CONTENT_SETTINGS_TYPE_PROTOCOL_HANDLERS, |
- CONTENT_SETTINGS_TYPE_PPAPI_BROKER, |
- CONTENT_SETTINGS_TYPE_AUTOMATIC_DOWNLOADS, |
- CONTENT_SETTINGS_TYPE_MIDI_SYSEX, |
- CONTENT_SETTINGS_TYPE_DEFAULT, // PUSH_MESSAGING (removed). |
- CONTENT_SETTINGS_TYPE_SSL_CERT_DECISIONS, |
- CONTENT_SETTINGS_TYPE_DEFAULT, // METRO_SWITCH_TO_DESKTOP (removed). |
+HistogramValue kHistogramValue[] = { |
+ {CONTENT_SETTINGS_TYPE_COOKIES, 0}, |
+ {CONTENT_SETTINGS_TYPE_IMAGES, 1}, |
+ {CONTENT_SETTINGS_TYPE_JAVASCRIPT, 2}, |
+ {CONTENT_SETTINGS_TYPE_PLUGINS, 3}, |
+ {CONTENT_SETTINGS_TYPE_POPUPS, 4}, |
+ {CONTENT_SETTINGS_TYPE_GEOLOCATION, 5}, |
+ {CONTENT_SETTINGS_TYPE_NOTIFICATIONS, 6}, |
+ {CONTENT_SETTINGS_TYPE_AUTO_SELECT_CERTIFICATE, 7}, |
+ {CONTENT_SETTINGS_TYPE_MIXEDSCRIPT, 10}, |
+ {CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC, 12}, |
+ {CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA, 13}, |
+ {CONTENT_SETTINGS_TYPE_PROTOCOL_HANDLERS, 14}, |
+ {CONTENT_SETTINGS_TYPE_PPAPI_BROKER, 15}, |
+ {CONTENT_SETTINGS_TYPE_AUTOMATIC_DOWNLOADS, 16}, |
+ {CONTENT_SETTINGS_TYPE_MIDI_SYSEX, 17}, |
+ {CONTENT_SETTINGS_TYPE_SSL_CERT_DECISIONS, 19}, |
#if defined(OS_ANDROID) || defined(OS_CHROMEOS) |
- CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER, |
-#else |
- CONTENT_SETTINGS_TYPE_DEFAULT, // PROTECTED_MEDIA_IDENTIFIER (mobile only). |
+ {CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER, 21}, |
#endif |
- CONTENT_SETTINGS_TYPE_APP_BANNER, |
- CONTENT_SETTINGS_TYPE_SITE_ENGAGEMENT, |
- CONTENT_SETTINGS_TYPE_DURABLE_STORAGE, |
- CONTENT_SETTINGS_TYPE_DEFAULT, // KEYGEN (removed). |
- CONTENT_SETTINGS_TYPE_BLUETOOTH_GUARD, |
- CONTENT_SETTINGS_TYPE_BACKGROUND_SYNC, |
- CONTENT_SETTINGS_TYPE_AUTOPLAY, |
- CONTENT_SETTINGS_TYPE_DEFAULT, // PROMPT_NO_DECISION_COUNT (migrated). |
- CONTENT_SETTINGS_TYPE_IMPORTANT_SITE_INFO, |
- CONTENT_SETTINGS_TYPE_PERMISSION_AUTOBLOCKER_DATA, |
- CONTENT_SETTINGS_TYPE_SUBRESOURCE_FILTER, |
+ {CONTENT_SETTINGS_TYPE_APP_BANNER, 22}, |
+ {CONTENT_SETTINGS_TYPE_SITE_ENGAGEMENT, 23}, |
+ {CONTENT_SETTINGS_TYPE_DURABLE_STORAGE, 24}, |
+ {CONTENT_SETTINGS_TYPE_BLUETOOTH_GUARD, 26}, |
+ {CONTENT_SETTINGS_TYPE_BACKGROUND_SYNC, 27}, |
+ {CONTENT_SETTINGS_TYPE_AUTOPLAY, 28}, |
+ {CONTENT_SETTINGS_TYPE_IMPORTANT_SITE_INFO, 30}, |
+ {CONTENT_SETTINGS_TYPE_PERMISSION_AUTOBLOCKER_DATA, 31}, |
+ {CONTENT_SETTINGS_TYPE_SUBRESOURCE_FILTER, 32}, |
}; |
int ContentSettingTypeToHistogramValue(ContentSettingsType content_setting, |
@@ -68,14 +64,12 @@ int ContentSettingTypeToHistogramValue(ContentSettingsType content_setting, |
typedef base::hash_map<int, int> Map; |
CR_DEFINE_STATIC_LOCAL(Map, kMap, ()); |
if (kMap.empty()) { |
- for (size_t i = 0; i < arraysize(kHistogramOrder); ++i) { |
- if (kHistogramOrder[i] != CONTENT_SETTINGS_TYPE_DEFAULT) |
- kMap[kHistogramOrder[i]] = static_cast<int>(i); |
- } |
+ for (const HistogramValue& histogram_value : kHistogramValue) |
+ kMap[histogram_value.type] = histogram_value.value; |
} |
DCHECK(base::ContainsKey(kMap, content_setting)); |
- *num_values = arraysize(kHistogramOrder); |
+ *num_values = arraysize(kHistogramValue); |
return kMap[content_setting]; |
} |