Create content API for BrowserAccessibilityState
BUG=98716
TEST=none
TBR=sky
Review URL: http://codereview.chromium.org/9421030
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@122856 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/content/browser/accessibility/browser_accessibility_state_impl.cc b/content/browser/accessibility/browser_accessibility_state_impl.cc
new file mode 100644
index 0000000..08c0775
--- /dev/null
+++ b/content/browser/accessibility/browser_accessibility_state_impl.cc
@@ -0,0 +1,54 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "content/browser/accessibility/browser_accessibility_state_impl.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;
+
+// static
+BrowserAccessibilityState* BrowserAccessibilityState::GetInstance() {
+ return BrowserAccessibilityStateImpl::GetInstance();
+}
+
+// static
+BrowserAccessibilityStateImpl* BrowserAccessibilityStateImpl::GetInstance() {
+ return Singleton<BrowserAccessibilityStateImpl>::get();
+}
+
+BrowserAccessibilityStateImpl::BrowserAccessibilityStateImpl()
+ : BrowserAccessibilityState(),
+ accessibility_enabled_(false) {
+ update_histogram_timer_.Start(
+ FROM_HERE,
+ base::TimeDelta::FromSeconds(kAccessibilityHistogramDelaySecs),
+ this,
+ &BrowserAccessibilityStateImpl::UpdateHistogram);
+}
+
+BrowserAccessibilityStateImpl::~BrowserAccessibilityStateImpl() {
+}
+
+void BrowserAccessibilityStateImpl::OnScreenReaderDetected() {
+ accessibility_enabled_ = true;
+}
+
+void BrowserAccessibilityStateImpl::OnAccessibilityEnabledManually() {
+ // We may want to do something different with this later.
+ accessibility_enabled_ = true;
+}
+
+bool BrowserAccessibilityStateImpl::IsAccessibleBrowser() {
+ return accessibility_enabled_;
+}
+
+void BrowserAccessibilityStateImpl::UpdateHistogram() {
+ UMA_HISTOGRAM_ENUMERATION("Accessibility.State",
+ accessibility_enabled_ ? 1 : 0,
+ 2);
+}