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