| 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 bd69baf4d4a8853c389ae6e41e323d1c4a4ee855..58f8803c740e6eebc6f61731289d47d54eb7cc85 100644
|
| --- a/chrome/browser/chromeos/arc/accessibility/ax_tree_source_arc.cc
|
| +++ b/chrome/browser/chromeos/arc/accessibility/ax_tree_source_arc.cc
|
| @@ -115,6 +115,34 @@ bool GetStringProperty(arc::mojom::AccessibilityNodeInfoData* node,
|
| return true;
|
| }
|
|
|
| +bool GetIntListProperty(arc::mojom::AccessibilityNodeInfoData* node,
|
| + arc::mojom::AccessibilityIntListProperty prop,
|
| + std::vector<int32_t>* out_value) {
|
| + if (!node->int_list_properties)
|
| + return false;
|
| +
|
| + auto it = node->int_list_properties->find(prop);
|
| + if (it == node->int_list_properties->end())
|
| + return false;
|
| +
|
| + *out_value = it->second;
|
| + return true;
|
| +}
|
| +
|
| +bool GetStringListProperty(arc::mojom::AccessibilityNodeInfoData* node,
|
| + arc::mojom::AccessibilityStringListProperty prop,
|
| + std::vector<std::string>* out_value) {
|
| + if (!node->string_list_properties)
|
| + return false;
|
| +
|
| + auto it = node->string_list_properties->find(prop);
|
| + if (it == node->string_list_properties->end())
|
| + return false;
|
| +
|
| + *out_value = it->second;
|
| + return true;
|
| +}
|
| +
|
| void PopulateAXRole(arc::mojom::AccessibilityNodeInfoData* node,
|
| ui::AXNodeData* out_data) {
|
| std::string class_name;
|
| @@ -364,8 +392,11 @@ void AXTreeSourceArc::SerializeNode(mojom::AccessibilityNodeInfoData* node,
|
| return;
|
| out_data->id = node->id;
|
|
|
| + using AXIntListProperty = arc::mojom::AccessibilityIntListProperty;
|
| using AXIntProperty = arc::mojom::AccessibilityIntProperty;
|
| + using AXStringListProperty = arc::mojom::AccessibilityStringListProperty;
|
| using AXStringProperty = arc::mojom::AccessibilityStringProperty;
|
| +
|
| std::string text;
|
| if (GetStringProperty(node, AXStringProperty::TEXT, &text))
|
| out_data->SetName(text);
|
| @@ -397,6 +428,25 @@ void AXTreeSourceArc::SerializeNode(mojom::AccessibilityNodeInfoData* node,
|
|
|
| if (GetIntProperty(node, AXIntProperty::TEXT_SELECTION_END, &val) && val >= 0)
|
| out_data->AddIntAttribute(ui::AX_ATTR_TEXT_SEL_END, val);
|
| +
|
| + // Custom actions.
|
| + std::vector<int32_t> custom_action_ids;
|
| + if (GetIntListProperty(node, AXIntListProperty::CUSTOM_ACTION_IDS,
|
| + &custom_action_ids)) {
|
| + std::vector<std::string> custom_action_descriptions;
|
| +
|
| + CHECK(GetStringListProperty(
|
| + node, AXStringListProperty::CUSTOM_ACTION_DESCRIPTIONS,
|
| + &custom_action_descriptions));
|
| + CHECK(!custom_action_ids.empty());
|
| + CHECK_EQ(custom_action_ids.size(), custom_action_descriptions.size());
|
| +
|
| + out_data->AddAction(ui::AX_ACTION_CUSTOM_ACTION);
|
| + out_data->AddIntListAttribute(ui::AX_ATTR_CUSTOM_ACTION_IDS,
|
| + custom_action_ids);
|
| + out_data->AddStringListAttribute(ui::AX_ATTR_CUSTOM_ACTION_DESCRIPTIONS,
|
| + custom_action_descriptions);
|
| + }
|
| }
|
|
|
| void AXTreeSourceArc::PerformAction(const ui::AXActionData& data) {
|
|
|