diff options
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()) { |