Index: content/browser/accessibility/browser_accessibility_state_impl.cc |
diff --git a/content/browser/accessibility/browser_accessibility_state_impl.cc b/content/browser/accessibility/browser_accessibility_state_impl.cc |
index 4c50bb32dd2fa96194868c70b952b22f6f582039..ff2e5d19bdca2e77a0e0a3be0b608242f623e1a1 100644 |
--- a/content/browser/accessibility/browser_accessibility_state_impl.cc |
+++ b/content/browser/accessibility/browser_accessibility_state_impl.cc |
@@ -17,6 +17,21 @@ |
namespace content { |
+// IMPORTANT! |
+// These values are written to logs. Do not renumber or delete |
+// existing items; add new entries to the end of the list. |
+enum { |
+ UMA_AX_MODE_FLAG_NATIVE_APIS = 0, |
+ UMA_AX_MODE_FLAG_WEB_CONTENTS = 1, |
+ UMA_AX_MODE_FLAG_INLINE_TEXT_BOXES = 2, |
+ UMA_AX_MODE_FLAG_SCREEN_READER = 3, |
+ UMA_AX_MODE_FLAG_HTML = 4, |
+ |
+ // This must always be the last enum. It's okay for its value to |
+ // increase, but none of the other enum values may change. |
+ UMA_AX_MODE_FLAG_MAX |
+}; |
+ |
// Update the accessibility histogram 45 seconds after initialization. |
static const int kAccessibilityHistogramDelaySecs = 45; |
@@ -133,7 +148,38 @@ void BrowserAccessibilityStateImpl::AddAccessibilityModeFlags( |
return; |
} |
+ AccessibilityMode previous_mode = accessibility_mode_; |
accessibility_mode_ |= mode; |
+ if (accessibility_mode_ == previous_mode) |
+ return; |
+ |
+ AccessibilityMode new_mode_flags = accessibility_mode_ & (~previous_mode); |
+ if (new_mode_flags & ACCESSIBILITY_MODE_FLAG_NATIVE_APIS) { |
+ UMA_HISTOGRAM_ENUMERATION("Accessibility.ModeFlag", |
+ UMA_AX_MODE_FLAG_NATIVE_APIS, |
+ UMA_AX_MODE_FLAG_MAX); |
Ilya Sherman
2016/12/17 00:57:12
nit: Please factor out a function for recording to
dmazzoni
2016/12/19 22:51:50
Done.
|
+ } |
+ if (new_mode_flags & ACCESSIBILITY_MODE_FLAG_WEB_CONTENTS) { |
+ UMA_HISTOGRAM_ENUMERATION("Accessibility.ModeFlag", |
+ UMA_AX_MODE_FLAG_WEB_CONTENTS, |
+ UMA_AX_MODE_FLAG_MAX); |
+ } |
+ if (new_mode_flags & ACCESSIBILITY_MODE_FLAG_INLINE_TEXT_BOXES) { |
+ UMA_HISTOGRAM_ENUMERATION("Accessibility.ModeFlag", |
+ UMA_AX_MODE_FLAG_INLINE_TEXT_BOXES, |
+ UMA_AX_MODE_FLAG_MAX); |
+ } |
+ if (new_mode_flags & ACCESSIBILITY_MODE_FLAG_SCREEN_READER) { |
+ UMA_HISTOGRAM_ENUMERATION("Accessibility.ModeFlag", |
+ UMA_AX_MODE_FLAG_SCREEN_READER, |
+ UMA_AX_MODE_FLAG_MAX); |
+ } |
+ if (new_mode_flags & ACCESSIBILITY_MODE_FLAG_HTML) { |
+ UMA_HISTOGRAM_ENUMERATION("Accessibility.ModeFlag", |
+ UMA_AX_MODE_FLAG_HTML, |
+ UMA_AX_MODE_FLAG_MAX); |
+ } |
+ |
std::vector<WebContentsImpl*> web_contents_vector = |
WebContentsImpl::GetAllWebContents(); |
for (size_t i = 0; i < web_contents_vector.size(); ++i) |