summaryrefslogtreecommitdiffstats
path: root/components/content_settings
diff options
context:
space:
mode:
authorsashab <sashab@chromium.org>2014-12-10 21:02:21 -0800
committerCommit bot <commit-bot@chromium.org>2014-12-11 05:02:47 +0000
commitb18db482808479de6e3517e92ef87a3a73a74e79 (patch)
tree988907c06efb5fb5ef8043969c0ec75435223e2a /components/content_settings
parentae20f984468be55a6084ec835e35f94c23b21c70 (diff)
downloadchromium_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')
-rw-r--r--components/content_settings/core/common/content_settings.cc65
-rw-r--r--components/content_settings/core/common/content_settings.h6
-rw-r--r--components/content_settings/core/common/content_settings_types.h38
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_