]> git.saurik.com Git - iphone-api.git/blob - WebCore/AccessibilityRenderObject.h
Add support for new WinterBoard Settings features.
[iphone-api.git] / WebCore / AccessibilityRenderObject.h
1 /*
2 * Copyright (C) 2008 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 *
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in the
12 * documentation and/or other materials provided with the distribution.
13 * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
14 * its contributors may be used to endorse or promote products derived
15 * from this software without specific prior written permission.
16 *
17 * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
18 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
20 * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
21 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
22 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
23 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
24 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 */
28
29 #ifndef AccessibilityRenderObject_h
30 #define AccessibilityRenderObject_h
31
32 #include "AccessibilityObject.h"
33
34 namespace WebCore {
35
36 class AXObjectCache;
37 class Element;
38 class Frame;
39 class FrameView;
40 class HitTestResult;
41 class HTMLAnchorElement;
42 class HTMLAreaElement;
43 class HTMLElement;
44 class HTMLLabelElement;
45 class HTMLMapElement;
46 class HTMLSelectElement;
47 class IntPoint;
48 class IntSize;
49 class Node;
50 class RenderObject;
51 class RenderListBox;
52 class RenderTextControl;
53 class RenderView;
54 class Selection;
55 class String;
56 class Widget;
57
58 class AccessibilityRenderObject : public AccessibilityObject {
59 protected:
60 AccessibilityRenderObject(RenderObject*);
61 public:
62 static PassRefPtr<AccessibilityRenderObject> create(RenderObject*);
63 virtual ~AccessibilityRenderObject();
64
65 bool isAccessibilityRenderObject() const { return true; };
66
67 virtual bool isAnchor() const;
68 virtual bool isAttachment() const;
69 virtual bool isHeading() const;
70 virtual bool isLink() const;
71 virtual bool isImageButton() const;
72 virtual bool isImage() const;
73 virtual bool isNativeImage() const;
74 virtual bool isPasswordField() const;
75 virtual bool isTextControl() const;
76 virtual bool isNativeTextControl() const;
77 virtual bool isWebArea() const;
78 virtual bool isCheckboxOrRadio() const;
79 virtual bool isFileUploadButton() const;
80 virtual bool isInputImage() const;
81 virtual bool isProgressIndicator() const;
82 virtual bool isSlider() const;
83 virtual bool isMenuRelated() const;
84 virtual bool isMenu() const;
85 virtual bool isMenuBar() const;
86 virtual bool isMenuButton() const;
87 virtual bool isMenuItem() const;
88 virtual bool isControl() const;
89 virtual bool isFieldset() const;
90 virtual bool isGroup() const;
91
92 virtual bool isEnabled() const;
93 virtual bool isSelected() const;
94 virtual bool isFocused() const;
95 virtual bool isChecked() const;
96 virtual bool isHovered() const;
97 virtual bool isIndeterminate() const;
98 virtual bool isLoaded() const;
99 virtual bool isMultiSelect() const;
100 virtual bool isOffScreen() const;
101 virtual bool isPressed() const;
102 virtual bool isReadOnly() const;
103 virtual bool isVisited() const;
104
105 const AtomicString& getAttribute(const QualifiedName&) const;
106 virtual bool canSetFocusAttribute() const;
107 virtual bool canSetTextRangeAttributes() const;
108 virtual bool canSetValueAttribute() const;
109
110 virtual bool hasIntValue() const;
111
112 virtual bool accessibilityIsIgnored() const;
113
114 static int headingLevel(Node*);
115 virtual int intValue() const;
116 virtual float valueForRange() const;
117 virtual float maxValueForRange() const;
118 virtual float minValueForRange() const;
119 virtual int layoutCount() const;
120
121 virtual AccessibilityObject* doAccessibilityHitTest(const IntPoint&) const;
122 virtual AccessibilityObject* focusedUIElement() const;
123 virtual AccessibilityObject* firstChild() const;
124 virtual AccessibilityObject* lastChild() const;
125 virtual AccessibilityObject* previousSibling() const;
126 virtual AccessibilityObject* nextSibling() const;
127 virtual AccessibilityObject* parentObject() const;
128 virtual AccessibilityObject* observableObject() const;
129 virtual void linkedUIElements(AccessibilityChildrenVector&) const;
130 virtual AccessibilityObject* titleUIElement() const;
131 virtual AccessibilityRole ariaRoleAttribute() const;
132 virtual bool isPresentationalChildOfAriaRole() const;
133 virtual bool ariaRoleHasPresentationalChildren() const;
134 void setAriaRole();
135 virtual AccessibilityRole roleValue() const;
136 virtual AXObjectCache* axObjectCache() const;
137
138 virtual Element* actionElement() const;
139 Element* mouseButtonListener() const;
140 FrameView* frameViewIfRenderView() const;
141 virtual Element* anchorElement() const;
142 AccessibilityObject* menuForMenuButton() const;
143 AccessibilityObject* menuButtonForMenu() const;
144
145 virtual IntRect boundingBoxRect() const;
146 virtual IntRect elementRect() const;
147 virtual IntSize size() const;
148
149 void setRenderer(RenderObject* renderer) { m_renderer = renderer; }
150 RenderObject* renderer() const { return m_renderer; }
151 RenderView* topRenderer() const;
152 RenderTextControl* textControl() const;
153 Document* document() const;
154 FrameView* topDocumentFrameView() const;
155 HTMLLabelElement* labelElementContainer() const;
156
157 virtual KURL url() const;
158 virtual PlainTextRange selectedTextRange() const;
159 virtual Selection selection() const;
160 virtual String stringValue() const;
161 virtual String ariaAccessiblityName(const String&) const;
162 virtual String ariaLabeledByAttribute() const;
163 virtual String title() const;
164 virtual String ariaDescribedByAttribute() const;
165 virtual String accessibilityDescription() const;
166 virtual String helpText() const;
167 virtual String textUnderElement() const;
168 virtual String text() const;
169 virtual int textLength() const;
170 virtual PassRefPtr<Range> ariaSelectedTextDOMRange() const;
171 virtual String selectedText() const;
172 virtual const AtomicString& accessKey() const;
173 virtual const String& actionVerb() const;
174 virtual Widget* widget() const;
175 virtual Widget* widgetForAttachmentView() const;
176 virtual void getDocumentLinks(AccessibilityChildrenVector&);
177 virtual FrameView* documentFrameView() const;
178
179 virtual const AccessibilityChildrenVector& children();
180
181 virtual void setFocused(bool);
182 virtual void setSelectedTextRange(const PlainTextRange&);
183 virtual void setValue(const String&);
184
185 virtual void detach();
186 virtual void childrenChanged();
187 virtual void addChildren();
188 virtual bool canHaveChildren() const;
189 virtual void selectedChildren(AccessibilityChildrenVector&);
190 virtual void visibleChildren(AccessibilityChildrenVector&);
191 virtual bool shouldFocusActiveDescendant() const;
192 virtual AccessibilityObject* activeDescendant() const;
193 virtual void handleActiveDescendantChanged();
194
195 virtual VisiblePositionRange visiblePositionRange() const;
196 virtual VisiblePositionRange visiblePositionRangeForLine(unsigned) const;
197 virtual IntRect boundsForVisiblePositionRange(const VisiblePositionRange&) const;
198 virtual void setSelectedVisiblePositionRange(const VisiblePositionRange&) const;
199
200 virtual VisiblePosition visiblePositionForPoint(const IntPoint&) const;
201 virtual VisiblePosition visiblePositionForIndex(unsigned indexValue, bool lastIndexOK) const;
202 virtual int index(const VisiblePosition&) const;
203
204 virtual VisiblePosition visiblePositionForIndex(int) const;
205 virtual int indexForVisiblePosition(const VisiblePosition&) const;
206
207 virtual PlainTextRange doAXRangeForLine(unsigned) const;
208 virtual PlainTextRange doAXRangeForIndex(unsigned) const;
209
210 virtual String doAXStringForRange(const PlainTextRange&) const;
211 virtual IntRect doAXBoundsForRange(const PlainTextRange&) const;
212
213 virtual void updateBackingStore();
214
215 protected:
216 RenderObject* m_renderer;
217 AccessibilityRole m_ariaRole;
218 mutable bool m_childrenDirty;
219
220 void setRenderObject(RenderObject* renderer) { m_renderer = renderer; }
221 virtual void removeAXObjectID();
222
223 virtual bool isDetached() const { return !m_renderer; }
224
225 private:
226 void ariaListboxSelectedChildren(AccessibilityChildrenVector&);
227 void ariaListboxVisibleChildren(AccessibilityChildrenVector&);
228
229 Element* menuElementForMenuButton() const;
230 Element* menuItemElementForMenu() const;
231 AccessibilityRole determineAriaRoleAttribute() const;
232
233 IntRect checkboxOrRadioRect() const;
234 void addRadioButtonGroupMembers(AccessibilityChildrenVector& linkedUIElements) const;
235 AccessibilityObject* internalLinkElement() const;
236 AccessibilityObject* accessibilityParentForImageMap(HTMLMapElement* map) const;
237
238 void markChildrenDirty() const { m_childrenDirty = true; }
239 };
240
241 } // namespace WebCore
242
243 #endif // AccessibilityRenderObject_h