// 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.

// 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 three enums, also add to
  // chrome/common/extensions/apis/automation.idl.
  enum AXEvent {
    activedescendantchanged,
    alert,
    aria_attribute_changed,
    autocorrection_occured,
    blur,
    checked_state_changed,
    children_changed,
    focus,
    hide,
    hover,
    invalid_status_changed,
    layout_complete,
    live_region_changed,
    load_complete,
    location_changed,
    menu_end,
    menu_list_item_selected,
    menu_list_value_changed,
    menu_popup_end,
    menu_popup_start,
    menu_start,
    row_collapsed,
    row_count_changed,
    row_expanded,
    scroll_position_changed,
    scrolled_to_anchor,
    selected_children_changed,
    selected_text_changed,
    selection_changed,
    show,
    text_changed,
    text_inserted,
    text_removed,
    value_changed
  };

  enum AXRole {
    alert_dialog,
    alert,
    annotation,
    application,
    article,
    banner,
    browser,
    busy_indicator,
    button,
    button_drop_down,
    canvas,
    cell,
    check_box,
    client,
    color_well,
    column_header,
    column,
    combo_box,
    complementary,
    content_info,
    definition,
    description_list_detail,
    description_list_term,
    desktop,
    dialog,
    directory,
    disclosure_triangle,
    div,
    document,
    drawer,
    editable_text,
    embedded_object,
    footer,
    form,
    grid,
    group,
    grow_area,
    heading,
    help_tag,
    horizontal_rule,
    iframe,
    ignored,
    image_map_link,
    image_map,
    image,
    incrementor,
    inline_text_box,
    label_text,
    legend,
    link,
    list_box_option,
    list_box,
    list_item,
    list_marker,
    list,
    location_bar,
    log,
    main,
    marquee,
    math_element,
    math,
    matte,
    menu_bar,
    menu_button,
    menu_item,
    menu_list_option,
    menu_list_popup,
    menu,
    navigation,
    note,
    outline,
    pane,
    paragraph,
    pop_up_button,
    presentational,
    progress_indicator,
    radio_button,
    radio_group,
    region,
    root_web_area,
    row_header,
    row,
    ruler_marker,
    ruler,
    svg_root,
    scroll_area,
    scroll_bar,
    seamless_web_area,
    search,
    sheet,
    slider,
    slider_thumb,
    spin_button_part,
    spin_button,
    split_group,
    splitter,
    static_text,
    status,
    system_wide,
    tab_group,
    tab_list,
    tab_panel,
    tab,
    table_header_container,
    table,
    text_area,
    text_field,
    timer,
    title_bar,
    toggle_button,
    toolbar,
    tree_grid,
    tree_item,
    tree,
    unknown,
    tooltip,
    value_indicator,
    web_area,
    window
  };

  // TODO(dmazzoni): switch content/ to use AX_STATE_DISABLED instead of
  // !AX_STATE_ENABLED, and AX_STATE_EDITABLE instead of !AX_STATE_READONLY.
  enum AXState {
    busy,
    checked,
    collapsed,
    default,
    disabled,  // ui/views only
    editable,  // ui/views only
    enabled,   // content only
    expanded,
    focusable,
    focused,
    haspopup,
    hovered,
    indeterminate,
    invisible,
    linked,
    multiselectable,
    offscreen,
    pressed,
    protected,
    read_only,
    required,
    selectable,
    selected,
    vertical,
    visited
  };

  [cpp_enum_prefix_override="ax_attr"] enum AXStringAttribute {
    // Document attributes.
    doc_url,
    doc_title,
    doc_mimetype,
    doc_doctype,

    // Attributes that could apply to any node.
    access_key,
    action,
    container_live_relevant,
    container_live_status,
    description,
    display,
    help,
    html_tag,
    name,
    live_relevant,
    live_status,
    role,
    shortcut,
    url,
    value
  };

  [cpp_enum_prefix_override="ax_attr"] enum AXIntAttribute {
    // Scrollable container attributes.
    scroll_x,
    scroll_x_min,
    scroll_x_max,
    scroll_y,
    scroll_y_min,
    scroll_y_max,

    // Editable text attributes.
    text_sel_start,
    text_sel_end,

    // 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,

    // Tree control attributes.
    hierarchical_level,

    // Relationships between this element and other elements.
    title_ui_element,
    activedescendant_id,

    // Color value for AX_ROLE_COLOR_WELL, each component is 0..255
    color_value_red,
    color_value_green,
    color_value_blue,

    // Inline text attributes.
    text_direction
  };

  [cpp_enum_prefix_override="ax_attr"] enum AXFloatAttribute {
    // Document attributes.
    doc_loading_progress,

    // Range attributes.
    value_for_range,
    min_value_for_range,
    max_value_for_range
  };

  [cpp_enum_prefix_override="ax_attr"] enum AXBoolAttribute {
    // Document attributes.
    doc_loaded,

    // True if a checkbox or radio button is in the "mixed" state.
    button_mixed,

    // Live region attributes.
    container_live_atomic,
    container_live_busy,
    live_atomic,
    live_busy,

    // 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,
    flowto_ids,
    labelledby_ids,
    owns_ids,

    // Character indices where line breaks occur.
    line_breaks,

    // 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,

    // For inline text. These int lists must be the same size; they represent
    // the start and end character index of each word within this text.
    word_starts,
    word_ends
  };

  [cpp_enum_prefix_override="ax"] enum AXTextDirection {
    text_direction_lr,
    text_direction_rl,
    text_direction_tb,
    text_direction_bt
  };
};
