Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(132)

Unified Diff: chrome/browser/chromeos/arc/accessibility/ax_tree_source_arc.cc

Issue 2757623003: Initial support for accessible text fields and focus tracking in ARC++ (Closed)
Patch Set: Address nits. Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | chrome/browser/resources/chromeos/chromevox/common/chromevox_json.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/chromeos/arc/accessibility/ax_tree_source_arc.cc
diff --git a/chrome/browser/chromeos/arc/accessibility/ax_tree_source_arc.cc b/chrome/browser/chromeos/arc/accessibility/ax_tree_source_arc.cc
index a4a92086903d75b413ad9a51b4221e2e0f2ca356..4534fcd7e1d0294f8771b60c149038fe2c6192b2 100644
--- a/chrome/browser/chromeos/arc/accessibility/ax_tree_source_arc.cc
+++ b/chrome/browser/chromeos/arc/accessibility/ax_tree_source_arc.cc
@@ -20,8 +20,6 @@ ui::AXEvent ToAXEvent(arc::mojom::AccessibilityEventType arc_event_type) {
case arc::mojom::AccessibilityEventType::VIEW_FOCUSED:
case arc::mojom::AccessibilityEventType::VIEW_ACCESSIBILITY_FOCUSED:
return ui::AX_EVENT_FOCUS;
- case arc::mojom::AccessibilityEventType::VIEW_ACCESSIBILITY_FOCUS_CLEARED:
- return ui::AX_EVENT_BLUR;
case arc::mojom::AccessibilityEventType::VIEW_CLICKED:
case arc::mojom::AccessibilityEventType::VIEW_LONG_CLICKED:
return ui::AX_EVENT_CLICKED;
@@ -83,6 +81,20 @@ bool GetBooleanProperty(arc::mojom::AccessibilityNodeInfoData* node,
return it->second;
}
+bool GetIntProperty(arc::mojom::AccessibilityNodeInfoData* node,
+ arc::mojom::AccessibilityIntProperty prop,
+ int32_t* out_value) {
+ if (!node->intProperties)
+ return false;
+
+ auto it = node->intProperties->find(prop);
+ if (it == node->intProperties->end())
+ return false;
+
+ *out_value = it->second;
+ return true;
+}
+
bool GetStringProperty(arc::mojom::AccessibilityNodeInfoData* node,
arc::mojom::AccessibilityStringProperty prop,
std::string* out_value) {
@@ -219,10 +231,10 @@ void AXTreeSourceArc::NotifyAccessibilityEvent(
ExtensionMsg_AccessibilityEventParams params;
params.event_type = ToAXEvent(event_data->eventType);
+
if (params.event_type == ui::AX_EVENT_FOCUS)
- focused_node_id_ = params.id;
- else if (params.event_type == ui::AX_EVENT_BLUR)
- focused_node_id_ = -1;
+ focused_node_id_ = event_data->sourceId;
+
params.tree_id = tree_id_;
params.id = event_data->sourceId;
@@ -306,6 +318,7 @@ void AXTreeSourceArc::SerializeNode(mojom::AccessibilityNodeInfoData* node,
return;
out_data->id = node->id;
+ using AXIntProperty = arc::mojom::AccessibilityIntProperty;
using AXStringProperty = arc::mojom::AccessibilityStringProperty;
std::string text;
if (GetStringProperty(node, AXStringProperty::TEXT, &text))
@@ -329,6 +342,15 @@ void AXTreeSourceArc::SerializeNode(mojom::AccessibilityNodeInfoData* node,
if (out_data->role == ui::AX_ROLE_TEXT_FIELD && !text.empty())
out_data->AddStringAttribute(ui::AX_ATTR_VALUE, text);
+
+ // Integer properties.
+ int32_t val;
+ if (GetIntProperty(node, AXIntProperty::TEXT_SELECTION_START, &val) &&
+ val >= 0)
+ out_data->AddIntAttribute(ui::AX_ATTR_TEXT_SEL_START, val);
+
+ if (GetIntProperty(node, AXIntProperty::TEXT_SELECTION_END, &val) && val >= 0)
+ out_data->AddIntAttribute(ui::AX_ATTR_TEXT_SEL_END, val);
}
void AXTreeSourceArc::Reset() {
« no previous file with comments | « no previous file | chrome/browser/resources/chromeos/chromevox/common/chromevox_json.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698