Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(527)

Side by Side Diff: Source/core/accessibility/AXNodeObject.h

Issue 713933002: Create Source/modules/accessibility/ and move most of core/accessibility/* into it (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 /*
2 * Copyright (C) 2012, Google 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 AXNodeObject_h
30 #define AXNodeObject_h
31
32 #include "core/accessibility/AXObject.h"
33 #include "wtf/Forward.h"
34
35 namespace blink {
36
37 class Element;
38 class HTMLLabelElement;
39 class LayoutRect;
40 class Node;
41
42 class AXNodeObject : public AXObject {
43 protected:
44 explicit AXNodeObject(Node*);
45
46 public:
47 static PassRefPtr<AXNodeObject> create(Node*);
48 virtual ~AXNodeObject();
49
50 protected:
51 // Protected data.
52 AccessibilityRole m_ariaRole;
53 bool m_childrenDirty;
54 #if ENABLE(ASSERT)
55 bool m_initialized;
56 #endif
57
58 virtual bool computeAccessibilityIsIgnored() const override;
59 virtual AccessibilityRole determineAccessibilityRole();
60
61 String accessibilityDescriptionForElements(WillBeHeapVector<RawPtrWillBeMemb er<Element> > &elements) const;
62 void alterSliderValue(bool increase);
63 String ariaAccessibilityDescription() const;
64 void ariaLabeledByElements(WillBeHeapVector<RawPtrWillBeMember<Element> >& e lements) const;
65 void changeValueByStep(bool increase);
66 AccessibilityRole determineAriaRoleAttribute() const;
67 void elementsFromAttribute(WillBeHeapVector<RawPtrWillBeMember<Element> >& e lements, const QualifiedName&) const;
68 bool hasContentEditableAttributeSet() const;
69 bool isDescendantOfBarrenParent() const;
70 // This returns true if it's focusable but it's not content editable and it' s not a control or ARIA control.
71 bool isGenericFocusableElement() const;
72 HTMLLabelElement* labelForElement(Element*) const;
73 AXObject* menuButtonForMenu() const;
74 Element* menuItemElementForMenu() const;
75 Element* mouseButtonListener() const;
76 AccessibilityRole remapAriaRoleDueToParent(AccessibilityRole) const;
77 bool isNativeCheckboxOrRadio() const;
78 void setNode(Node*);
79 AXObject* correspondingControlForLabelElement() const;
80 HTMLLabelElement* labelElementContainer() const;
81
82 //
83 // Overridden from AXObject.
84 //
85
86 virtual void init() override;
87 virtual void detach() override;
88 virtual bool isDetached() const override { return !m_node; }
89 virtual bool isAXNodeObject() const override final { return true; }
90
91 // Check object role or purpose.
92 virtual bool isAnchor() const override final;
93 virtual bool isControl() const override;
94 virtual bool isEmbeddedObject() const override final;
95 virtual bool isFieldset() const override final;
96 virtual bool isHeading() const override final;
97 virtual bool isHovered() const override final;
98 virtual bool isImage() const override final;
99 bool isImageButton() const;
100 virtual bool isInputImage() const override final;
101 virtual bool isLink() const override final;
102 virtual bool isMenu() const override final;
103 virtual bool isMenuButton() const override final;
104 virtual bool isMultiSelectable() const override;
105 bool isNativeImage() const;
106 virtual bool isNativeTextControl() const override final;
107 virtual bool isNonNativeTextControl() const override final;
108 virtual bool isPasswordField() const override final;
109 virtual bool isProgressIndicator() const override;
110 virtual bool isSlider() const override;
111
112 // Check object state.
113 virtual bool isChecked() const override final;
114 virtual bool isClickable() const override final;
115 virtual bool isEnabled() const override;
116 virtual AccessibilityExpanded isExpanded() const override;
117 virtual bool isIndeterminate() const override final;
118 virtual bool isPressed() const override final;
119 virtual bool isReadOnly() const override;
120 virtual bool isRequired() const override final;
121
122 // Check whether certain properties can be modified.
123 virtual bool canSetFocusAttribute() const override;
124 virtual bool canSetValueAttribute() const override;
125
126 // Properties of static elements.
127 virtual bool canvasHasFallbackContent() const override final;
128 virtual bool exposesTitleUIElement() const override;
129 virtual int headingLevel() const override final;
130 virtual unsigned hierarchicalLevel() const override final;
131 virtual String text() const override;
132 virtual AXObject* titleUIElement() const override;
133
134 // Properties of interactive elements.
135 virtual AccessibilityButtonState checkboxOrRadioValue() const override final ;
136 virtual void colorValue(int& r, int& g, int& b) const override final;
137 virtual String valueDescription() const override;
138 virtual float valueForRange() const override;
139 virtual float maxValueForRange() const override;
140 virtual float minValueForRange() const override;
141 virtual String stringValue() const override;
142 virtual const AtomicString& textInputType() const override;
143
144 // ARIA attributes.
145 virtual String ariaDescribedByAttribute() const override final;
146 virtual String ariaLabeledByAttribute() const override final;
147 virtual AccessibilityRole ariaRoleAttribute() const override final;
148
149 // Accessibility Text.
150 virtual String textUnderElement() const override;
151
152 // Accessibility Text - (To be deprecated).
153 virtual String accessibilityDescription() const override;
154 virtual String title() const override;
155 virtual String helpText() const override;
156
157 // Location and click point in frame-relative coordinates.
158 virtual LayoutRect elementRect() const override;
159
160 // High-level accessibility tree access.
161 virtual AXObject* computeParent() const override;
162 virtual AXObject* computeParentIfExists() const override;
163
164 // Low-level accessibility tree exploration.
165 virtual AXObject* firstChild() const override;
166 virtual AXObject* nextSibling() const override;
167 virtual void addChildren() override;
168 virtual bool canHaveChildren() const override;
169 void addChild(AXObject*);
170 void insertChild(AXObject*, unsigned index);
171
172 // DOM and Render tree access.
173 virtual Element* actionElement() const override final;
174 virtual Element* anchorElement() const override;
175 virtual Document* document() const override;
176 virtual Node* node() const override { return m_node; }
177
178 // Modify or take an action on an object.
179 virtual void setFocused(bool) override final;
180 virtual void increment() override final;
181 virtual void decrement() override final;
182
183 // Notifications that this object may have changed.
184 virtual void childrenChanged() override;
185 virtual void selectionChanged() override final;
186 virtual void textChanged() override;
187 virtual void updateAccessibilityRole() override final;
188
189 private:
190 Node* m_node;
191
192 String alternativeTextForWebArea() const;
193 void alternativeText(Vector<AccessibilityText>&) const;
194 void ariaLabeledByText(Vector<AccessibilityText>&) const;
195 void changeValueByPercent(float percentChange);
196 float stepValueForRange() const;
197 };
198
199 DEFINE_AX_OBJECT_TYPE_CASTS(AXNodeObject, isAXNodeObject());
200
201 } // namespace blink
202
203 #endif // AXNodeObject_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698