// Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // TODO(nektar): Migrate entire file to Mojoq. // These should be kept in sync with third_party/WebKit/public/web/WebAXEnums.h // until the Chromium and Blink trees are merged. [camel_case_enum_to_string=true] namespace ui { // For new entries to the following four enums, also add to // chrome/common/extensions/api/automation.idl. This is enforced // by a PRESUBMIT check. // // Explanation of the comments next to these events: // // Web: this event is only used in web content. Unless a specific platform // is specified, it fires a native event on multiple platforms. // // Native: this event is only used in native UI. // // Implicit: it would be cleaner if we just updated the AX node // and each platform fired the appropriate events to indicate which // platform-specific attributes changed. // // If unspecified, the event is used across web and native on multiple // platforms. enum AXEvent { activedescendantchanged, // Web alert, aria_attribute_changed, // Implicit autocorrection_occured, // Unknown: http://crbug.com/392498 blur, // Remove: http://crbug.com/392502 checked_state_changed, // Implicit children_changed, clicked, document_selection_changed, expanded_changed, // Web focus, hide, // Remove: http://crbug.com/392502 hover, image_frame_updated, // Web invalid_status_changed, // Implicit layout_complete, // Web live_region_created, // Implicit live_region_changed, // Web load_complete, // Web location_changed, // Web media_started_playing, // Automation media_stopped_playing, // Automation menu_end, // Native / Win menu_list_item_selected, // Web menu_list_value_changed, // Web menu_popup_end, // Native / Win menu_popup_start, // Native / Win menu_start, // Native / Win mouse_canceled, mouse_dragged, mouse_moved, mouse_pressed, mouse_released, row_collapsed, // Web / Mac row_count_changed, // Web / Mac row_expanded, // Web / Mac scroll_position_changed, // Web scrolled_to_anchor, // Web selected_children_changed, // Web selection, // Native selection_add, // Native selection_remove, // Native show, // Remove: http://crbug.com/392502 text_changed, text_selection_changed, tree_changed, // Accessibility tree changed. Don't // explicitly fire an accessibility event, // only implicitly due to the change. value_changed }; enum AXRole { abbr, alert_dialog, alert, annotation, application, article, audio, banner, blockquote, // TODO(nektar): Remove busy_indicator because it's used nowhere. busy_indicator, button, button_drop_down, // Not used on Web. canvas, caption, cell, check_box, client, color_well, column_header, column, combo_box, complementary, content_info, date, date_time, definition, description_list_detail, description_list, description_list_term, desktop, details, dialog, directory, disclosure_triangle, div, document, embedded_object, feed, figcaption, figure, footer, form, grid, group, heading, iframe, iframe_presentational, ignored, image_map_link, image_map, image, inline_text_box, input_time, label_text, legend, line_break, link, list_box_option, list_box, list_item, list_marker, list, location_bar, log, main, mark, marquee, math, menu, menu_bar, menu_button, menu_item, menu_item_check_box, menu_item_radio, menu_list_option, menu_list_popup, meter, navigation, note, outline, pane, paragraph, pop_up_button, pre, presentational, progress_indicator, radio_button, radio_group, region, root_web_area, row_header, row, ruby, ruler, svg_root, scroll_area, scroll_bar, seamless_web_area, search, search_box, slider, slider_thumb, spin_button_part, spin_button, splitter, static_text, status, switch, tab_group, tab_list, tab_panel, tab, table_header_container, table, term, text_field, time, timer, title_bar, toggle_button, toolbar, tree_grid, tree_item, tree, unknown, tooltip, video, web_area, web_view, window }; enum AXState { busy, checked, collapsed, default, disabled, editable, expanded, focusable, haspopup, // Grows horizontally, e.g. most toolbars and separators. horizontal, hovered, invisible, linked, multiline, multiselectable, offscreen, pressed, protected, read_only, required, richly_editable, selectable, selected, // Grows vertically, e.g. menu or combo box. vertical, visited }; // An action to be taken on an accessibility node. // In contrast to |AXSupportedAction|, these describe what happens to the // object, e.g. "FOCUS". enum AXAction { blur, // Decrement a slider or range control by one step value. decrement, // Do the default action for an object, typically this means "click". do_default, focus, // Return the content of this image object in the image_data attribute. get_image_data, // Given a point, find the object it corresponds to and fire a // HOVER event on it in response. hit_test, // Increment a slider or range control by one step value. increment, // Delete any selected text in the control's text value and // insert |AXActionData::value| in its place, like when typing or pasting. replace_selected_text, // Scroll any scrollable containers to make the target object visible // on the screen. Optionally pass a subfocus rect in // AXActionData.target_rect. scroll_to_make_visible, // Scroll the given object to a specified point on the screen in // global screen coordinates. Pass a point in AXActionData.target_point. scroll_to_point, set_accessibility_focus, set_scroll_offset, set_selection, // Don't focus this node, but set it as the sequential focus navigation // starting point, so that pressing Tab moves to the next element // following this one, for example. set_sequential_focus_navigation_starting_point, // Replace the value of the control with AXActionData::value and // reset the selection, if applicable. set_value, show_context_menu }; enum AXActionFlags { request_images, request_inline_text_boxes }; // Lists the actions that can be performed on a given node. // In contrast to |AXAction|, these describe what the user can do on the // object, e.g. "PRESS", not what happens to the object as a result. // Only one action is supported for now. enum AXSupportedAction { activate, check, click, jump, open, press, select, uncheck }; // A change to the accessibility tree. enum AXMutation { node_created, subtree_created, node_changed, node_removed }; [cpp_enum_prefix_override="ax_attr"] enum AXStringAttribute { access_key, // Only used when invalid_state == invalid_state_other. aria_invalid_value, auto_complete, chrome_channel, // Automation only. container_live_relevant, container_live_status, description, display, // Only present when different from parent. font_family, html_tag, image_data_url, key_shortcuts, // Only present when different from parent. language, name, live_relevant, live_status, placeholder, role, role_description, shortcut, url, value }; [cpp_enum_prefix_override="ax_attr"] enum AXIntAttribute { action, // Scrollable container attributes. scroll_x, scroll_x_min, scroll_x_max, scroll_y, scroll_y_min, scroll_y_max, // Attributes for retrieving the endpoints of a selection. text_sel_start, text_sel_end, // aria_col* and aria_row* attributes aria_col_count, aria_col_index, aria_row_count, aria_row_index, // Table attributes. table_row_count, table_column_count, table_header_id, // Table row attributes. table_row_index, table_row_header_id, // Table column attributes. table_column_index, table_column_header_id, // Table cell attributes. table_cell_column_index, table_cell_column_span, table_cell_row_index, table_cell_row_span, sort_direction, // Tree control attributes. hierarchical_level, // What information was used to compute the object's name // (of type AXNameFrom). name_from, // What information was used to compute the object's description // (of type AXDescriptionFrom). description_from, // Relationships between this element and other elements. activedescendant_id, errormessage_id, member_of_id, next_on_line_id, previous_on_line_id, // Identifies a child tree which this node hosts. child_tree_id, // Position or Number of items in current set of listitems or treeitems set_size, pos_in_set, // In the case of AX_ROLE_COLOR_WELL, specifies the selected color. color_value, // Indicates the element that represents the current item within a container // or set of related elements. aria_current_state, // Text attributes. // Foreground and background color in RGBA. background_color, color, // Indicates if a form control has invalid input or // if an element has an aria-invalid attribute. invalid_state, // Specifies the direction of the text, e.g., right-to-left. text_direction, // Bold, italic, underline, etc. text_style }; [cpp_enum_prefix_override="ax_attr"] enum AXFloatAttribute { // Range attributes. value_for_range, min_value_for_range, max_value_for_range, // Text attributes. // Font size is in pixels. font_size }; [cpp_enum_prefix_override="ax_attr"] enum AXBoolAttribute { // True if an ARIA toggle button, a checkbox or // a menu item checkbox is in the "mixed" state. STATE_mixed, // Live region attributes. container_live_atomic, container_live_busy, live_atomic, live_busy, // If a dialog box is marked as explicitly modal modal, // ARIA readonly flag. aria_readonly, // Writeable attributes can_set_value, // If this is set, all of the other fields in this struct should // be ignored and only the locations should change. update_location_only, // Set on a canvas element if it has fallback content. canvas_has_fallback }; [cpp_enum_prefix_override="ax_attr"] enum AXIntListAttribute { // Ids of nodes that are children of this node logically, but are // not children of this node in the tree structure. As an example, // a table cell is a child of a row, and an 'indirect' child of a // column. indirect_child_ids, // Relationships between this element and other elements. controls_ids, describedby_ids, details_ids, flowto_ids, labelledby_ids, // For static text. Character indices where line breaks occur. Note that // this attribute is only available on Chrome OS and will be deprecated // soon. line_breaks, // For static text. These int lists must be the same size; they represent // the start and end character offset of each marker. Examples of markers // include spelling and grammar errors, and find-in-page matches. marker_types, marker_starts, marker_ends, // For a table, the cell ids in row-major order, with duplicate entries // when there's a rowspan or colspan, and with -1 for missing cells. // There are always exactly rows * columns entries. cell_ids, // For a table, the unique cell ids in row-major order of their first // occurrence. unique_cell_ids, // For inline text. This is the pixel position of the end of this // character within the bounding rectangle of this object, in the // direction given by AX_ATTR_TEXT_DIRECTION. For example, for left-to-right // text, the first offset is the right coordinate of the first character // within the object's bounds, the second offset is the right coordinate // of the second character, and so on. character_offsets, // Used for caching. Do not read directly. Use // |AXNode::GetOrComputeLineStartOffsets| // For all text fields and content editable roots: A list of the start // offsets of each line inside this object. cached_line_starts, // For inline text. These int lists must be the same size; they represent // the start and end character offset of each word within this text. word_starts, word_ends }; enum AXMarkerType { // Assignments are ignored by the parser, but are kept here for clarity. spelling = 1, grammar = 2, spelling_grammar = 3, text_match = 4, spelling_text_match = 5, grammar_text_match = 6, spelling_grammar_text_match = 7 }; enum AXTextDirection { ltr, rtl, ttb, btt }; // A Java counterpart will be generated for this enum. // GENERATED_JAVA_ENUM_PACKAGE: org.chromium.ui.accessibility [cpp_enum_prefix_override="ax"] enum AXTextStyle { // Assignments are ignored by the parser, but are kept here for clarity. text_style_bold = 1, text_style_italic = 2, text_style_bold_italic = 3, text_style_underline = 4, text_style_bold_underline = 5, text_style_italic_underline = 6, text_style_bold_italic_underline = 7, text_style_line_through = 8, text_style_bold_line_through = 9, text_style_italic_line_through = 10, text_style_bold_italic_line_through = 11, text_style_underline_line_through = 12, text_style_bold_underline_line_through = 13, text_style_italic_underline_line_through = 14, text_style_bold_italic_underline_line_through = 15 }; enum AXAriaCurrentState { false, true, page, step, location, date, time }; enum AXInvalidState { false, true, spelling, grammar, other }; enum AXSortDirection { unsorted, ascending, descending, other }; enum AXNameFrom { uninitialized, attribute, contents, placeholder, related_element, value }; enum AXDescriptionFrom { uninitialized, attribute, contents, placeholder, related_element }; enum AXEventFrom { user, page, action }; // Touch gestures on Chrome OS. enum AXGesture { click, swipe_left_1, swipe_up_1, swipe_right_1, swipe_down_1, swipe_left_2, swipe_up_2, swipe_right_2, swipe_down_2, swipe_left_3, swipe_up_3, swipe_right_3, swipe_down_3, swipe_left_4, swipe_up_4, swipe_right_4, swipe_down_4 }; enum AXTextAffinity { downstream, upstream }; // Compares two nodes in an accessibility tree in pre-order traversal. enum AXTreeOrder { // Not in the same tree, or other error. undefined, // First node is before the second one. before, // Nodes are the same. equal, // First node is after the second one. after }; };