| 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() {
|
|
|