Chromium Code Reviews| 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) |