summaryrefslogtreecommitdiffstats
path: root/content
diff options
context:
space:
mode:
authordmazzoni@chromium.org <dmazzoni@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-11-05 20:16:05 +0000
committerdmazzoni@chromium.org <dmazzoni@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-11-05 20:16:05 +0000
commit88c2505b58a8b80d35ea508474dcc5de43cacf34 (patch)
treee8146c373554114ce4ea5d9e9d8b1d126ccc8fd5 /content
parent8720d883bb35e1adec8baefca284f4ad406235d9 (diff)
downloadchromium_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')
-rw-r--r--content/browser/accessibility/browser_accessibility_state.cc27
-rw-r--r--content/browser/accessibility/browser_accessibility_state.h15
-rw-r--r--content/browser/renderer_host/render_widget_host.cc10
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()) {