gecko-dev/accessible/base/Role.h
Sylvestre Ledru 265e672179 Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
# ignore-this-changeset

--HG--
extra : amend_source : 4d301d3b0b8711c4692392aa76088ba7fd7d1022
2018-11-30 11:46:48 +01:00

1059 lines
24 KiB
C++

/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=2 et sw=2 tw=80: */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#ifndef _role_h_
#define _role_h_
/**
* @note Make sure to update the localized role names when changing the list.
* @note When adding a new role, be sure to also add it to base/RoleMap.h and
* update nsIAccessibleRole.
*/
namespace mozilla {
namespace a11y {
namespace roles {
enum Role {
/**
* Used when accessible hans't strong defined role.
*/
NOTHING = 0,
/**
* Represents a title or caption bar for a window. It is used by MSAA only,
* supported automatically by MS Windows.
*/
TITLEBAR = 1,
/**
* Represents the menu bar (positioned beneath the title bar of a window)
* from which menus are selected by the user. The role is used by
* xul:menubar or role="menubar".
*/
MENUBAR = 2,
/**
* Represents a vertical or horizontal scroll bar, which is part of the client
* area or used in a control.
*/
SCROLLBAR = 3,
/**
* Represents a special mouse pointer, which allows a user to manipulate user
* interface elements such as windows. For example, a user clicks and drags
* a sizing grip in the lower-right corner of a window to resize it.
*/
GRIP = 4,
/**
* Represents a system sound, which is associated with various system events.
*/
SOUND = 5,
/**
* Represents the system mouse pointer.
*/
CURSOR = 6,
/**
* Represents the system caret. The role is supported for caret.
*/
CARET = 7,
/**
* Represents an alert or a condition that a user should be notified about.
* Assistive Technologies typically respond to the role by reading the entire
* onscreen contents of containers advertising this role. Should be used for
* warning dialogs, etc. The role is used by xul:browsermessage,
* role="alert".
*/
ALERT = 8,
/**
* Represents the window frame, which contains child objects such as
* a title bar, client, and other objects contained in a window. The role
* is supported automatically by MS Windows.
*/
WINDOW = 9,
/**
* A sub-document (<frame> or <iframe>)
*/
INTERNAL_FRAME = 10,
/**
* Represents a menu, which presents a list of options from which the user can
* make a selection to perform an action. It is used for role="menu".
*/
MENUPOPUP = 11,
/**
* Represents a menu item, which is an entry in a menu that a user can choose
* to carry out a command, select an option. It is used for xul:menuitem,
* role="menuitem".
*/
MENUITEM = 12,
/**
* Represents a ToolTip that provides helpful hints.
*/
TOOLTIP = 13,
/**
* Represents a main window for an application. It is used for
* role="application". Also refer to APP_ROOT
*/
APPLICATION = 14,
/**
* Represents a document window. A document window is always contained within
* an application window. For role="document", see NON_NATIVE_DOCUMENT.
*/
DOCUMENT = 15,
/**
* Represents a pane within a frame or document window. Users can navigate
* between panes and within the contents of the current pane, but cannot
* navigate between items in different panes. Thus, panes represent a level
* of grouping lower than frame windows or documents, but above individual
* controls. It is used for the first child of a <frame> or <iframe>.
*/
PANE = 16,
/**
* Represents a graphical image used to represent data.
*/
CHART = 17,
/**
* Represents a dialog box or message box. It is used for xul:dialog,
* role="dialog".
*/
DIALOG = 18,
/**
* Represents a window border.
*/
BORDER = 19,
/**
* Logically groups other objects. There is not always a parent-child
* relationship between the grouping object and the objects it contains. It
* is used for html:textfield, xul:groupbox, role="group".
*/
GROUPING = 20,
/**
* Used to visually divide a space into two regions, such as a separator menu
* item or a bar that divides split panes within a window. It is used for
* xul:separator, html:hr, role="separator".
*/
SEPARATOR = 21,
/**
* Represents a toolbar, which is a grouping of controls (push buttons or
* toggle buttons) that provides easy access to frequently used features. It
* is used for xul:toolbar, role="toolbar".
*/
TOOLBAR = 22,
/**
* Represents a status bar, which is an area at the bottom of a window that
* displays information about the current operation, state of the application,
* or selected object. The status bar has multiple fields, which display
* different kinds of information. It is used for xul:statusbar.
*/
STATUSBAR = 23,
/**
* Represents a table that contains rows and columns of cells, and optionally,
* row headers and column headers. It is used for html:table,
* role="grid". Also refer to the following role: COLUMNHEADER,
* ROWHEADER, COLUMN, ROW, CELL.
*/
TABLE = 24,
/**
* Represents a column header, providing a visual label for a column in
* a table. It is used for XUL tree column headers, html:th,
* role="colheader". Also refer to TABLE.
*/
COLUMNHEADER = 25,
/**
* Represents a row header, which provides a visual label for a table row.
* It is used for role="rowheader". Also, see TABLE.
*/
ROWHEADER = 26,
/**
* Represents a column of cells within a table. Also, see TABLE.
*/
COLUMN = 27,
/**
* Represents a row of cells within a table. Also, see TABLE.
*/
ROW = 28,
/**
* Represents a cell within a table. It is used for html:td and xul:tree cell.
* Also, see TABLE.
*/
CELL = 29,
/**
* Represents a link to something else. This object might look like text or
* a graphic, but it acts like a button. It is used for
* xul:label@class="text-link", html:a, html:area.
*/
LINK = 30,
/**
* Displays a Help topic in the form of a ToolTip or Help balloon.
*/
HELPBALLOON = 31,
/**
* Represents a cartoon-like graphic object, such as Microsoft Office
* Assistant, which is displayed to provide help to users of an application.
*/
CHARACTER = 32,
/**
* Represents a list box, allowing the user to select one or more items. It
* is used for xul:listbox, html:select@size, role="list". See also
* LIST_ITEM.
*/
LIST = 33,
/**
* Represents an item in a list. See also LIST.
*/
LISTITEM = 34,
/**
* Represents an outline or tree structure, such as a tree view control,
* that displays a hierarchical list and allows the user to expand and
* collapse branches. Is is used for role="tree".
*/
OUTLINE = 35,
/**
* Represents an item in an outline or tree structure. It is used for
* role="treeitem".
*/
OUTLINEITEM = 36,
/**
* Represents a page tab, it is a child of a page tab list. It is used for
* xul:tab, role="treeitem". Also refer to PAGETABLIST.
*/
PAGETAB = 37,
/**
* Represents a property sheet. It is used for xul:tabpanel,
* role="tabpanel".
*/
PROPERTYPAGE = 38,
/**
* Represents an indicator, such as a pointer graphic, that points to the
* current item.
*/
INDICATOR = 39,
/**
* Represents a picture. Is is used for xul:image, html:img.
*/
GRAPHIC = 40,
/**
* Represents read-only text, such as labels for other controls or
* instructions in a dialog box. Static text cannot be modified or selected.
* Is is used for xul:label, xul:description, html:label, role="label".
*/
STATICTEXT = 41,
/**
* Represents selectable text that allows edits or is designated read-only.
*/
TEXT_LEAF = 42,
/**
* Represents a push button control. It is used for xul:button, html:button,
* role="button".
*/
PUSHBUTTON = 43,
/**
* Represents a check box control. It is used for xul:checkbox,
* html:input@type="checkbox", role="checkbox".
*/
CHECKBUTTON = 44,
/**
* Represents an option button, also called a radio button. It is one of a
* group of mutually exclusive options. All objects sharing a single parent
* that have this attribute are assumed to be part of single mutually
* exclusive group. It is used for xul:radio, html:input@type="radio",
* role="radio".
*/
RADIOBUTTON = 45,
/**
* Represents a combo box; a popup button with an associated list box that
* provides a set of predefined choices. It is used for html:select with a
* size of 1 and xul:menulist. See also ROLE_EDITCOMBOBOX.
*/
COMBOBOX = 46,
/**
* Represents the calendar control.
*/
DROPLIST = 47,
/**
* Represents a progress bar, dynamically showing the user the percent
* complete of an operation in progress. It is used for html:progress,
* role="progressbar".
*/
PROGRESSBAR = 48,
/**
* Represents a dial or knob whose purpose is to allow a user to set a value.
*/
DIAL = 49,
/**
* Represents a hot-key field that allows the user to enter a combination or
* sequence of keystrokes.
*/
HOTKEYFIELD = 50,
/**
* Represents a slider, which allows the user to adjust a setting in given
* increments between minimum and maximum values. It is used by xul:scale,
* role="slider".
*/
SLIDER = 51,
/**
* Represents a spin box, which is a control that allows the user to increment
* or decrement the value displayed in a separate "buddy" control associated
* with the spin box. It is used for input[type=number] spin buttons.
*/
SPINBUTTON = 52,
/**
* Represents a graphical image used to diagram data. It is used for svg:svg.
*/
DIAGRAM = 53,
/**
* Represents an animation control, which contains content that changes over
* time, such as a control that displays a series of bitmap frames.
*/
ANIMATION = 54,
/**
* Represents a mathematical equation. It is used by MATHML, where there is a
* rich DOM subtree for an equation. Use FLAT_EQUATION for <img role="math"
* alt="[TeX]"/>
*/
EQUATION = 55,
/**
* Represents a button that drops down a list of items.
*/
BUTTONDROPDOWN = 56,
/**
* Represents a button that drops down a menu.
*/
BUTTONMENU = 57,
/**
* Represents a button that drops down a grid. It is used for xul:colorpicker.
*/
BUTTONDROPDOWNGRID = 58,
/**
* Represents blank space between other objects.
*/
WHITESPACE = 59,
/**
* Represents a container of page tab controls. Is it used for xul:tabs,
* DHTML: role="tabs". Also refer to PAGETAB.
*/
PAGETABLIST = 60,
/**
* Represents a control that displays time.
*/
CLOCK = 61,
/**
* Represents a button on a toolbar that has a drop-down list icon directly
* adjacent to the button.
*/
SPLITBUTTON = 62,
/**
* Represents an edit control designed for an Internet Protocol (IP) address.
* The edit control is divided into sections for the different parts of the
* IP address.
*/
IPADDRESS = 63,
/**
* Represents a label control that has an accelerator.
*/
ACCEL_LABEL = 64,
/**
* Represents an arrow in one of the four cardinal directions.
*/
ARROW = 65,
/**
* Represents a control that can be drawn into and is used to trap events.
* It is used for html:canvas.
*/
CANVAS = 66,
/**
* Represents a menu item with a check box.
*/
CHECK_MENU_ITEM = 67,
/**
* Represents a specialized dialog that lets the user choose a color.
*/
COLOR_CHOOSER = 68,
/**
* Represents control whose purpose is to allow a user to edit a date.
*/
DATE_EDITOR = 69,
/**
* An iconified internal frame in an DESKTOP_PANE. Also refer to
* INTERNAL_FRAME.
*/
DESKTOP_ICON = 70,
/**
* A desktop pane. A pane that supports internal frames and iconified
* versions of those internal frames.
*/
DESKTOP_FRAME = 71,
/**
* A directory pane. A pane that allows the user to navigate through
* and select the contents of a directory. May be used by a file chooser.
* Also refer to FILE_CHOOSER.
*/
DIRECTORY_PANE = 72,
/**
* A file chooser. A specialized dialog that displays the files in the
* directory and lets the user select a file, browse a different directory,
* or specify a filename. May use the directory pane to show the contents of
* a directory. Also refer to DIRECTORY_PANE.
*/
FILE_CHOOSER = 73,
/**
* A font chooser. A font chooser is a component that lets the user pick
* various attributes for fonts.
*/
FONT_CHOOSER = 74,
/**
* Frame role. A top level window with a title bar, border, menu bar, etc.
* It is often used as the primary window for an application.
*/
CHROME_WINDOW = 75,
/**
* A glass pane. A pane that is guaranteed to be painted on top of all
* panes beneath it. Also refer to ROOT_PANE.
*/
GLASS_PANE = 76,
/**
* A document container for HTML, whose children represent the document
* content.
*/
HTML_CONTAINER = 77,
/**
* A small fixed size picture, typically used to decorate components.
*/
ICON = 78,
/**
* Presents an icon or short string in an interface.
*/
LABEL = 79,
/**
* A layered pane. A specialized pane that allows its children to be drawn
* in layers, providing a form of stacking order. This is usually the pane
* that holds the menu bar as well as the pane that contains most of the
* visual components in a window. Also refer to GLASS_PANE and
* ROOT_PANE.
*/
LAYERED_PANE = 80,
/**
* A specialized pane whose primary use is inside a dialog.
*/
OPTION_PANE = 81,
/**
* A text object uses for passwords, or other places where the text content
* is not shown visibly to the user.
*/
PASSWORD_TEXT = 82,
/**
* A temporary window that is usually used to offer the user a list of
* choices, and then hides when the user selects one of those choices.
*/
POPUP_MENU = 83,
/**
* A radio button that is a menu item.
*/
RADIO_MENU_ITEM = 84,
/**
* A root pane. A specialized pane that has a glass pane and a layered pane
* as its children. Also refer to GLASS_PANE and LAYERED_PANE.
*/
ROOT_PANE = 85,
/**
* A scroll pane. An object that allows a user to incrementally view a large
* amount of information. Its children can include scroll bars and a
* viewport. Also refer to VIEW_PORT.
*/
SCROLL_PANE = 86,
/**
* A split pane. A specialized panel that presents two other panels at the
* same time. Between the two panels is a divider the user can manipulate to
* make one panel larger and the other panel smaller.
*/
SPLIT_PANE = 87,
/**
* The header for a column of a table.
* XXX: it looks this role is dupe of COLUMNHEADER.
*/
TABLE_COLUMN_HEADER = 88,
/**
* The header for a row of a table.
* XXX: it looks this role is dupe of ROWHEADER
*/
TABLE_ROW_HEADER = 89,
/**
* A menu item used to tear off and reattach its menu.
*/
TEAR_OFF_MENU_ITEM = 90,
/**
* Represents an accessible terminal.
*/
TERMINAL = 91,
/**
* Collection of objects that constitute a logical text entity.
*/
TEXT_CONTAINER = 92,
/**
* A toggle button. A specialized push button that can be checked or
* unchecked, but does not provide a separate indicator for the current state.
*/
TOGGLE_BUTTON = 93,
/**
* Represent a control that is capable of expanding and collapsing rows as
* well as showing multiple columns of data.
*/
TREE_TABLE = 94,
/**
* A viewport. An object usually used in a scroll pane. It represents the
* portion of the entire data that the user can see. As the user manipulates
* the scroll bars, the contents of the viewport can change. Also refer to
* SCROLL_PANE.
*/
VIEWPORT = 95,
/**
* Header of a document page. Also refer to FOOTER.
*/
HEADER = 96,
/**
* Footer of a document page. Also refer to HEADER.
*/
FOOTER = 97,
/**
* A paragraph of text.
*/
PARAGRAPH = 98,
/**
* A ruler such as those used in word processors.
*/
RULER = 99,
/**
* A text entry having dialog or list containing items for insertion into
* an entry widget, for instance a list of words for completion of a
* text entry. It is used for xul:textbox@autocomplete
*/
AUTOCOMPLETE = 100,
/**
* An editable text object in a toolbar.
*/
EDITBAR = 101,
/**
* An control whose textual content may be entered or modified by the user.
*/
ENTRY = 102,
/**
* A caption describing another object.
*/
CAPTION = 103,
/**
* An element containing content that assistive technology users may want to
* browse in a reading mode, rather than a focus/interactive/application mode.
* This role is used for role="document". For the container which holds the
* content of a web page, see DOCUMENT.
*/
NON_NATIVE_DOCUMENT = 104,
/**
* Heading.
*/
HEADING = 105,
/**
* An object representing a page of document content. It is used in documents
* which are accessed by the user on a page by page basis.
*/
PAGE = 106,
/**
* A container of document content. An example of the use of this role is to
* represent an html:div.
*/
SECTION = 107,
/**
* An object which is redundant with another object in the accessible
* hierarchy. ATs typically ignore objects with this role.
*/
REDUNDANT_OBJECT = 108,
/**
* A container of form controls. An example of the use of this role is to
* represent an html:form.
*/
FORM = 109,
/**
* An object which is used to allow input of characters not found on a
* keyboard, such as the input of Chinese characters on a Western keyboard.
*/
IME = 110,
/**
* XXX: document this.
*/
APP_ROOT = 111,
/**
* Represents a menu item, which is an entry in a menu that a user can choose
* to display another menu.
*/
PARENT_MENUITEM = 112,
/**
* A calendar that allows the user to select a date.
*/
CALENDAR = 113,
/**
* A list of items that is shown by combobox.
*/
COMBOBOX_LIST = 114,
/**
* A item of list that is shown by combobox.
*/
COMBOBOX_OPTION = 115,
/**
* An image map -- has child links representing the areas
*/
IMAGE_MAP = 116,
/**
* An option in a listbox
*/
OPTION = 117,
/**
* A rich option in a listbox, it can have other widgets as children
*/
RICH_OPTION = 118,
/**
* A list of options
*/
LISTBOX = 119,
/**
* Represents a mathematical equation in the accessible name
*/
FLAT_EQUATION = 120,
/**
* Represents a cell within a grid. It is used for role="gridcell". Unlike
* CELL, it allows the calculation of the accessible name from subtree.
* Also, see TABLE.
*/
GRID_CELL = 121,
/**
* Represents an embedded object. It is used for html:object or html:embed.
*/
EMBEDDED_OBJECT = 122,
/**
* A note. Originally intended to be hidden until activated, but now also used
* for things like html 'aside'.
*/
NOTE = 123,
/**
* A figure. Used for things like HTML5 figure element.
*/
FIGURE = 124,
/**
* Represents a rich item with a check box.
*/
CHECK_RICH_OPTION = 125,
/**
* Represent a definition list (dl in HTML).
*/
DEFINITION_LIST = 126,
/**
* Represent a term in a definition list (dt in HTML).
*/
TERM = 127,
/**
* Represent a definition in a definition list (dd in HTML)
*/
DEFINITION = 128,
/**
* Represent a keyboard or keypad key (ARIA role "key").
*/
KEY = 129,
/**
* Represent a switch control widget (ARIA role "switch").
*/
SWITCH = 130,
/**
* A block of MathML code (math).
*/
MATHML_MATH = 131,
/**
* A MathML identifier (mi in MathML).
*/
MATHML_IDENTIFIER = 132,
/**
* A MathML number (mn in MathML).
*/
MATHML_NUMBER = 133,
/**
* A MathML operator (mo in MathML).
*/
MATHML_OPERATOR = 134,
/**
* A MathML text (mtext in MathML).
*/
MATHML_TEXT = 135,
/**
* A MathML string literal (ms in MathML).
*/
MATHML_STRING_LITERAL = 136,
/**
* A MathML glyph (mglyph in MathML).
*/
MATHML_GLYPH = 137,
/**
* A MathML row (mrow in MathML).
*/
MATHML_ROW = 138,
/**
* A MathML fraction (mfrac in MathML).
*/
MATHML_FRACTION = 139,
/**
* A MathML square root (msqrt in MathML).
*/
MATHML_SQUARE_ROOT = 140,
/**
* A MathML root (mroot in MathML).
*/
MATHML_ROOT = 141,
/**
* A MathML fenced element (mfenced in MathML).
*/
MATHML_FENCED = 142,
/**
* A MathML enclosed element (menclose in MathML).
*/
MATHML_ENCLOSED = 143,
/**
* A MathML styling element (mstyle in MathML).
*/
MATHML_STYLE = 144,
/**
* A MathML subscript (msub in MathML).
*/
MATHML_SUB = 145,
/**
* A MathML superscript (msup in MathML).
*/
MATHML_SUP = 146,
/**
* A MathML subscript and superscript (msubsup in MathML).
*/
MATHML_SUB_SUP = 147,
/**
* A MathML underscript (munder in MathML).
*/
MATHML_UNDER = 148,
/**
* A MathML overscript (mover in MathML).
*/
MATHML_OVER = 149,
/**
* A MathML underscript and overscript (munderover in MathML).
*/
MATHML_UNDER_OVER = 150,
/**
* A MathML multiple subscript and superscript element (mmultiscripts in
* MathML).
*/
MATHML_MULTISCRIPTS = 151,
/**
* A MathML table (mtable in MathML).
*/
MATHML_TABLE = 152,
/**
* A MathML labelled table row (mlabeledtr in MathML).
*/
MATHML_LABELED_ROW = 153,
/**
* A MathML table row (mtr in MathML).
*/
MATHML_TABLE_ROW = 154,
/**
* A MathML table entry or cell (mtd in MathML).
*/
MATHML_CELL = 155,
/**
* A MathML interactive element (maction in MathML).
*/
MATHML_ACTION = 156,
/**
* A MathML error message (merror in MathML).
*/
MATHML_ERROR = 157,
/**
* A MathML stacked (rows of numbers) element (mstack in MathML).
*/
MATHML_STACK = 158,
/**
* A MathML long division element (mlongdiv in MathML).
*/
MATHML_LONG_DIVISION = 159,
/**
* A MathML stack group (msgroup in MathML).
*/
MATHML_STACK_GROUP = 160,
/**
* A MathML stack row (msrow in MathML).
*/
MATHML_STACK_ROW = 161,
/**
* MathML carries, borrows, or crossouts for a row (mscarries in MathML).
*/
MATHML_STACK_CARRIES = 162,
/**
* A MathML carry, borrow, or crossout for a column (mscarry in MathML).
*/
MATHML_STACK_CARRY = 163,
/**
* A MathML line in a stack (msline in MathML).
*/
MATHML_STACK_LINE = 164,
/**
* A group containing radio buttons
*/
RADIO_GROUP = 165,
/**
* A text container exposing brief amount of information. See related
* TEXT_CONTAINER role.
*/
TEXT = 166,
/**
* The html:details element.
*/
DETAILS = 167,
/**
* The html:summary element.
*/
SUMMARY = 168,
/**
* An ARIA landmark. See related NAVIGATION role.
*/
LANDMARK = 169,
/**
* A specific type of ARIA landmark. The ability to distinguish navigation
* landmarks from other types of landmarks is, for example, needed on macOS
* where specific AXSubrole and AXRoleDescription for navigation landmarks
* are used.
*/
NAVIGATION = 170,
/**
* An object that contains the text of a footnote.
*/
FOOTNOTE = 171,
/**
* A complete or self-contained composition in a document, page, application,
* or site and that is, in principle, independently distributable or reusable,
* e.g. in syndication.
*/
ARTICLE = 172,
/**
* A perceivable section containing content that is relevant to a specific,
* author-specified purpose and sufficiently important that users will likely
* want to be able to navigate to the section easily and to have it listed in
* a summary of the page.
*/
REGION = 173,
/**
* Represents a control with a text input and a popup with a set of predefined
* choices. It is used for ARIA's combobox role. See also COMBOBOX.
*/
EDITCOMBOBOX = 174,
/**
* A section of content that is quoted from another source.
*/
BLOCKQUOTE = 175,
/**
* Content previously deleted or proposed for deletion, e.g. in revision
* history or a content view providing suggestions from reviewers.
*/
CONTENT_DELETION = 176,
/**
* Content previously inserted or proposed for insertion, e.g. in revision
* history or a content view providing suggestions from reviewers.
*/
CONTENT_INSERTION = 177,
/**
* An html:form element with a label provided by WAI-ARIA.
* This may also be used if role="form" with a label should be exposed
* differently in the future.
*/
FORM_LANDMARK = 178,
LAST_ROLE = FORM_LANDMARK
};
} // namespace roles
typedef enum mozilla::a11y::roles::Role role;
} // namespace a11y
} // namespace mozilla
#endif