Commit 08054636 authored by Hiroki Sato's avatar Hiroki Sato Committed by Chromium LUCI CQ

arc-a11y: Clarify method names for full focus mode

AX-Relnotes: None
Bug: None
Test: unit_tests pass
Change-Id: I363b7c291f171bca64c6a22e442ee4222a72e3bb
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2586500
Commit-Queue: Hiroki Sato <hirokisato@chromium.org>
Reviewed-by: default avatarDavid Tseng <dtseng@chromium.org>
Cr-Commit-Position: refs/heads/master@{#836963}
parent 1c61e650
......@@ -40,7 +40,7 @@ class AccessibilityInfoDataWrapper {
virtual bool IsVirtualNode() const = 0;
virtual bool IsIgnored() const = 0;
virtual bool IsImportantInAndroid() const = 0;
virtual bool CanBeAccessibilityFocused() const = 0;
virtual bool IsFocusableInFullFocusMode() const = 0;
virtual bool IsAccessibilityFocusableContainer() const = 0;
virtual void PopulateAXRole(ui::AXNodeData* out_data) const = 0;
virtual void PopulateAXState(ui::AXNodeData* out_data) const = 0;
......
......@@ -92,7 +92,7 @@ bool AccessibilityNodeInfoDataWrapper::IsImportantInAndroid() const {
return IsVirtualNode() || GetProperty(AXBooleanProperty::IMPORTANCE);
}
bool AccessibilityNodeInfoDataWrapper::CanBeAccessibilityFocused() const {
bool AccessibilityNodeInfoDataWrapper::IsFocusableInFullFocusMode() const {
if (!IsAccessibilityFocusableContainer() && !HasAccessibilityFocusableText())
return false;
......
......@@ -34,7 +34,7 @@ class AccessibilityNodeInfoDataWrapper : public AccessibilityInfoDataWrapper {
bool IsVirtualNode() const override;
bool IsIgnored() const override;
bool IsImportantInAndroid() const override;
bool CanBeAccessibilityFocused() const override;
bool IsFocusableInFullFocusMode() const override;
bool IsAccessibilityFocusableContainer() const override;
void PopulateAXRole(ui::AXNodeData* out_data) const override;
void PopulateAXState(ui::AXNodeData* out_data) const override;
......
......@@ -712,7 +712,7 @@ TEST_F(AccessibilityNodeInfoDataWrapperTest, ControlIsFocusable) {
data.GetStringAttribute(ax::mojom::StringAttribute::kName, &name));
ASSERT_EQ(ax::mojom::Role::kSlider, data.role);
ASSERT_TRUE(wrapper.CanBeAccessibilityFocused());
ASSERT_TRUE(wrapper.IsFocusableInFullFocusMode());
}
TEST_F(AccessibilityNodeInfoDataWrapperTest, FocusAndClickAction) {
......
......@@ -56,7 +56,7 @@ bool AccessibilityWindowInfoDataWrapper::IsImportantInAndroid() const {
return true;
}
bool AccessibilityWindowInfoDataWrapper::CanBeAccessibilityFocused() const {
bool AccessibilityWindowInfoDataWrapper::IsFocusableInFullFocusMode() const {
// Windows are too generic to be Accessibility focused in Chrome, although
// they can be Accessibility focused in Android by virtue of having
// accessibility focus on nodes within themselves.
......
......@@ -32,7 +32,7 @@ class AccessibilityWindowInfoDataWrapper : public AccessibilityInfoDataWrapper {
bool IsVirtualNode() const override;
bool IsIgnored() const override;
bool IsImportantInAndroid() const override;
bool CanBeAccessibilityFocused() const override;
bool IsFocusableInFullFocusMode() const override;
bool IsAccessibilityFocusableContainer() const override;
void PopulateAXRole(ui::AXNodeData* out_data) const override;
void PopulateAXState(ui::AXNodeData* out_data) const override;
......
......@@ -328,7 +328,7 @@ void AXTreeSourceArc::ComputeEnclosingBoundsInternal(
if (!info_data->IsVisibleToUser())
return;
if (info_data->CanBeAccessibilityFocused()) {
if (info_data->IsFocusableInFullFocusMode()) {
// Only consider nodes that can possibly be accessibility focused.
computed_bounds->Union(info_data->GetBounds());
return;
......@@ -342,18 +342,20 @@ void AXTreeSourceArc::ComputeEnclosingBoundsInternal(
return;
}
AccessibilityInfoDataWrapper* AXTreeSourceArc::FindFirstFocusableNode(
AccessibilityInfoDataWrapper*
AXTreeSourceArc::FindFirstFocusableNodeInFullFocusMode(
AccessibilityInfoDataWrapper* info_data) const {
if (!IsValid(info_data))
return nullptr;
if (info_data->IsVisibleToUser() && info_data->CanBeAccessibilityFocused())
if (info_data->IsVisibleToUser() && info_data->IsFocusableInFullFocusMode())
return info_data;
std::vector<AccessibilityInfoDataWrapper*> children;
GetChildren(info_data, &children);
for (AccessibilityInfoDataWrapper* child : children) {
AccessibilityInfoDataWrapper* candidate = FindFirstFocusableNode(child);
AccessibilityInfoDataWrapper* candidate =
FindFirstFocusableNodeInFullFocusMode(child);
if (candidate)
return candidate;
}
......@@ -419,8 +421,9 @@ bool AXTreeSourceArc::UpdateAndroidFocusedId(const AXEventData& event_data) {
if (source_node && source_node->IsVisibleToUser()) {
// Sometimes Android sets focus on unfocusable node, e.g. ListView.
AccessibilityInfoDataWrapper* adjusted_node =
UseFullFocusMode() ? FindFirstFocusableNode(source_node)
: source_node;
UseFullFocusMode()
? FindFirstFocusableNodeInFullFocusMode(source_node)
: source_node;
if (IsValid(adjusted_node))
android_focused_id_ = adjusted_node->GetId();
}
......@@ -468,7 +471,8 @@ bool AXTreeSourceArc::UpdateAndroidFocusedId(const AXEventData& event_data) {
// Otherwise, try focus on the first focusable node.
if (!IsValid(new_focus) && UseFullFocusMode())
new_focus = FindFirstFocusableNode(GetFromId(event_data.source_id));
new_focus = FindFirstFocusableNodeInFullFocusMode(
GetFromId(event_data.source_id));
if (IsValid(new_focus))
android_focused_id_ = new_focus->GetId();
......
......@@ -115,8 +115,8 @@ class AXTreeSourceArc : public ui::AXTreeSource<AccessibilityInfoDataWrapper*,
void ComputeEnclosingBoundsInternal(AccessibilityInfoDataWrapper* info_data,
gfx::Rect* computed_bounds) const;
// Find the most top-left focusable node under the given node.
AccessibilityInfoDataWrapper* FindFirstFocusableNode(
// Find the most top-left focusable node under the given node in full focus mode.
AccessibilityInfoDataWrapper* FindFirstFocusableNodeInFullFocusMode(
AccessibilityInfoDataWrapper* info_data) const;
AccessibilityInfoDataWrapper* GetSelectedNodeInfoFromAdapterView(
......
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