diff options
author | dmazzoni@chromium.org <dmazzoni@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-11-05 20:16:05 +0000 |
---|---|---|
committer | dmazzoni@chromium.org <dmazzoni@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-11-05 20:16:05 +0000 |
commit | 88c2505b58a8b80d35ea508474dcc5de43cacf34 (patch) | |
tree | e8146c373554114ce4ea5d9e9d8b1d126ccc8fd5 /content | |
parent | 8720d883bb35e1adec8baefca284f4ad406235d9 (diff) | |
download | chromium_src-88c2505b58a8b80d35ea508474dcc5de43cacf34.zip chromium_src-88c2505b58a8b80d35ea508474dcc5de43cacf34.tar.gz chromium_src-88c2505b58a8b80d35ea508474dcc5de43cacf34.tar.bz2 |
Add a UMA histogram to count accessibility usage.
Deletes code that incorrectly used a stat counter instead of a histogram,
and adds a function that runs 10 seconds after the browser starts and
updates a UMA enum histogram with the status of whether accessibility is
enabled or not. Also makes it so that manually enabling accessibility
from the command-line triggers this as well - we may want to separate
this out later.
BUG=99504
TEST=none
Review URL: http://codereview.chromium.org/8479015
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@108797 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content')
3 files changed, 43 insertions, 9 deletions
diff --git a/content/browser/accessibility/browser_accessibility_state.cc b/content/browser/accessibility/browser_accessibility_state.cc index 45b3a3b..bb277b7 100644 --- a/content/browser/accessibility/browser_accessibility_state.cc +++ b/content/browser/accessibility/browser_accessibility_state.cc @@ -5,9 +5,19 @@ #include "content/browser/accessibility/browser_accessibility_state.h" #include "base/memory/singleton.h" +#include "base/metrics/histogram.h" +#include "base/timer.h" + +// Update the accessibility histogram 45 seconds after initialization. +static const int kAccessibilityHistogramDelaySecs = 45; BrowserAccessibilityState::BrowserAccessibilityState() - : screen_reader_active_(false) { + : accessibility_enabled_(false) { + update_histogram_timer_.Start( + FROM_HERE, + base::TimeDelta::FromSeconds(kAccessibilityHistogramDelaySecs), + this, + &BrowserAccessibilityState::UpdateHistogram); } BrowserAccessibilityState::~BrowserAccessibilityState() { @@ -19,9 +29,20 @@ BrowserAccessibilityState* BrowserAccessibilityState::GetInstance() { } void BrowserAccessibilityState::OnScreenReaderDetected() { - screen_reader_active_ = true; + accessibility_enabled_ = true; +} + +void BrowserAccessibilityState::OnAccessibilityEnabledManually() { + // We may want to do something different with this later. + accessibility_enabled_ = true; } bool BrowserAccessibilityState::IsAccessibleBrowser() { - return screen_reader_active_; + return accessibility_enabled_; +} + +void BrowserAccessibilityState::UpdateHistogram() { + UMA_HISTOGRAM_ENUMERATION("Accessibility.State", + accessibility_enabled_ ? 1 : 0, + 2); } diff --git a/content/browser/accessibility/browser_accessibility_state.h b/content/browser/accessibility/browser_accessibility_state.h index 62e19eb..c0e2048 100644 --- a/content/browser/accessibility/browser_accessibility_state.h +++ b/content/browser/accessibility/browser_accessibility_state.h @@ -7,6 +7,7 @@ #pragma once #include "base/basictypes.h" +#include "base/timer.h" #include "content/common/content_export.h" template <typename T> struct DefaultSingletonTraits; @@ -35,18 +36,28 @@ class CONTENT_EXPORT BrowserAccessibilityState { ~BrowserAccessibilityState(); + // Called when accessibility is enabled manually (via command-line flag). + void OnAccessibilityEnabledManually(); + // Called when screen reader client is detected. void OnScreenReaderDetected(); // Returns true if the browser should be customized for accessibility. bool IsAccessibleBrowser(); + // Called a short while after startup to allow time for the accessibility + // state to be determined. Updates a histogram with the current state. + void UpdateHistogram(); + private: BrowserAccessibilityState(); friend struct DefaultSingletonTraits<BrowserAccessibilityState>; - // Set to true when a screen reader client is detected. - bool screen_reader_active_; + // Set to true when full accessibility features should be enabled. + bool accessibility_enabled_; + + // Timer to update the histogram a short while after startup. + base::OneShotTimer<BrowserAccessibilityState> update_histogram_timer_; DISALLOW_COPY_AND_ASSIGN(BrowserAccessibilityState); }; diff --git a/content/browser/renderer_host/render_widget_host.cc b/content/browser/renderer_host/render_widget_host.cc index 4a64feb..bb1d5ba 100644 --- a/content/browser/renderer_host/render_widget_host.cc +++ b/content/browser/renderer_host/render_widget_host.cc @@ -10,7 +10,6 @@ #include "base/i18n/rtl.h" #include "base/message_loop.h" #include "base/metrics/histogram.h" -#include "base/metrics/stats_counters.h" #include "base/utf_string_conversions.h" #include "content/browser/accessibility/browser_accessibility_state.h" #include "content/browser/gpu/gpu_process_host.h" @@ -110,9 +109,13 @@ RenderWidgetHost::RenderWidgetHost(RenderProcessHost* process, // tell the process host that we're alive. process_->WidgetRestored(); + // Enable accessibility if it was manually specified or if it was + // auto-detected. if (CommandLine::ForCurrentProcess()->HasSwitch( - switches::kForceRendererAccessibility) || - BrowserAccessibilityState::GetInstance()->IsAccessibleBrowser()) { + switches::kForceRendererAccessibility)) { + BrowserAccessibilityState::GetInstance()->OnAccessibilityEnabledManually(); + EnableRendererAccessibility(); + } else if (BrowserAccessibilityState::GetInstance()->IsAccessibleBrowser()) { EnableRendererAccessibility(); } } @@ -1267,7 +1270,6 @@ void RenderWidgetHost::EnableRendererAccessibility() { return; } - SIMPLE_STATS_COUNTER("Accessibility.SessionCount"); renderer_accessible_ = true; if (process_->HasConnection()) { |