Commit a73dfdba authored by Stephen McGruer's avatar Stephen McGruer Committed by Commit Bot

[Accessibility] Add histograms for Android reduce-motion API

This histogram will be used to guide the implementation of the CSS
prefers-reduced-motion media feature. The primary goal is to compare
usage levels across platforms.

Bug: 722548
Change-Id: I9162d4e9df2e04afa0c8716266c2f0dc2c57b2ac
Reviewed-on: https://chromium-review.googlesource.com/c/1330827Reviewed-by: default avatarYaron Friedman <yfriedman@chromium.org>
Reviewed-by: default avatarDominic Mazzoni <dmazzoni@chromium.org>
Reviewed-by: default avatarIlya Sherman <isherman@chromium.org>
Commit-Queue: Stephen McGruer <smcgruer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#608052}
parent 8367c32c
......@@ -2177,6 +2177,7 @@ jumbo_source_set("browser") {
"accessibility/browser_accessibility_android.h",
"accessibility/browser_accessibility_manager_android.cc",
"accessibility/browser_accessibility_manager_android.h",
"accessibility/browser_accessibility_state_impl_android.cc",
"accessibility/captioning_controller.cc",
"accessibility/captioning_controller.h",
"accessibility/web_contents_accessibility_android.cc",
......
......@@ -71,7 +71,7 @@ BrowserAccessibilityStateImpl::BrowserAccessibilityStateImpl()
// Let each platform do its own initialization.
PlatformInitialize();
#if defined(OS_WIN)
#if defined(OS_WIN) || defined(OS_ANDROID)
// The delay is necessary because assistive technology sometimes isn't
// detected until after the user interacts in some way, so a reasonable delay
// gives us better numbers.
......@@ -80,8 +80,8 @@ BrowserAccessibilityStateImpl::BrowserAccessibilityStateImpl()
base::Bind(&BrowserAccessibilityStateImpl::UpdateHistograms, this),
base::TimeDelta::FromSeconds(ACCESSIBILITY_HISTOGRAM_DELAY_SECS));
#else
// On all other platforms, UpdateHistograms should be called on the UI
// thread because it needs to be able to access PrefService.
// On MacOS, UpdateHistograms should be called on the UI thread because it
// needs to be able to access PrefService.
base::PostDelayedTaskWithTraits(
FROM_HERE, {BrowserThread::UI},
base::BindOnce(&BrowserAccessibilityStateImpl::UpdateHistograms, this),
......@@ -170,7 +170,7 @@ ui::AXMode BrowserAccessibilityStateImpl::GetAccessibilityMode() const {
return accessibility_mode_;
}
#if !defined(OS_WIN) && !defined(OS_MACOSX)
#if !defined(OS_ANDROID) && !defined(OS_WIN) && !defined(OS_MACOSX)
void BrowserAccessibilityStateImpl::PlatformInitialize() {}
void BrowserAccessibilityStateImpl::UpdatePlatformSpecificHistograms() {
......
// Copyright 2018 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/android/jni_android.h"
#include "content/public/browser/browser_thread.h"
#include "jni/BrowserAccessibilityState_jni.h"
using base::android::AttachCurrentThread;
namespace content {
void BrowserAccessibilityStateImpl::PlatformInitialize() {}
void BrowserAccessibilityStateImpl::UpdatePlatformSpecificHistograms() {
// NOTE: this method is run from the file thread to reduce jank, since
// there's no guarantee these system calls will return quickly. Be careful
// not to add any code that isn't safe to run from a non-main thread!
DCHECK(!BrowserThread::CurrentlyOn(BrowserThread::UI));
JNIEnv* env = AttachCurrentThread();
Java_BrowserAccessibilityState_recordAccessibilityHistograms(env);
}
} // namespace content
......@@ -152,6 +152,7 @@ android_library("content_java") {
"java/src/org/chromium/content/browser/accessibility/LollipopWebContentsAccessibility.java",
"java/src/org/chromium/content/browser/accessibility/OWebContentsAccessibility.java",
"java/src/org/chromium/content/browser/accessibility/WebContentsAccessibilityImpl.java",
"java/src/org/chromium/content/browser/accessibility/BrowserAccessibilityState.java",
"java/src/org/chromium/content/browser/accessibility/captioning/CaptioningBridgeFactory.java",
"java/src/org/chromium/content/browser/accessibility/captioning/CaptioningChangeDelegate.java",
"java/src/org/chromium/content/browser/accessibility/captioning/CaptioningController.java",
......@@ -382,6 +383,7 @@ generate_jni("content_jni_headers") {
"java/src/org/chromium/content/browser/SpeechRecognitionImpl.java",
"java/src/org/chromium/content/browser/SyntheticGestureTarget.java",
"java/src/org/chromium/content/browser/TracingControllerAndroidImpl.java",
"java/src/org/chromium/content/browser/accessibility/BrowserAccessibilityState.java",
"java/src/org/chromium/content/browser/accessibility/WebContentsAccessibilityImpl.java",
"java/src/org/chromium/content/browser/accessibility/captioning/CaptioningController.java",
"java/src/org/chromium/content/browser/androidoverlay/AndroidOverlayProviderImpl.java",
......
// Copyright 2018 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.
package org.chromium.content.browser.accessibility;
import android.annotation.TargetApi;
import android.os.Build;
import android.provider.Settings;
import org.chromium.base.ContextUtils;
import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.JNINamespace;
import org.chromium.base.metrics.RecordHistogram;
/**
* Provides utility methods relating to measuring accessibility state on the current platform (i.e.
* Android in this case). See content::BrowserAccessibilityStateImpl.
*/
@JNINamespace("content")
public class BrowserAccessibilityState {
@CalledByNative
@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
private static void recordAccessibilityHistograms() {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR1) return;
float durationScale =
Settings.Global.getFloat(ContextUtils.getApplicationContext().getContentResolver(),
Settings.Global.ANIMATOR_DURATION_SCALE, 0);
RecordHistogram.recordBooleanHistogram(
"Accessibility.Android.AnimationsEnabled", durationScale != 0.0);
}
}
......@@ -25,6 +25,18 @@ uploading your change for review.
<histograms>
<histogram name="Accessibility.Android.AnimationsEnabled" enum="BooleanEnabled"
expires_after="2019-11-02">
<owner>dmazzoni@chromium.org</owner>
<owner>smcgruer@chromium.org</owner>
<summary>
Tracks whether animations are enabled on Android (e.g. if the animator
duration scale is non-zero.) The purpose is to inform the design of the
prefers-reduced-motion media feature; see http://crbug.com/722548. This is
checked once, 45 seconds after startup.
</summary>
</histogram>
<histogram name="Accessibility.Android.TabSwitcherPreferenceEnabled"
enum="BooleanEnabled">
<owner>twellington@chromium.org</owner>
......@@ -339,7 +351,8 @@ uploading your change for review.
</summary>
</histogram>
<histogram name="Accessibility.Mac.ReduceMotion" enum="BooleanEnabled">
<histogram name="Accessibility.Mac.ReduceMotion" enum="BooleanEnabled"
expires_after="2019-11-02">
<owner>dmazzoni@chromium.org</owner>
<owner>smcgruer@chromium.org</owner>
<summary>
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment