| Index: ui/accessibility/ax_node_data.cc
|
| diff --git a/ui/accessibility/ax_node_data.cc b/ui/accessibility/ax_node_data.cc
|
| index 1b740742274f0827e17a8a2ae3323dbc9f50edfa..82e35d6fab3a4ddc97dc39ce03e8611f63ad6664 100644
|
| --- a/ui/accessibility/ax_node_data.cc
|
| +++ b/ui/accessibility/ax_node_data.cc
|
| @@ -58,6 +58,101 @@ typename std::vector<std::pair<FirstType, SecondType>>::const_iterator
|
|
|
| } // namespace
|
|
|
| +// Return true if |attr| is a node ID that would need to be mapped when
|
| +// renumbering the ids in a combined tree.
|
| +bool IsNodeIdIntAttribute(AXIntAttribute attr) {
|
| + switch (attr) {
|
| + case AX_ATTR_ACTIVEDESCENDANT_ID:
|
| + case AX_ATTR_ERRORMESSAGE_ID:
|
| + case AX_ATTR_MEMBER_OF_ID:
|
| + case AX_ATTR_NEXT_ON_LINE_ID:
|
| + case AX_ATTR_PREVIOUS_ON_LINE_ID:
|
| + case AX_ATTR_TABLE_HEADER_ID:
|
| + case AX_ATTR_TABLE_COLUMN_HEADER_ID:
|
| + case AX_ATTR_TABLE_ROW_HEADER_ID:
|
| + return true;
|
| +
|
| + // Note: all of the attributes are included here explicitly,
|
| + // rather than using "default:", so that it's a compiler error to
|
| + // add a new attribute without explicitly considering whether it's
|
| + // a node id attribute or not.
|
| + case AX_INT_ATTRIBUTE_NONE:
|
| + case AX_ATTR_ACTION:
|
| + case AX_ATTR_SCROLL_X:
|
| + case AX_ATTR_SCROLL_X_MIN:
|
| + case AX_ATTR_SCROLL_X_MAX:
|
| + case AX_ATTR_SCROLL_Y:
|
| + case AX_ATTR_SCROLL_Y_MIN:
|
| + case AX_ATTR_SCROLL_Y_MAX:
|
| + case AX_ATTR_TEXT_SEL_START:
|
| + case AX_ATTR_TEXT_SEL_END:
|
| + case AX_ATTR_TABLE_ROW_COUNT:
|
| + case AX_ATTR_TABLE_COLUMN_COUNT:
|
| + case AX_ATTR_TABLE_ROW_INDEX:
|
| + case AX_ATTR_TABLE_COLUMN_INDEX:
|
| + case AX_ATTR_TABLE_CELL_COLUMN_INDEX:
|
| + case AX_ATTR_TABLE_CELL_COLUMN_SPAN:
|
| + case AX_ATTR_TABLE_CELL_ROW_INDEX:
|
| + case AX_ATTR_TABLE_CELL_ROW_SPAN:
|
| + case AX_ATTR_SORT_DIRECTION:
|
| + case AX_ATTR_HIERARCHICAL_LEVEL:
|
| + case AX_ATTR_NAME_FROM:
|
| + case AX_ATTR_DESCRIPTION_FROM:
|
| + case AX_ATTR_CHILD_TREE_ID:
|
| + case AX_ATTR_SET_SIZE:
|
| + case AX_ATTR_POS_IN_SET:
|
| + case AX_ATTR_COLOR_VALUE:
|
| + case AX_ATTR_ARIA_CURRENT_STATE:
|
| + case AX_ATTR_BACKGROUND_COLOR:
|
| + case AX_ATTR_COLOR:
|
| + case AX_ATTR_INVALID_STATE:
|
| + case AX_ATTR_TEXT_DIRECTION:
|
| + case AX_ATTR_TEXT_STYLE:
|
| + case AX_ATTR_ARIA_COL_COUNT:
|
| + case AX_ATTR_ARIA_COL_INDEX:
|
| + case AX_ATTR_ARIA_ROW_COUNT:
|
| + case AX_ATTR_ARIA_ROW_INDEX:
|
| + return false;
|
| + }
|
| +
|
| + NOTREACHED();
|
| + return false;
|
| +}
|
| +
|
| +// Return true if |attr| contains a vector of node ids that would need
|
| +// to be mapped when renumbering the ids in a combined tree.
|
| +bool IsNodeIdIntListAttribute(AXIntListAttribute attr) {
|
| + switch (attr) {
|
| + case AX_ATTR_CELL_IDS:
|
| + case AX_ATTR_CONTROLS_IDS:
|
| + case AX_ATTR_DESCRIBEDBY_IDS:
|
| + case AX_ATTR_DETAILS_IDS:
|
| + case AX_ATTR_FLOWTO_IDS:
|
| + case AX_ATTR_INDIRECT_CHILD_IDS:
|
| + case AX_ATTR_LABELLEDBY_IDS:
|
| + case AX_ATTR_UNIQUE_CELL_IDS:
|
| + return true;
|
| +
|
| + // Note: all of the attributes are included here explicitly,
|
| + // rather than using "default:", so that it's a compiler error to
|
| + // add a new attribute without explicitly considering whether it's
|
| + // a node id attribute or not.
|
| + case AX_INT_LIST_ATTRIBUTE_NONE:
|
| + case AX_ATTR_LINE_BREAKS:
|
| + case AX_ATTR_MARKER_TYPES:
|
| + case AX_ATTR_MARKER_STARTS:
|
| + case AX_ATTR_MARKER_ENDS:
|
| + case AX_ATTR_CHARACTER_OFFSETS:
|
| + case AX_ATTR_CACHED_LINE_STARTS:
|
| + case AX_ATTR_WORD_STARTS:
|
| + case AX_ATTR_WORD_ENDS:
|
| + return false;
|
| + }
|
| +
|
| + NOTREACHED();
|
| + return false;
|
| +}
|
| +
|
| AXNodeData::AXNodeData()
|
| : id(-1),
|
| role(AX_ROLE_UNKNOWN),
|
| @@ -502,6 +597,9 @@ std::string AXNodeData::ToString() const {
|
| case AX_ATTR_ACTIVEDESCENDANT_ID:
|
| result += " activedescendant=" + value;
|
| break;
|
| + case AX_ATTR_ERRORMESSAGE_ID:
|
| + result += " errormessage=" + value;
|
| + break;
|
| case AX_ATTR_MEMBER_OF_ID:
|
| result += " member_of_id=" + value;
|
| break;
|
| @@ -643,6 +741,9 @@ std::string AXNodeData::ToString() const {
|
| result += " image_data_url=(" +
|
| IntToString(static_cast<int>(value.size())) + " bytes)";
|
| break;
|
| + case AX_ATTR_KEY_SHORTCUTS:
|
| + result += " key_shortcuts=" + value;
|
| + break;
|
| case AX_ATTR_LANGUAGE:
|
| result += " language=" + value;
|
| break;
|
| @@ -664,6 +765,9 @@ std::string AXNodeData::ToString() const {
|
| case AX_ATTR_ROLE:
|
| result += " role=" + value;
|
| break;
|
| + case AX_ATTR_ROLE_DESCRIPTION:
|
| + result += " role_description=" + value;
|
| + break;
|
| case AX_ATTR_SHORTCUT:
|
| result += " shortcut=" + value;
|
| break;
|
| @@ -731,6 +835,9 @@ std::string AXNodeData::ToString() const {
|
| case AX_ATTR_CANVAS_HAS_FALLBACK:
|
| result += " has_fallback=" + value;
|
| break;
|
| + case AX_ATTR_MODAL:
|
| + result += " modal=" + value;
|
| + break;
|
| case AX_BOOL_ATTRIBUTE_NONE:
|
| break;
|
| }
|
| @@ -748,6 +855,9 @@ std::string AXNodeData::ToString() const {
|
| case AX_ATTR_DESCRIBEDBY_IDS:
|
| result += " describedby_ids=" + IntVectorToString(values);
|
| break;
|
| + case AX_ATTR_DETAILS_IDS:
|
| + result += " details_ids=" + IntVectorToString(values);
|
| + break;
|
| case AX_ATTR_FLOWTO_IDS:
|
| result += " flowto_ids=" + IntVectorToString(values);
|
| break;
|
|
|