Updated WebKit from /home/shausman/src/webkit/trunk to qtwebkit-4.6-snapshot-29062009...
[qt-netbsd.git] / src / 3rdparty / webkit / WebCore / accessibility / AccessibilityRenderObject.h
blob4fa325f1373fac3ea7fa4c34e3beadc439f0a33e
1 /*
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
6 * are met:
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"
34 namespace WebCore {
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 VisibleSelection;
55 class String;
56 class Widget;
58 class AccessibilityRenderObject : public AccessibilityObject {
59 protected:
60 AccessibilityRenderObject(RenderObject*);
61 public:
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;
136 void setAriaRole();
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();
218 protected:
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; }
227 private:
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