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

Side by Side Diff: third_party/WebKit/Source/core/dom/AccessibleNode.cpp

Issue 2788523002: Finish all string attributes for Accessibility Object Model Phase 1. (Closed)
Patch Set: Test that checked works with true/false, not only 'true' and 'false' Created 3 years, 8 months 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
1 // Copyright 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "core/dom/AccessibleNode.h" 5 #include "core/dom/AccessibleNode.h"
6 6
7 #include "core/dom/AXObjectCache.h" 7 #include "core/dom/AXObjectCache.h"
8 #include "core/dom/Element.h" 8 #include "core/dom/Element.h"
9 #include "core/dom/QualifiedName.h" 9 #include "core/dom/QualifiedName.h"
10 #include "core/frame/Settings.h" 10 #include "core/frame/Settings.h"
(...skipping 14 matching lines...) Expand all
25 25
26 if (AccessibleNode* accessibleNode = element->existingAccessibleNode()) { 26 if (AccessibleNode* accessibleNode = element->existingAccessibleNode()) {
27 for (const auto& item : accessibleNode->m_stringProperties) { 27 for (const auto& item : accessibleNode->m_stringProperties) {
28 if (item.first == property) 28 if (item.first == property)
29 return item.second; 29 return item.second;
30 } 30 }
31 } 31 }
32 32
33 // Fall back on the equivalent ARIA attribute. 33 // Fall back on the equivalent ARIA attribute.
34 switch (property) { 34 switch (property) {
35 case AOMStringProperty::kAutocomplete:
36 return element->getAttribute(HTMLNames::aria_autocompleteAttr);
37 case AOMStringProperty::kChecked:
38 return element->getAttribute(HTMLNames::aria_checkedAttr);
39 case AOMStringProperty::kCurrent:
40 return element->getAttribute(HTMLNames::aria_currentAttr);
41 case AOMStringProperty::kInvalid:
42 return element->getAttribute(HTMLNames::aria_invalidAttr);
43 case AOMStringProperty::kKeyShortcuts:
44 return element->getAttribute(HTMLNames::aria_keyshortcutsAttr);
45 case AOMStringProperty::kLabel:
46 return element->getAttribute(HTMLNames::aria_labelAttr);
47 case AOMStringProperty::kLive:
48 return element->getAttribute(HTMLNames::aria_liveAttr);
49 case AOMStringProperty::kOrientation:
50 return element->getAttribute(HTMLNames::aria_orientationAttr);
51 case AOMStringProperty::kPlaceholder:
52 return element->getAttribute(HTMLNames::aria_placeholderAttr);
53 case AOMStringProperty::kRelevant:
54 return element->getAttribute(HTMLNames::aria_relevantAttr);
35 case AOMStringProperty::kRole: 55 case AOMStringProperty::kRole:
36 return element->getAttribute(HTMLNames::roleAttr); 56 return element->getAttribute(HTMLNames::roleAttr);
37 case AOMStringProperty::kLabel: 57 case AOMStringProperty::kRoleDescription:
38 return element->getAttribute(HTMLNames::aria_labelAttr); 58 return element->getAttribute(HTMLNames::aria_roledescriptionAttr);
59 case AOMStringProperty::kSort:
60 return element->getAttribute(HTMLNames::aria_sortAttr);
61 case AOMStringProperty::kValueText:
62 return element->getAttribute(HTMLNames::aria_valuetextAttr);
39 default: 63 default:
esprehn 2017/04/04 06:22:30 If you remove the default it'll fail to compile if
dmazzoni 2017/04/04 18:59:17 Done.
40 NOTREACHED(); 64 NOTREACHED();
41 return nullAtom; 65 return nullAtom;
42 } 66 }
43 } 67 }
44 68
69 AtomicString AccessibleNode::autocomplete() const {
70 return getProperty(m_element, AOMStringProperty::kAutocomplete);
71 }
72
73 void AccessibleNode::setAutocomplete(const AtomicString& autocomplete) {
74 setStringProperty(AOMStringProperty::kAutocomplete, autocomplete);
75
76 if (AXObjectCache* cache = m_element->document().axObjectCache())
esprehn 2017/04/04 06:22:30 You do this same thing everywhere, maybe you want
dmazzoni 2017/04/04 18:59:17 Done. Actually, glad I looked at this. We should
77 cache->handleAttributeChanged(HTMLNames::aria_autocompleteAttr, m_element);
78 }
79
80 AtomicString AccessibleNode::checked() const {
81 return getProperty(m_element, AOMStringProperty::kChecked);
82 }
83
84 void AccessibleNode::setChecked(const AtomicString& checked) {
85 setStringProperty(AOMStringProperty::kChecked, checked);
86
87 if (AXObjectCache* cache = m_element->document().axObjectCache())
88 cache->handleAttributeChanged(HTMLNames::aria_checkedAttr, m_element);
89 }
90
91 AtomicString AccessibleNode::current() const {
92 return getProperty(m_element, AOMStringProperty::kCurrent);
93 }
94
95 void AccessibleNode::setCurrent(const AtomicString& current) {
96 setStringProperty(AOMStringProperty::kCurrent, current);
97
98 if (AXObjectCache* cache = m_element->document().axObjectCache())
99 cache->handleAttributeChanged(HTMLNames::aria_currentAttr, m_element);
100 }
101
102 AtomicString AccessibleNode::invalid() const {
103 return getProperty(m_element, AOMStringProperty::kInvalid);
104 }
105
106 void AccessibleNode::setInvalid(const AtomicString& invalid) {
107 setStringProperty(AOMStringProperty::kInvalid, invalid);
108
109 if (AXObjectCache* cache = m_element->document().axObjectCache())
110 cache->handleAttributeChanged(HTMLNames::aria_invalidAttr, m_element);
111 }
112
113 AtomicString AccessibleNode::keyShortcuts() const {
114 return getProperty(m_element, AOMStringProperty::kKeyShortcuts);
115 }
116
117 void AccessibleNode::setKeyShortcuts(const AtomicString& keyShortcuts) {
118 setStringProperty(AOMStringProperty::kKeyShortcuts, keyShortcuts);
119
120 if (AXObjectCache* cache = m_element->document().axObjectCache())
121 cache->handleAttributeChanged(HTMLNames::aria_keyshortcutsAttr, m_element);
122 }
123
124 AtomicString AccessibleNode::label() const {
125 return getProperty(m_element, AOMStringProperty::kLabel);
126 }
127
128 void AccessibleNode::setLabel(const AtomicString& label) {
129 setStringProperty(AOMStringProperty::kLabel, label);
130
131 if (AXObjectCache* cache = m_element->document().axObjectCache())
132 cache->handleAttributeChanged(HTMLNames::aria_labelAttr, m_element);
133 }
134
135 AtomicString AccessibleNode::live() const {
136 return getProperty(m_element, AOMStringProperty::kLive);
137 }
138
139 void AccessibleNode::setLive(const AtomicString& live) {
140 setStringProperty(AOMStringProperty::kLive, live);
141
142 if (AXObjectCache* cache = m_element->document().axObjectCache())
143 cache->handleAttributeChanged(HTMLNames::aria_liveAttr, m_element);
144 }
145
146 AtomicString AccessibleNode::orientation() const {
147 return getProperty(m_element, AOMStringProperty::kOrientation);
148 }
149
150 void AccessibleNode::setOrientation(const AtomicString& orientation) {
151 setStringProperty(AOMStringProperty::kOrientation, orientation);
152
153 if (AXObjectCache* cache = m_element->document().axObjectCache())
154 cache->handleAttributeChanged(HTMLNames::aria_orientationAttr, m_element);
155 }
156
157 AtomicString AccessibleNode::placeholder() const {
158 return getProperty(m_element, AOMStringProperty::kPlaceholder);
159 }
160
161 void AccessibleNode::setPlaceholder(const AtomicString& placeholder) {
162 setStringProperty(AOMStringProperty::kPlaceholder, placeholder);
163
164 if (AXObjectCache* cache = m_element->document().axObjectCache())
165 cache->handleAttributeChanged(HTMLNames::aria_placeholderAttr, m_element);
166 }
167
168 AtomicString AccessibleNode::relevant() const {
169 return getProperty(m_element, AOMStringProperty::kRelevant);
170 }
171
172 void AccessibleNode::setRelevant(const AtomicString& relevant) {
173 setStringProperty(AOMStringProperty::kRelevant, relevant);
174
175 if (AXObjectCache* cache = m_element->document().axObjectCache())
176 cache->handleAttributeChanged(HTMLNames::aria_relevantAttr, m_element);
177 }
178
45 AtomicString AccessibleNode::role() const { 179 AtomicString AccessibleNode::role() const {
46 return getProperty(m_element, AOMStringProperty::kRole); 180 return getProperty(m_element, AOMStringProperty::kRole);
47 } 181 }
48 182
49 void AccessibleNode::setRole(const AtomicString& role) { 183 void AccessibleNode::setRole(const AtomicString& role) {
50 setStringProperty(AOMStringProperty::kRole, role); 184 setStringProperty(AOMStringProperty::kRole, role);
51 185
52 // TODO(dmazzoni): Make a cleaner API for this rather than pretending 186 // TODO(dmazzoni): Make a cleaner API for this rather than pretending
53 // the DOM attribute changed. 187 // the DOM attribute changed.
54 if (AXObjectCache* cache = m_element->document().axObjectCache()) 188 if (AXObjectCache* cache = m_element->document().axObjectCache())
55 cache->handleAttributeChanged(HTMLNames::roleAttr, m_element); 189 cache->handleAttributeChanged(HTMLNames::roleAttr, m_element);
56 } 190 }
57 191
58 AtomicString AccessibleNode::label() const { 192 AtomicString AccessibleNode::roleDescription() const {
59 return getProperty(m_element, AOMStringProperty::kLabel); 193 return getProperty(m_element, AOMStringProperty::kRoleDescription);
60 } 194 }
61 195
62 void AccessibleNode::setLabel(const AtomicString& label) { 196 void AccessibleNode::setRoleDescription(const AtomicString& roleDescription) {
63 setStringProperty(AOMStringProperty::kLabel, label); 197 setStringProperty(AOMStringProperty::kRoleDescription, roleDescription);
198
199 if (AXObjectCache* cache = m_element->document().axObjectCache()) {
200 cache->handleAttributeChanged(HTMLNames::aria_roledescriptionAttr,
201 m_element);
202 }
203 }
204
205 AtomicString AccessibleNode::sort() const {
206 return getProperty(m_element, AOMStringProperty::kSort);
207 }
208
209 void AccessibleNode::setSort(const AtomicString& sort) {
210 setStringProperty(AOMStringProperty::kSort, sort);
64 211
65 if (AXObjectCache* cache = m_element->document().axObjectCache()) 212 if (AXObjectCache* cache = m_element->document().axObjectCache())
66 cache->handleAttributeChanged(HTMLNames::aria_labelAttr, m_element); 213 cache->handleAttributeChanged(HTMLNames::aria_sortAttr, m_element);
214 }
215
216 AtomicString AccessibleNode::valueText() const {
217 return getProperty(m_element, AOMStringProperty::kValueText);
218 }
219
220 void AccessibleNode::setValueText(const AtomicString& valueText) {
221 setStringProperty(AOMStringProperty::kValueText, valueText);
222
223 if (AXObjectCache* cache = m_element->document().axObjectCache())
224 cache->handleAttributeChanged(HTMLNames::aria_valuetextAttr, m_element);
67 } 225 }
68 226
69 void AccessibleNode::setStringProperty(AOMStringProperty property, 227 void AccessibleNode::setStringProperty(AOMStringProperty property,
70 const AtomicString& value) { 228 const AtomicString& value) {
71 for (auto& item : m_stringProperties) { 229 for (auto& item : m_stringProperties) {
72 if (item.first == property) { 230 if (item.first == property) {
73 item.second = value; 231 item.second = value;
74 return; 232 return;
75 } 233 }
76 } 234 }
77 235
78 m_stringProperties.push_back(std::make_pair(property, value)); 236 m_stringProperties.push_back(std::make_pair(property, value));
79 } 237 }
80 238
81 DEFINE_TRACE(AccessibleNode) { 239 DEFINE_TRACE(AccessibleNode) {
82 visitor->trace(m_element); 240 visitor->trace(m_element);
83 } 241 }
84 242
85 } // namespace blink 243 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698