Source/JavaScriptCore:
[WebKit-https.git] / Source / WebCore / accessibility / AccessibilityObjectInterface.h
1 /*
2  * Copyright (C) 2019 Apple Inc. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
14  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
15  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
17  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
19  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
20  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
21  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
22  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
23  * THE POSSIBILITY OF SUCH DAMAGE.
24  */
25
26 #pragma once
27
28 namespace WebCore {
29
30 typedef unsigned AXID;
31 extern const AXID InvalidAXID;
32
33 enum class AccessibilityRole {
34     Annotation = 1,
35     Application,
36     ApplicationAlert,
37     ApplicationAlertDialog,
38     ApplicationDialog,
39     ApplicationGroup,
40     ApplicationLog,
41     ApplicationMarquee,
42     ApplicationStatus,
43     ApplicationTextGroup,
44     ApplicationTimer,
45     Audio,
46     Blockquote,
47     Browser,
48     BusyIndicator,
49     Button,
50     Canvas,
51     Caption,
52     Cell,
53     CheckBox,
54     ColorWell,
55     Column,
56     ColumnHeader,
57     ComboBox,
58     Definition,
59     DescriptionList,
60     DescriptionListTerm,
61     DescriptionListDetail,
62     Details,
63     Directory,
64     DisclosureTriangle,
65     Div,
66     Document,
67     DocumentArticle,
68     DocumentMath,
69     DocumentNote,
70     Drawer,
71     EditableText,
72     Feed,
73     Figure,
74     Footer,
75     Footnote,
76     Form,
77     GraphicsDocument,
78     GraphicsObject,
79     GraphicsSymbol,
80     Grid,
81     GridCell,
82     Group,
83     GrowArea,
84     Heading,
85     HelpTag,
86     HorizontalRule,
87     Ignored,
88     Inline,
89     Image,
90     ImageMap,
91     ImageMapLink,
92     Incrementor,
93     Label,
94     LandmarkBanner,
95     LandmarkComplementary,
96     LandmarkContentInfo,
97     LandmarkDocRegion,
98     LandmarkMain,
99     LandmarkNavigation,
100     LandmarkRegion,
101     LandmarkSearch,
102     Legend,
103     Link,
104     List,
105     ListBox,
106     ListBoxOption,
107     ListItem,
108     ListMarker,
109     Mark,
110     MathElement,
111     Matte,
112     Menu,
113     MenuBar,
114     MenuButton,
115     MenuItem,
116     MenuItemCheckbox,
117     MenuItemRadio,
118     MenuListPopup,
119     MenuListOption,
120     Outline,
121     Paragraph,
122     PopUpButton,
123     Pre,
124     Presentational,
125     ProgressIndicator,
126     RadioButton,
127     RadioGroup,
128     RowHeader,
129     Row,
130     RowGroup,
131     RubyBase,
132     RubyBlock,
133     RubyInline,
134     RubyRun,
135     RubyText,
136     Ruler,
137     RulerMarker,
138     ScrollArea,
139     ScrollBar,
140     SearchField,
141     Sheet,
142     Slider,
143     SliderThumb,
144     SpinButton,
145     SpinButtonPart,
146     SplitGroup,
147     Splitter,
148     StaticText,
149     Summary,
150     Switch,
151     SystemWide,
152     SVGRoot,
153     SVGText,
154     SVGTSpan,
155     SVGTextPath,
156     TabGroup,
157     TabList,
158     TabPanel,
159     Tab,
160     Table,
161     TableHeaderContainer,
162     TextArea,
163     TextGroup,
164     Term,
165     Time,
166     Tree,
167     TreeGrid,
168     TreeItem,
169     TextField,
170     ToggleButton,
171     Toolbar,
172     Unknown,
173     UserInterfaceTooltip,
174     ValueIndicator,
175     Video,
176     WebApplication,
177     WebArea,
178     WebCoreLink,
179     Window,
180 };
181
182 class AccessibilityObjectInterface {
183 public:
184     virtual ~AccessibilityObjectInterface() = default;
185
186     virtual bool isMediaControlLabel() const = 0;
187     virtual AccessibilityRole roleValue() const = 0;
188     virtual bool isAttachment() const = 0;
189 };
190
191 }