2 * Copyright (C) 2008 Apple Inc. All rights reserved.
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
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.
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.
29 #ifndef AccessibilityRenderObject_h
30 #define AccessibilityRenderObject_h
32 #include "AccessibilityObject.h"
41 class HTMLAnchorElement
;
42 class HTMLAreaElement
;
44 class HTMLLabelElement
;
46 class HTMLSelectElement
;
52 class RenderTextControl
;
58 class AccessibilityRenderObject
: public AccessibilityObject
{
60 AccessibilityRenderObject(RenderObject
*);
62 static PassRefPtr
<AccessibilityRenderObject
> create(RenderObject
*);
63 virtual ~AccessibilityRenderObject();
65 bool isAccessibilityRenderObject() const { return true; };
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;
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;
105 const AtomicString
& getAttribute(const QualifiedName
&) const;
106 virtual bool canSetFocusAttribute() const;
107 virtual bool canSetTextRangeAttributes() const;
108 virtual bool canSetValueAttribute() const;
110 virtual bool hasIntValue() const;
112 virtual bool accessibilityIsIgnored() const;
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;
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;
135 virtual AccessibilityRole
roleValue() const;
136 virtual AXObjectCache
* axObjectCache() const;
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;
145 virtual IntRect
boundingBoxRect() const;
146 virtual IntRect
elementRect() const;
147 virtual IntSize
size() const;
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;
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;
179 virtual const AccessibilityChildrenVector
& children();
181 virtual void setFocused(bool);
182 virtual void setSelectedTextRange(const PlainTextRange
&);
183 virtual void setValue(const String
&);
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();
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;
200 virtual VisiblePosition
visiblePositionForPoint(const IntPoint
&) const;
201 virtual VisiblePosition
visiblePositionForIndex(unsigned indexValue
, bool lastIndexOK
) const;
202 virtual int index(const VisiblePosition
&) const;
204 virtual VisiblePosition
visiblePositionForIndex(int) const;
205 virtual int indexForVisiblePosition(const VisiblePosition
&) const;
207 virtual PlainTextRange
doAXRangeForLine(unsigned) const;
208 virtual PlainTextRange
doAXRangeForIndex(unsigned) const;
210 virtual String
doAXStringForRange(const PlainTextRange
&) const;
211 virtual IntRect
doAXBoundsForRange(const PlainTextRange
&) const;
213 virtual void updateBackingStore();
216 RenderObject
* m_renderer
;
217 AccessibilityRole m_ariaRole
;
218 mutable bool m_childrenDirty
;
220 void setRenderObject(RenderObject
* renderer
) { m_renderer
= renderer
; }
221 virtual void removeAXObjectID();
223 virtual bool isDetached() const { return !m_renderer
; }
226 void ariaListboxSelectedChildren(AccessibilityChildrenVector
&);
227 void ariaListboxVisibleChildren(AccessibilityChildrenVector
&);
229 Element
* menuElementForMenuButton() const;
230 Element
* menuItemElementForMenu() const;
231 AccessibilityRole
determineAriaRoleAttribute() const;
233 IntRect
checkboxOrRadioRect() const;
234 void addRadioButtonGroupMembers(AccessibilityChildrenVector
& linkedUIElements
) const;
235 AccessibilityObject
* internalLinkElement() const;
236 AccessibilityObject
* accessibilityParentForImageMap(HTMLMapElement
* map
) const;
238 void markChildrenDirty() const { m_childrenDirty
= true; }
241 } // namespace WebCore
243 #endif // AccessibilityRenderObject_h