OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2008, 2009, 2011 Apple Inc. All rights reserved. | 2 * Copyright (C) 2008, 2009, 2011 Apple 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 299 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
310 | 310 |
311 bool AXObject::isPasswordFieldAndShouldHideValue() const | 311 bool AXObject::isPasswordFieldAndShouldHideValue() const |
312 { | 312 { |
313 Settings* settings = document()->settings(); | 313 Settings* settings = document()->settings(); |
314 if (!settings || settings->accessibilityPasswordValuesEnabled()) | 314 if (!settings || settings->accessibilityPasswordValuesEnabled()) |
315 return false; | 315 return false; |
316 | 316 |
317 return isPasswordField(); | 317 return isPasswordField(); |
318 } | 318 } |
319 | 319 |
| 320 // If you call node->hasEditableStyle() since that will return true if an ancest
or is editable. |
| 321 // This only returns true if this is the element that actually has the contentEd
itable attribute set. |
| 322 bool AXObject::hasContentEditableAttributeSet() const |
| 323 { |
| 324 if (!hasAttribute(contenteditableAttr)) |
| 325 return false; |
| 326 const AtomicString& contentEditableValue = getAttribute(contenteditableAttr)
; |
| 327 // Both "true" (case-insensitive) and the empty string count as true. |
| 328 return contentEditableValue.isEmpty() || equalIgnoringCase(contentEditableVa
lue, "true"); |
| 329 } |
| 330 |
320 bool AXObject::isTextControl() const | 331 bool AXObject::isTextControl() const |
321 { | 332 { |
| 333 if (hasContentEditableAttributeSet()) |
| 334 return true; |
| 335 |
322 switch (roleValue()) { | 336 switch (roleValue()) { |
323 case TextAreaRole: | 337 case TextAreaRole: |
324 case TextFieldRole: | 338 case TextFieldRole: |
325 case ComboBoxRole: | 339 case ComboBoxRole: |
326 case SearchBoxRole: | 340 case SearchBoxRole: |
327 return true; | 341 return true; |
328 default: | 342 default: |
329 return false; | 343 return false; |
330 } | 344 } |
331 } | 345 } |
(...skipping 811 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1143 } | 1157 } |
1144 | 1158 |
1145 const AtomicString& AXObject::roleName(AccessibilityRole role) | 1159 const AtomicString& AXObject::roleName(AccessibilityRole role) |
1146 { | 1160 { |
1147 static const Vector<AtomicString>* roleNameVector = createRoleNameVector(); | 1161 static const Vector<AtomicString>* roleNameVector = createRoleNameVector(); |
1148 | 1162 |
1149 return roleNameVector->at(role); | 1163 return roleNameVector->at(role); |
1150 } | 1164 } |
1151 | 1165 |
1152 } // namespace blink | 1166 } // namespace blink |
OLD | NEW |