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
;
54 class VisibleSelection
;
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
* parentObjectIfExists() const;
129 virtual AccessibilityObject
* observableObject() const;
130 virtual void linkedUIElements(AccessibilityChildrenVector
&) const;
131 virtual bool exposesTitleUIElement() const;
132 virtual AccessibilityObject
* titleUIElement() const;
133 virtual AccessibilityRole
ariaRoleAttribute() const;
134 virtual bool isPresentationalChildOfAriaRole() const;
135 virtual bool ariaRoleHasPresentationalChildren() const;
137 virtual AccessibilityRole
roleValue() const;
138 virtual AXObjectCache
* axObjectCache() const;
140 virtual Element
* actionElement() const;
141 Element
* mouseButtonListener() const;
142 FrameView
* frameViewIfRenderView() const;
143 virtual Element
* anchorElement() const;
144 AccessibilityObject
* menuForMenuButton() const;
145 AccessibilityObject
* menuButtonForMenu() const;
147 virtual IntRect
boundingBoxRect() const;
148 virtual IntRect
elementRect() const;
149 virtual IntSize
size() const;
151 void setRenderer(RenderObject
* renderer
) { m_renderer
= renderer
; }
152 RenderObject
* renderer() const { return m_renderer
; }
153 RenderView
* topRenderer() const;
154 RenderTextControl
* textControl() const;
155 Document
* document() const;
156 FrameView
* topDocumentFrameView() const;
157 HTMLLabelElement
* labelElementContainer() const;
159 virtual KURL
url() const;
160 virtual PlainTextRange
selectedTextRange() const;
161 virtual VisibleSelection
selection() const;
162 virtual String
stringValue() const;
163 virtual String
ariaAccessiblityName(const String
&) const;
164 virtual String
ariaLabeledByAttribute() const;
165 virtual String
title() const;
166 virtual String
ariaDescribedByAttribute() const;
167 virtual String
accessibilityDescription() const;
168 virtual String
helpText() const;
169 virtual String
textUnderElement() const;
170 virtual String
text() const;
171 virtual int textLength() const;
172 virtual PassRefPtr
<Range
> ariaSelectedTextDOMRange() const;
173 virtual String
selectedText() const;
174 virtual const AtomicString
& accessKey() const;
175 virtual const String
& actionVerb() const;
176 virtual Widget
* widget() const;
177 virtual Widget
* widgetForAttachmentView() const;
178 virtual void getDocumentLinks(AccessibilityChildrenVector
&);
179 virtual FrameView
* documentFrameView() const;
180 virtual String
language() const;
182 virtual const AccessibilityChildrenVector
& children();
184 virtual void setFocused(bool);
185 virtual void setSelectedTextRange(const PlainTextRange
&);
186 virtual void setValue(const String
&);
188 virtual void detach();
189 virtual void childrenChanged();
190 virtual void addChildren();
191 virtual bool canHaveChildren() const;
192 virtual void selectedChildren(AccessibilityChildrenVector
&);
193 virtual void visibleChildren(AccessibilityChildrenVector
&);
194 virtual bool shouldFocusActiveDescendant() const;
195 virtual AccessibilityObject
* activeDescendant() const;
196 virtual void handleActiveDescendantChanged();
198 virtual VisiblePositionRange
visiblePositionRange() const;
199 virtual VisiblePositionRange
visiblePositionRangeForLine(unsigned) const;
200 virtual IntRect
boundsForVisiblePositionRange(const VisiblePositionRange
&) const;
201 virtual void setSelectedVisiblePositionRange(const VisiblePositionRange
&) const;
203 virtual VisiblePosition
visiblePositionForPoint(const IntPoint
&) const;
204 virtual VisiblePosition
visiblePositionForIndex(unsigned indexValue
, bool lastIndexOK
) const;
205 virtual int index(const VisiblePosition
&) const;
207 virtual VisiblePosition
visiblePositionForIndex(int) const;
208 virtual int indexForVisiblePosition(const VisiblePosition
&) const;
210 virtual PlainTextRange
doAXRangeForLine(unsigned) const;
211 virtual PlainTextRange
doAXRangeForIndex(unsigned) const;
213 virtual String
doAXStringForRange(const PlainTextRange
&) const;
214 virtual IntRect
doAXBoundsForRange(const PlainTextRange
&) const;
216 virtual void updateBackingStore();
219 RenderObject
* m_renderer
;
220 AccessibilityRole m_ariaRole
;
221 mutable bool m_childrenDirty
;
223 void setRenderObject(RenderObject
* renderer
) { m_renderer
= renderer
; }
225 virtual bool isDetached() const { return !m_renderer
; }
228 void ariaListboxSelectedChildren(AccessibilityChildrenVector
&);
229 void ariaListboxVisibleChildren(AccessibilityChildrenVector
&);
230 bool ariaIsHidden() const;
232 Element
* menuElementForMenuButton() const;
233 Element
* menuItemElementForMenu() const;
234 AccessibilityRole
determineAriaRoleAttribute() const;
236 IntRect
checkboxOrRadioRect() const;
237 void addRadioButtonGroupMembers(AccessibilityChildrenVector
& linkedUIElements
) const;
238 AccessibilityObject
* internalLinkElement() const;
239 AccessibilityObject
* accessibilityImageMapHitTest(HTMLAreaElement
*, const IntPoint
&) const;
240 AccessibilityObject
* accessibilityParentForImageMap(HTMLMapElement
* map
) const;
242 void markChildrenDirty() const { m_childrenDirty
= true; }
245 } // namespace WebCore
247 #endif // AccessibilityRenderObject_h