Commit 7f006205 authored by Dominic Mazzoni's avatar Dominic Mazzoni Committed by Commit Bot

Collect metrics for some native accessibility actions

Currently on platforms with native accessibility
(Windows, Mac, Linux, Android) we have some stats on
accessibility being enabled, but this overcounts
users who actually need accessibility, because there
are other tools that use accessibility APIs (automation,
SSO, form fillers, touch screen tools, etc.).

Let's keep track of some actions that are more likely
to be associated with a user actively using assistive
technology, rather than some software passively
monitoring what's going on. I picked four actions that
might help us distinguish between different usage
patterns: DoDefault (click), Focus, ScrollToMakeVisible,
and HitTest.

Users with assistive technology would call most of these
APIs a lot. On the other hand, form-fillers would call them
rarely, and touch screen tools might only call HitTest a lot
and the others rarely.

Bug: None

Change-Id: I763ada82cebce6cdd15e322efdac2a530a5a64fe
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1782518Reviewed-by: default avatarIlya Sherman <isherman@chromium.org>
Commit-Queue: Dominic Mazzoni <dmazzoni@chromium.org>
Cr-Commit-Position: refs/heads/master@{#696914}
parent da56583d
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
#include "base/debug/crash_logging.h" #include "base/debug/crash_logging.h"
#include "base/logging.h" #include "base/logging.h"
#include "base/metrics/user_metrics.h"
#include "base/no_destructor.h" #include "base/no_destructor.h"
#include "build/build_config.h" #include "build/build_config.h"
#include "content/browser/accessibility/browser_accessibility.h" #include "content/browser/accessibility/browser_accessibility.h"
...@@ -634,6 +635,9 @@ void BrowserAccessibilityManager::SetFocus(const BrowserAccessibility& node) { ...@@ -634,6 +635,9 @@ void BrowserAccessibilityManager::SetFocus(const BrowserAccessibility& node) {
if (!delegate_) if (!delegate_)
return; return;
base::RecordAction(
base::UserMetricsAction("Accessibility.NativeApi.SetFocus"));
ui::AXActionData action_data; ui::AXActionData action_data;
action_data.action = ax::mojom::Action::kFocus; action_data.action = ax::mojom::Action::kFocus;
action_data.target_node_id = node.GetId(); action_data.target_node_id = node.GetId();
...@@ -690,6 +694,9 @@ void BrowserAccessibilityManager::DoDefaultAction( ...@@ -690,6 +694,9 @@ void BrowserAccessibilityManager::DoDefaultAction(
if (!delegate_) if (!delegate_)
return; return;
base::RecordAction(
base::UserMetricsAction("Accessibility.NativeApi.DoDefault"));
ui::AXActionData action_data; ui::AXActionData action_data;
action_data.action = ax::mojom::Action::kDoDefault; action_data.action = ax::mojom::Action::kDoDefault;
action_data.target_node_id = node.GetId(); action_data.target_node_id = node.GetId();
...@@ -746,6 +753,9 @@ void BrowserAccessibilityManager::ScrollToMakeVisible( ...@@ -746,6 +753,9 @@ void BrowserAccessibilityManager::ScrollToMakeVisible(
if (!delegate_) if (!delegate_)
return; return;
base::RecordAction(
base::UserMetricsAction("Accessibility.NativeApi.ScrollToMakeVisible"));
ui::AXActionData action_data; ui::AXActionData action_data;
action_data.target_node_id = node.GetId(); action_data.target_node_id = node.GetId();
action_data.action = ax::mojom::Action::kScrollToMakeVisible; action_data.action = ax::mojom::Action::kScrollToMakeVisible;
...@@ -851,6 +861,9 @@ void BrowserAccessibilityManager::HitTest(const gfx::Point& point) { ...@@ -851,6 +861,9 @@ void BrowserAccessibilityManager::HitTest(const gfx::Point& point) {
if (!delegate_) if (!delegate_)
return; return;
base::RecordAction(
base::UserMetricsAction("Accessibility.NativeApi.HitTest"));
ui::AXActionData action_data; ui::AXActionData action_data;
action_data.action = ax::mojom::Action::kHitTest; action_data.action = ax::mojom::Action::kHitTest;
action_data.target_point = point; action_data.target_point = point;
......
...@@ -1363,6 +1363,42 @@ should be able to be added at any place in this file. ...@@ -1363,6 +1363,42 @@ should be able to be added at any place in this file.
<description>A Chrome OS user manually starts Select To Speak.</description> <description>A Chrome OS user manually starts Select To Speak.</description>
</action> </action>
<action name="Accessibility.NativeApi.DoDefault">
<owner>aleventhal@chromium.org</owner>
<owner>dmazzoni@chromium.org</owner>
<description>
The DoDefault action (for example, to click on a button or link) has been
called on an accessibility node using a native accessibility API.
</description>
</action>
<action name="Accessibility.NativeApi.HitTest">
<owner>aleventhal@chromium.org</owner>
<owner>dmazzoni@chromium.org</owner>
<description>
The HitTest action has been called on an accessibility node using a native
accessibility API.
</description>
</action>
<action name="Accessibility.NativeApi.ScrollToMakeVisible">
<owner>aleventhal@chromium.org</owner>
<owner>dmazzoni@chromium.org</owner>
<description>
The ScrollToMakeVisible action has been called on an accessibility node
using a native accessibility API.
</description>
</action>
<action name="Accessibility.NativeApi.SetFocus">
<owner>aleventhal@chromium.org</owner>
<owner>dmazzoni@chromium.org</owner>
<description>
The SetFocus action has been called on an accessibility node using a native
accessibility API.
</description>
</action>
<action name="Accessibility.TwoFingersHeldDown"> <action name="Accessibility.TwoFingersHeldDown">
<owner>dmazzoni@chromium.org</owner> <owner>dmazzoni@chromium.org</owner>
<description> <description>
......
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