Chromium Code Reviews| 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..f36261556d01fb60ae69d99dac4d87769feb72c3 100644 |
| --- a/chrome/browser/chromeos/arc/accessibility/ax_tree_source_arc.cc |
| +++ b/chrome/browser/chromeos/arc/accessibility/ax_tree_source_arc.cc |
| @@ -18,10 +18,9 @@ namespace { |
| ui::AXEvent ToAXEvent(arc::mojom::AccessibilityEventType arc_event_type) { |
| switch (arc_event_type) { |
| case arc::mojom::AccessibilityEventType::VIEW_FOCUSED: |
| + return ui::AX_EVENT_FOCUS; |
|
hidehiko
2017/03/21 03:43:23
nit: unnecessary change.
David Tseng
2017/03/21 16:41:16
Done.
|
| 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 +82,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 +232,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 +319,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 +343,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) |
|
Luis Héctor Chávez
2017/03/17 22:13:20
nit: add braces since the condition spans two line
David Tseng
2017/03/21 16:41:16
STyle guide says
"In general, curly braces are not
|
| + 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() { |