1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5// These should be kept in sync with third_party/WebKit/public/web/WebAXEnums.h
6// until the Chromium and Blink trees are merged.
7[camel_case_enum_to_string=true] namespace ui {
8
9  // For new entries to the following three enums, also add to
10  // chrome/common/extensions/api/automation.idl.
11  //
12  // Explanation of the comments next to these events:
13  //
14  // Web: this event is only used in web content. Unless a specific platform
15  //      is specified, it fires a native event on multiple platforms.
16  //
17  // Native: this event is only used in native UI.
18  //
19  // Implicit: it would be cleaner if we just updated the AX node
20  //     and each platform fired the appropriate events to indicate which
21  //     platform-specific attributes changed.
22  //
23  // If unspecified, the event is used across web and native on multiple
24  // platforms.
25  enum AXEvent {
26    activedescendantchanged,   // Web
27    alert,
28    aria_attribute_changed,    // Implicit
29    autocorrection_occured,    // Unknown: http://crbug.com/392498
30    blur,                      // Remove: http://crbug.com/392502
31    checked_state_changed,     // Implicit
32    children_changed,
33    focus,
34    hide,                      // Remove: http://crbug.com/392502
35    hover,
36    invalid_status_changed,    // Implicit
37    layout_complete,           // Web
38    live_region_changed,       // Web
39    load_complete,             // Web
40    location_changed,          // Web
41    menu_end,                  // Native / Win
42    menu_list_item_selected,   // Web
43    menu_list_value_changed,   // Web
44    menu_popup_end,            // Native / Win
45    menu_popup_start,          // Native / Win
46    menu_start,                // Native / Win
47    row_collapsed,             // Web / Mac
48    row_count_changed,         // Web / Mac
49    row_expanded,              // Web / Mac
50    scroll_position_changed,   // Web
51    scrolled_to_anchor,        // Web
52    selected_children_changed, // Web
53    selection,                 // Native
54    selection_add,             // Native
55    selection_remove,          // Native
56    show,                      // Remove: http://crbug.com/392502
57    text_changed,
58    text_selection_changed,
59    value_changed
60  };
61
62  enum AXRole {
63    alert_dialog,
64    alert,
65    annotation,
66    application,
67    article,
68    banner,
69    browser,
70    busy_indicator,
71    button,
72    button_drop_down,
73    canvas,
74    cell,
75    check_box,
76    client,
77    color_well,
78    column_header,
79    column,
80    combo_box,
81    complementary,
82    content_info,
83    definition,
84    description_list_detail,
85    description_list_term,
86    desktop,
87    dialog,
88    directory,
89    disclosure_triangle,
90    div,
91    document,
92    drawer,
93    editable_text,
94    embedded_object,
95    figcaption,
96    figure,
97    footer,
98    form,
99    grid,
100    group,
101    grow_area,
102    heading,
103    help_tag,
104    horizontal_rule,
105    iframe,
106    ignored,
107    image_map_link,
108    image_map,
109    image,
110    incrementor,
111    inline_text_box,
112    label_text,
113    legend,
114    link,
115    list_box_option,
116    list_box,
117    list_item,
118    list_marker,
119    list,
120    location_bar,
121    log,
122    main,
123    marquee,
124    math_element,
125    math,
126    matte,
127    menu_bar,
128    menu_button,
129    menu_item,
130    menu_list_option,
131    menu_list_popup,
132    menu,
133    navigation,
134    note,
135    outline,
136    pane,
137    paragraph,
138    pop_up_button,
139    presentational,
140    progress_indicator,
141    radio_button,
142    radio_group,
143    region,
144    root_web_area,
145    row_header,
146    row,
147    ruler_marker,
148    ruler,
149    svg_root,
150    scroll_area,
151    scroll_bar,
152    seamless_web_area,
153    search,
154    sheet,
155    slider,
156    slider_thumb,
157    spin_button_part,
158    spin_button,
159    split_group,
160    splitter,
161    static_text,
162    status,
163    system_wide,
164    tab_group,
165    tab_list,
166    tab_panel,
167    tab,
168    table_header_container,
169    table,
170    text_area,
171    text_field,
172    timer,
173    title_bar,
174    toggle_button,
175    toolbar,
176    tree_grid,
177    tree_item,
178    tree,
179    unknown,
180    tooltip,
181    value_indicator,
182    web_area,
183    window
184  };
185
186  // TODO(dmazzoni): switch content/ to use AX_STATE_DISABLED instead of
187  // !AX_STATE_ENABLED, and AX_STATE_EDITABLE instead of !AX_STATE_READONLY.
188  enum AXState {
189    busy,
190    checked,
191    collapsed,
192    default,
193    disabled,  // ui/views only
194    editable,  // ui/views only
195    enabled,   // content only
196    expanded,
197    focusable,
198    focused,
199    haspopup,
200    hovered,
201    indeterminate,
202    invisible,
203    linked,
204    multiselectable,
205    offscreen,
206    pressed,
207    protected,
208    read_only,
209    required,
210    selectable,
211    selected,
212    vertical,
213    visited
214  };
215
216  [cpp_enum_prefix_override="ax_attr"] enum AXStringAttribute {
217    // Document attributes.
218    doc_url,
219    doc_title,
220    doc_mimetype,
221    doc_doctype,
222
223    // Attributes that could apply to any node.
224    access_key,
225    action,
226    container_live_relevant,
227    container_live_status,
228    description,
229    display,
230    help,
231    html_tag,
232    name,
233    live_relevant,
234    live_status,
235    role,
236    shortcut,
237    url,
238    value
239  };
240
241  [cpp_enum_prefix_override="ax_attr"] enum AXIntAttribute {
242    // Scrollable container attributes.
243    scroll_x,
244    scroll_x_min,
245    scroll_x_max,
246    scroll_y,
247    scroll_y_min,
248    scroll_y_max,
249
250    // Editable text attributes.
251    text_sel_start,
252    text_sel_end,
253
254    // Table attributes.
255    table_row_count,
256    table_column_count,
257    table_header_id,
258
259    // Table row attributes.
260    table_row_index,
261    table_row_header_id,
262
263    // Table column attributes.
264    table_column_index,
265    table_column_header_id,
266
267    // Table cell attributes.
268    table_cell_column_index,
269    table_cell_column_span,
270    table_cell_row_index,
271    table_cell_row_span,
272
273    // Tree control attributes.
274    hierarchical_level,
275
276    // Relationships between this element and other elements.
277    title_ui_element,
278    activedescendant_id,
279
280    // Color value for AX_ROLE_COLOR_WELL, each component is 0..255
281    color_value_red,
282    color_value_green,
283    color_value_blue,
284
285    // Inline text attributes.
286    text_direction
287  };
288
289  [cpp_enum_prefix_override="ax_attr"] enum AXFloatAttribute {
290    // Document attributes.
291    doc_loading_progress,
292
293    // Range attributes.
294    value_for_range,
295    min_value_for_range,
296    max_value_for_range
297  };
298
299  [cpp_enum_prefix_override="ax_attr"] enum AXBoolAttribute {
300    // Document attributes.
301    doc_loaded,
302
303    // True if a checkbox or radio button is in the "mixed" state.
304    button_mixed,
305
306    // Live region attributes.
307    container_live_atomic,
308    container_live_busy,
309    live_atomic,
310    live_busy,
311
312    // ARIA readonly flag.
313    aria_readonly,
314
315    // Writeable attributes
316    can_set_value,
317
318    // If this is set, all of the other fields in this struct should
319    // be ignored and only the locations should change.
320    update_location_only,
321
322    // Set on a canvas element if it has fallback content.
323    canvas_has_fallback,
324
325    // Set if this node is the host of an external AXTree, for
326    // example a web view that's a child of a native view, or a
327    // web iframe that's the child of another web frame.
328    is_ax_tree_host
329  };
330
331  [cpp_enum_prefix_override="ax_attr"] enum AXIntListAttribute {
332    // Ids of nodes that are children of this node logically, but are
333    // not children of this node in the tree structure. As an example,
334    // a table cell is a child of a row, and an 'indirect' child of a
335    // column.
336    indirect_child_ids,
337
338    // Relationships between this element and other elements.
339    controls_ids,
340    describedby_ids,
341    flowto_ids,
342    labelledby_ids,
343    owns_ids,
344
345    // Character indices where line breaks occur.
346    line_breaks,
347
348    // For a table, the cell ids in row-major order, with duplicate entries
349    // when there's a rowspan or colspan, and with -1 for missing cells.
350    // There are always exactly rows * columns entries.
351    cell_ids,
352
353    // For a table, the unique cell ids in row-major order of their first
354    // occurrence.
355    unique_cell_ids,
356
357    // For inline text. This is the pixel position of the end of this
358    // character within the bounding rectangle of this object, in the
359    // direction given by AX_ATTR_TEXT_DIRECTION. For example, for left-to-right
360    // text, the first offset is the right coordinate of the first character
361    // within the object's bounds, the second offset is the right coordinate
362    // of the second character, and so on.
363    character_offsets,
364
365    // For inline text. These int lists must be the same size; they represent
366    // the start and end character index of each word within this text.
367    word_starts,
368    word_ends
369  };
370
371  [cpp_enum_prefix_override="ax"] enum AXTextDirection {
372    text_direction_lr,
373    text_direction_rl,
374    text_direction_tb,
375    text_direction_bt
376  };
377};
378