| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2012, Google Inc. All rights reserved. | 2 * Copyright (C) 2012, Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
| 6 * are met: | 6 * are met: |
| 7 * | 7 * |
| 8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
| (...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 234 if (type == InputTypeNames::range) | 234 if (type == InputTypeNames::range) |
| 235 return SliderRole; | 235 return SliderRole; |
| 236 if (type == InputTypeNames::color) | 236 if (type == InputTypeNames::color) |
| 237 return ColorWellRole; | 237 return ColorWellRole; |
| 238 if (type == InputTypeNames::time) | 238 if (type == InputTypeNames::time) |
| 239 return TimeRole; | 239 return TimeRole; |
| 240 return TextFieldRole; | 240 return TextFieldRole; |
| 241 } | 241 } |
| 242 if (isHTMLSelectElement(*node())) { | 242 if (isHTMLSelectElement(*node())) { |
| 243 HTMLSelectElement& selectElement = toHTMLSelectElement(*node()); | 243 HTMLSelectElement& selectElement = toHTMLSelectElement(*node()); |
| 244 return selectElement.multiple() ? ListBoxRole : PopUpButtonRole; | 244 return (selectElement.multiple() || selectElement.size() > 1) ? ListBoxR
ole : PopUpButtonRole; |
| 245 } | 245 } |
| 246 if (isHTMLTextAreaElement(*node())) | 246 if (isHTMLTextAreaElement(*node())) |
| 247 return TextAreaRole; | 247 return TextAreaRole; |
| 248 if (headingLevel()) | 248 if (headingLevel()) |
| 249 return HeadingRole; | 249 return HeadingRole; |
| 250 if (isHTMLDivElement(*node())) | 250 if (isHTMLDivElement(*node())) |
| 251 return DivRole; | 251 return DivRole; |
| 252 if (isHTMLMeterElement(*node())) | 252 if (isHTMLMeterElement(*node())) |
| 253 return MeterRole; | 253 return MeterRole; |
| 254 if (isHTMLOutputElement(*node())) | 254 if (isHTMLOutputElement(*node())) |
| (...skipping 928 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1183 | 1183 |
| 1184 if (isHTMLSelectElement(*node)) { | 1184 if (isHTMLSelectElement(*node)) { |
| 1185 HTMLSelectElement& selectElement = toHTMLSelectElement(*node); | 1185 HTMLSelectElement& selectElement = toHTMLSelectElement(*node); |
| 1186 int selectedIndex = selectElement.selectedIndex(); | 1186 int selectedIndex = selectElement.selectedIndex(); |
| 1187 const WillBeHeapVector<RawPtrWillBeMember<HTMLElement>>& listItems = sel
ectElement.listItems(); | 1187 const WillBeHeapVector<RawPtrWillBeMember<HTMLElement>>& listItems = sel
ectElement.listItems(); |
| 1188 if (selectedIndex >= 0 && static_cast<size_t>(selectedIndex) < listItems
.size()) { | 1188 if (selectedIndex >= 0 && static_cast<size_t>(selectedIndex) < listItems
.size()) { |
| 1189 const AtomicString& overriddenDescription = listItems[selectedIndex]
->fastGetAttribute(aria_labelAttr); | 1189 const AtomicString& overriddenDescription = listItems[selectedIndex]
->fastGetAttribute(aria_labelAttr); |
| 1190 if (!overriddenDescription.isNull()) | 1190 if (!overriddenDescription.isNull()) |
| 1191 return overriddenDescription; | 1191 return overriddenDescription; |
| 1192 } | 1192 } |
| 1193 if (!selectElement.multiple()) | 1193 return selectElement.value(); |
| 1194 return selectElement.value(); | |
| 1195 return String(); | |
| 1196 } | 1194 } |
| 1197 | 1195 |
| 1198 if (isTextControl()) | 1196 if (isTextControl()) |
| 1199 return text(); | 1197 return text(); |
| 1200 | 1198 |
| 1199 // Handle other HTML input elements that aren't text controls, like date and
time |
| 1200 // controls, by returning the string value, with the exception of checkboxes |
| 1201 // and radio buttons (which would return "on"). |
| 1202 if (node && isHTMLInputElement(node)) { |
| 1203 HTMLInputElement* input = toHTMLInputElement(node); |
| 1204 if (input->type() != InputTypeNames::checkbox && input->type() != InputT
ypeNames::radio) |
| 1205 return input->value(); |
| 1206 } |
| 1207 |
| 1201 // FIXME: We might need to implement a value here for more types | 1208 // FIXME: We might need to implement a value here for more types |
| 1202 // FIXME: It would be better not to advertise a value at all for the types f
or which we don't implement one; | 1209 // FIXME: It would be better not to advertise a value at all for the types f
or which we don't implement one; |
| 1203 // this would require subclassing or making accessibilityAttributeNames do s
omething other than return a | 1210 // this would require subclassing or making accessibilityAttributeNames do s
omething other than return a |
| 1204 // single static array. | 1211 // single static array. |
| 1205 return String(); | 1212 return String(); |
| 1206 } | 1213 } |
| 1207 | 1214 |
| 1208 | 1215 |
| 1209 const AtomicString& AXNodeObject::textInputType() const | 1216 const AtomicString& AXNodeObject::textInputType() const |
| 1210 { | 1217 { |
| (...skipping 762 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1973 float range = maxValueForRange() - minValueForRange(); | 1980 float range = maxValueForRange() - minValueForRange(); |
| 1974 float value = valueForRange(); | 1981 float value = valueForRange(); |
| 1975 | 1982 |
| 1976 value += range * (percentChange / 100); | 1983 value += range * (percentChange / 100); |
| 1977 setValue(String::number(value)); | 1984 setValue(String::number(value)); |
| 1978 | 1985 |
| 1979 axObjectCache()->postNotification(node(), AXObjectCacheImpl::AXValueChanged,
true); | 1986 axObjectCache()->postNotification(node(), AXObjectCacheImpl::AXValueChanged,
true); |
| 1980 } | 1987 } |
| 1981 | 1988 |
| 1982 } // namespace blink | 1989 } // namespace blink |
| OLD | NEW |