diff options
5 files changed, 46 insertions, 7 deletions
diff --git a/chrome/browser/accessibility/browser_accessibility_state_browsertest.cc b/chrome/browser/accessibility/browser_accessibility_state_browsertest.cc new file mode 100644 index 0000000..f23f218 --- /dev/null +++ b/chrome/browser/accessibility/browser_accessibility_state_browsertest.cc @@ -0,0 +1,30 @@ +// Copyright (c) 2013 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/public/browser/browser_accessibility_state.h" +#include "chrome/test/base/in_process_browser_test.h" +#include "chrome/test/base/uma_histogram_helper.h" + +namespace content { + +// Note: even though BrowserAccessibilityStateImpl is in content, this +// test should be in Chrome because otherwise the Chrome-OS-specific +// histograms won't get updated. +class BrowserAccessibilityStateImplTest : public InProcessBrowserTest { +}; + +IN_PROC_BROWSER_TEST_F(BrowserAccessibilityStateImplTest, TestHistograms) { + UMAHistogramHelper histograms; + + BrowserAccessibilityState::GetInstance()->UpdateHistogramsForTesting(); + histograms.Fetch(); + histograms.ExpectTotalCount("Accessibility.State", 1); +#if defined(OS_WIN) + histograms.ExpectTotalCount("Accessibility.WinScreenReader", 1); +#elif defined(OS_CHROMEOS) + histograms.ExpectTotalCount("Accessibility.CrosSpokenFeedback", 1); +#endif +} + +} // namespace content diff --git a/chrome/chrome_tests.gypi b/chrome/chrome_tests.gypi index 5073a8f..3624732 100644 --- a/chrome/chrome_tests.gypi +++ b/chrome/chrome_tests.gypi @@ -878,6 +878,7 @@ 'app/chrome_dll_resource.h', 'app/chrome_version.rc.version', 'browser/accessibility/accessibility_extension_apitest.cc', + 'browser/accessibility/browser_accessibility_state_browsertest.cc', 'browser/app_controller_mac_browsertest.mm', 'browser/autocomplete/autocomplete_browsertest.cc', 'browser/autofill/autofill_browsertest.cc', diff --git a/content/browser/accessibility/browser_accessibility_state_impl.cc b/content/browser/accessibility/browser_accessibility_state_impl.cc index 2f6e0c3..3cb73fe 100644 --- a/content/browser/accessibility/browser_accessibility_state_impl.cc +++ b/content/browser/accessibility/browser_accessibility_state_impl.cc @@ -50,12 +50,12 @@ BrowserAccessibilityStateImpl::BrowserAccessibilityStateImpl() } #if defined(OS_WIN) - // On Windows, UpdateHistogram calls some system functions with unknown + // On Windows, UpdateHistograms calls some system functions with unknown // runtime, so call it on the file thread to ensure there's no jank. // Everything in that method must be safe to call on another thread. BrowserThread::ID update_histogram_thread = BrowserThread::FILE; #else - // On all other platforms, UpdateHistogram should be called on the main + // On all other platforms, UpdateHistograms should be called on the main // thread. BrowserThread::ID update_histogram_thread = BrowserThread::UI; #endif @@ -65,7 +65,7 @@ BrowserAccessibilityStateImpl::BrowserAccessibilityStateImpl() AddRef(); BrowserThread::PostDelayedTask( update_histogram_thread, FROM_HERE, - base::Bind(&BrowserAccessibilityStateImpl::UpdateHistogram, this), + base::Bind(&BrowserAccessibilityStateImpl::UpdateHistograms, this), base::TimeDelta::FromSeconds(kAccessibilityHistogramDelaySecs)); } @@ -94,7 +94,11 @@ void BrowserAccessibilityStateImpl::AddHistogramCallback( histogram_callbacks_.push_back(callback); } -void BrowserAccessibilityStateImpl::UpdateHistogram() { +void BrowserAccessibilityStateImpl::UpdateHistogramsForTesting() { + UpdateHistograms(); +} + +void BrowserAccessibilityStateImpl::UpdateHistograms() { UpdatePlatformSpecificHistograms(); for (size_t i = 0; i < histogram_callbacks_.size(); ++i) diff --git a/content/browser/accessibility/browser_accessibility_state_impl.h b/content/browser/accessibility/browser_accessibility_state_impl.h index 40d99fd..46621ea 100644 --- a/content/browser/accessibility/browser_accessibility_state_impl.h +++ b/content/browser/accessibility/browser_accessibility_state_impl.h @@ -45,9 +45,7 @@ class CONTENT_EXPORT BrowserAccessibilityStateImpl virtual bool IsAccessibleBrowser() OVERRIDE; virtual void AddHistogramCallback(base::Closure callback) OVERRIDE; - // 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(); + virtual void UpdateHistogramsForTesting() OVERRIDE; AccessibilityMode GetAccessibilityMode(); void SetAccessibilityMode(AccessibilityMode mode); @@ -56,6 +54,10 @@ class CONTENT_EXPORT BrowserAccessibilityStateImpl friend class base::RefCountedThreadSafe<BrowserAccessibilityStateImpl>; friend struct DefaultSingletonTraits<BrowserAccessibilityStateImpl>; + // Called a short while after startup to allow time for the accessibility + // state to be determined. Updates histograms with the current state. + void UpdateHistograms(); + // Leaky singleton, destructor generally won't be called. virtual ~BrowserAccessibilityStateImpl(); diff --git a/content/public/browser/browser_accessibility_state.h b/content/public/browser/browser_accessibility_state.h index 4c89f5a..16cf706 100644 --- a/content/public/browser/browser_accessibility_state.h +++ b/content/public/browser/browser_accessibility_state.h @@ -34,6 +34,8 @@ class CONTENT_EXPORT BrowserAccessibilityState { // Use this to register a method to update additional accessibility // histograms. virtual void AddHistogramCallback(base::Closure callback) = 0; + + virtual void UpdateHistogramsForTesting() = 0; }; } // namespace content |