diff options
author | sashab <sashab@chromium.org> | 2014-12-10 21:02:21 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-12-11 05:02:47 +0000 |
commit | b18db482808479de6e3517e92ef87a3a73a74e79 (patch) | |
tree | 988907c06efb5fb5ef8043969c0ec75435223e2a /components/content_settings | |
parent | ae20f984468be55a6084ec835e35f94c23b21c70 (diff) | |
download | chromium_src-b18db482808479de6e3517e92ef87a3a73a74e79.zip chromium_src-b18db482808479de6e3517e92ef87a3a73a74e79.tar.gz chromium_src-b18db482808479de6e3517e92ef87a3a73a74e79.tar.bz2 |
Add UMA stats to the Origin Info dialog on Android
Add UMA stats that count how many times permissions are changed from
the Origin Info dialog, including specifically when a permission is
set to 'Allowed' or 'Blocked'.
BUG=433776
Review URL: https://codereview.chromium.org/769763004
Cr-Commit-Position: refs/heads/master@{#307861}
Diffstat (limited to 'components/content_settings')
3 files changed, 109 insertions, 0 deletions
diff --git a/components/content_settings/core/common/content_settings.cc b/components/content_settings/core/common/content_settings.cc index 6bfbadb..f4d9a6d0 100644 --- a/components/content_settings/core/common/content_settings.cc +++ b/components/content_settings/core/common/content_settings.cc @@ -4,12 +4,77 @@ #include "components/content_settings/core/common/content_settings.h" +#include "base/logging.h" + ContentSetting IntToContentSetting(int content_setting) { return ((content_setting < 0) || (content_setting >= CONTENT_SETTING_NUM_SETTINGS)) ? CONTENT_SETTING_DEFAULT : static_cast<ContentSetting>(content_setting); } +ContentSettingsTypeHistogram ContentSettingTypeToHistogramValue( + ContentSettingsType content_setting) { + switch (content_setting) { + case CONTENT_SETTINGS_TYPE_DEFAULT: + return CONTENT_SETTINGS_TYPE_HISTOGRAM_INVALID; + case CONTENT_SETTINGS_TYPE_COOKIES: + return CONTENT_SETTINGS_TYPE_HISTOGRAM_COOKIES; + case CONTENT_SETTINGS_TYPE_IMAGES: + return CONTENT_SETTINGS_TYPE_HISTOGRAM_IMAGES; + case CONTENT_SETTINGS_TYPE_JAVASCRIPT: + return CONTENT_SETTINGS_TYPE_HISTOGRAM_JAVASCRIPT; + case CONTENT_SETTINGS_TYPE_PLUGINS: + return CONTENT_SETTINGS_TYPE_HISTOGRAM_PLUGINS; + case CONTENT_SETTINGS_TYPE_POPUPS: + return CONTENT_SETTINGS_TYPE_HISTOGRAM_POPUPS; + case CONTENT_SETTINGS_TYPE_GEOLOCATION: + return CONTENT_SETTINGS_TYPE_HISTOGRAM_GEOLOCATION; + case CONTENT_SETTINGS_TYPE_NOTIFICATIONS: + return CONTENT_SETTINGS_TYPE_HISTOGRAM_NOTIFICATIONS; + case CONTENT_SETTINGS_TYPE_AUTO_SELECT_CERTIFICATE: + return CONTENT_SETTINGS_TYPE_HISTOGRAM_AUTO_SELECT_CERTIFICATE; + case CONTENT_SETTINGS_TYPE_FULLSCREEN: + return CONTENT_SETTINGS_TYPE_HISTOGRAM_FULLSCREEN; + case CONTENT_SETTINGS_TYPE_MOUSELOCK: + return CONTENT_SETTINGS_TYPE_HISTOGRAM_MOUSELOCK; + case CONTENT_SETTINGS_TYPE_MIXEDSCRIPT: + return CONTENT_SETTINGS_TYPE_HISTOGRAM_MIXEDSCRIPT; + case CONTENT_SETTINGS_TYPE_MEDIASTREAM: + return CONTENT_SETTINGS_TYPE_HISTOGRAM_MEDIASTREAM; + case CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC: + return CONTENT_SETTINGS_TYPE_HISTOGRAM_MEDIASTREAM_MIC; + case CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA: + return CONTENT_SETTINGS_TYPE_HISTOGRAM_MEDIASTREAM_CAMERA; + case CONTENT_SETTINGS_TYPE_PROTOCOL_HANDLERS: + return CONTENT_SETTINGS_TYPE_HISTOGRAM_PROTOCOL_HANDLERS; + case CONTENT_SETTINGS_TYPE_PPAPI_BROKER: + return CONTENT_SETTINGS_TYPE_HISTOGRAM_PPAPI_BROKER; + case CONTENT_SETTINGS_TYPE_AUTOMATIC_DOWNLOADS: + return CONTENT_SETTINGS_TYPE_HISTOGRAM_AUTOMATIC_DOWNLOADS; + case CONTENT_SETTINGS_TYPE_MIDI_SYSEX: + return CONTENT_SETTINGS_TYPE_HISTOGRAM_MIDI_SYSEX; + case CONTENT_SETTINGS_TYPE_PUSH_MESSAGING: + return CONTENT_SETTINGS_TYPE_HISTOGRAM_PUSH_MESSAGING; + case CONTENT_SETTINGS_TYPE_SSL_CERT_DECISIONS: + return CONTENT_SETTINGS_TYPE_HISTOGRAM_SSL_CERT_DECISIONS; +#if defined(OS_WIN) + case CONTENT_SETTINGS_TYPE_METRO_SWITCH_TO_DESKTOP: + return CONTENT_SETTINGS_TYPE_HISTOGRAM_METRO_SWITCH_TO_DESKTOP; +#elif defined(OS_ANDROID) || defined(OS_CHROMEOS) + case CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER: + return CONTENT_SETTINGS_TYPE_HISTOGRAM_PROTECTED_MEDIA_IDENTIFIER; +#endif +#if defined(OS_ANDROID) + case CONTENT_SETTINGS_TYPE_APP_BANNER: + return CONTENT_SETTINGS_TYPE_HISTOGRAM_APP_BANNER; +#endif + case CONTENT_SETTINGS_NUM_TYPES: + return CONTENT_SETTINGS_TYPE_HISTOGRAM_INVALID; + } + NOTREACHED(); + return CONTENT_SETTINGS_TYPE_HISTOGRAM_INVALID; +} + ContentSettingPatternSource::ContentSettingPatternSource( const ContentSettingsPattern& primary_pattern, const ContentSettingsPattern& secondary_pattern, diff --git a/components/content_settings/core/common/content_settings.h b/components/content_settings/core/common/content_settings.h index 7c91b0c..0415fc6 100644 --- a/components/content_settings/core/common/content_settings.h +++ b/components/content_settings/core/common/content_settings.h @@ -9,6 +9,7 @@ #include <vector> #include "components/content_settings/core/common/content_settings_pattern.h" +#include "components/content_settings/core/common/content_settings_types.h" // Different settings that can be assigned for a particular content type. We // give the user the ability to set these on a global and per-origin basis. @@ -27,6 +28,11 @@ enum ContentSetting { // prefs off disk. ContentSetting IntToContentSetting(int content_setting); +// Converts a given content setting to its histogram value, for use when saving +// content settings types to a histogram. +ContentSettingsTypeHistogram ContentSettingTypeToHistogramValue( + ContentSettingsType content_setting); + struct ContentSettingPatternSource { ContentSettingPatternSource(const ContentSettingsPattern& primary_pattern, const ContentSettingsPattern& secondary_patttern, diff --git a/components/content_settings/core/common/content_settings_types.h b/components/content_settings/core/common/content_settings_types.h index 7e83d4f..0f138b4 100644 --- a/components/content_settings/core/common/content_settings_types.h +++ b/components/content_settings/core/common/content_settings_types.h @@ -9,6 +9,12 @@ // A particular type of content to care about. We give the user various types // of controls over each of these. +// When adding/removing values from this enum, be sure to update +// ContentSettingsTypeHistogram and ContentSettingTypeToHistogramValue in +// content_settings.cc as well. +// TODO(sashab): Remove the #ifdefs from this list, and generate a static list +// of valid content types at compile time, and use this in all callsites. Then +// use this enum for histogram values and remove ContentSettingsTypeHistogram. // A Java counterpart will be generated for this enum. // GENERATED_JAVA_ENUM_PACKAGE: org.chromium.chrome.browser enum ContentSettingsType { @@ -46,4 +52,36 @@ enum ContentSettingsType { CONTENT_SETTINGS_NUM_TYPES, }; +// There should be a corresponding enum value for each content settings type +// above, except that this list is OS-independent and has the same number of +// values on all platforms (and is hence safe to record in a histogram). +// Do not remove or reorder existing entries - they are used in histograms.xml. +enum ContentSettingsTypeHistogram { + CONTENT_SETTINGS_TYPE_HISTOGRAM_INVALID = -1, + CONTENT_SETTINGS_TYPE_HISTOGRAM_COOKIES = 0, + CONTENT_SETTINGS_TYPE_HISTOGRAM_IMAGES, + CONTENT_SETTINGS_TYPE_HISTOGRAM_JAVASCRIPT, + CONTENT_SETTINGS_TYPE_HISTOGRAM_PLUGINS, + CONTENT_SETTINGS_TYPE_HISTOGRAM_POPUPS, + CONTENT_SETTINGS_TYPE_HISTOGRAM_GEOLOCATION, + CONTENT_SETTINGS_TYPE_HISTOGRAM_NOTIFICATIONS, + CONTENT_SETTINGS_TYPE_HISTOGRAM_AUTO_SELECT_CERTIFICATE, + CONTENT_SETTINGS_TYPE_HISTOGRAM_FULLSCREEN, + CONTENT_SETTINGS_TYPE_HISTOGRAM_MOUSELOCK, + CONTENT_SETTINGS_TYPE_HISTOGRAM_MIXEDSCRIPT, + CONTENT_SETTINGS_TYPE_HISTOGRAM_MEDIASTREAM, + CONTENT_SETTINGS_TYPE_HISTOGRAM_MEDIASTREAM_MIC, + CONTENT_SETTINGS_TYPE_HISTOGRAM_MEDIASTREAM_CAMERA, + CONTENT_SETTINGS_TYPE_HISTOGRAM_PROTOCOL_HANDLERS, + CONTENT_SETTINGS_TYPE_HISTOGRAM_PPAPI_BROKER, + CONTENT_SETTINGS_TYPE_HISTOGRAM_AUTOMATIC_DOWNLOADS, + CONTENT_SETTINGS_TYPE_HISTOGRAM_MIDI_SYSEX, + CONTENT_SETTINGS_TYPE_HISTOGRAM_PUSH_MESSAGING, + CONTENT_SETTINGS_TYPE_HISTOGRAM_SSL_CERT_DECISIONS, + CONTENT_SETTINGS_TYPE_HISTOGRAM_METRO_SWITCH_TO_DESKTOP, + CONTENT_SETTINGS_TYPE_HISTOGRAM_PROTECTED_MEDIA_IDENTIFIER, + CONTENT_SETTINGS_TYPE_HISTOGRAM_APP_BANNER, + CONTENT_SETTINGS_HISTOGRAM_NUM_TYPES, +}; + #endif // COMPONENTS_CONTENT_SETTINGS_CORE_COMMON_CONTENT_SETTINGS_TYPES_H_ |