| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "content/browser/accessibility/browser_accessibility_android.h" | 5 #include "content/browser/accessibility/browser_accessibility_android.h" |
| 6 | 6 |
| 7 #include "base/strings/utf_string_conversions.h" | 7 #include "base/strings/utf_string_conversions.h" |
| 8 #include "content/browser/accessibility/browser_accessibility_manager_android.h" | 8 #include "content/browser/accessibility/browser_accessibility_manager_android.h" |
| 9 #include "content/common/accessibility_messages.h" | 9 #include "content/common/accessibility_messages.h" |
| 10 | 10 |
| (...skipping 289 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 300 | 300 |
| 301 // If there's no text value, the basic rule is: prefer description | 301 // If there's no text value, the basic rule is: prefer description |
| 302 // (aria-labelledby or aria-label), then help (title), then name | 302 // (aria-labelledby or aria-label), then help (title), then name |
| 303 // (inner text), then value (control value). However, if | 303 // (inner text), then value (control value). However, if |
| 304 // title_elem_id is set, that means there's a label element | 304 // title_elem_id is set, that means there's a label element |
| 305 // supplying the name and then name takes precedence over help. | 305 // supplying the name and then name takes precedence over help. |
| 306 // TODO(dmazzoni): clean this up by providing more granular labels in | 306 // TODO(dmazzoni): clean this up by providing more granular labels in |
| 307 // Blink, making the platform-specific mapping to accessible text simpler. | 307 // Blink, making the platform-specific mapping to accessible text simpler. |
| 308 base::string16 description = GetString16Attribute(ui::AX_ATTR_DESCRIPTION); | 308 base::string16 description = GetString16Attribute(ui::AX_ATTR_DESCRIPTION); |
| 309 base::string16 help = GetString16Attribute(ui::AX_ATTR_HELP); | 309 base::string16 help = GetString16Attribute(ui::AX_ATTR_HELP); |
| 310 base::string16 placeholder; |
| 311 GetHtmlAttribute("placeholder", &placeholder); |
| 310 int title_elem_id = GetIntAttribute( | 312 int title_elem_id = GetIntAttribute( |
| 311 ui::AX_ATTR_TITLE_UI_ELEMENT); | 313 ui::AX_ATTR_TITLE_UI_ELEMENT); |
| 312 base::string16 text; | 314 base::string16 text; |
| 313 if (!description.empty()) | 315 if (!description.empty()) |
| 314 text = description; | 316 text = description; |
| 315 else if (title_elem_id && !name().empty()) | 317 else if (title_elem_id && !name().empty()) |
| 316 text = base::UTF8ToUTF16(name()); | 318 text = base::UTF8ToUTF16(name()); |
| 317 else if (!help.empty()) | 319 else if (!help.empty()) |
| 318 text = help; | 320 text = help; |
| 319 else if (!name().empty()) | 321 else if (!name().empty()) |
| 320 text = base::UTF8ToUTF16(name()); | 322 text = base::UTF8ToUTF16(name()); |
| 323 else if (GetRole() == ui::AX_ROLE_TEXT_FIELD && !placeholder.empty()) |
| 324 text = placeholder; |
| 321 else if (!value().empty()) | 325 else if (!value().empty()) |
| 322 text = base::UTF8ToUTF16(value()); | 326 text = base::UTF8ToUTF16(value()); |
| 323 | 327 |
| 324 // This is called from PlatformIsLeaf, so don't call PlatformChildCount | 328 // This is called from PlatformIsLeaf, so don't call PlatformChildCount |
| 325 // from within this! | 329 // from within this! |
| 326 if (text.empty() && HasOnlyStaticTextChildren()) { | 330 if (text.empty() && HasOnlyStaticTextChildren()) { |
| 327 for (uint32 i = 0; i < InternalChildCount(); i++) { | 331 for (uint32 i = 0; i < InternalChildCount(); i++) { |
| 328 BrowserAccessibility* child = InternalGetChild(i); | 332 BrowserAccessibility* child = InternalGetChild(i); |
| 329 text += static_cast<BrowserAccessibilityAndroid*>(child)->GetText(); | 333 text += static_cast<BrowserAccessibilityAndroid*>(child)->GetText(); |
| 330 } | 334 } |
| (...skipping 333 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 664 int BrowserAccessibilityAndroid::CountChildrenWithRole(ui::AXRole role) const { | 668 int BrowserAccessibilityAndroid::CountChildrenWithRole(ui::AXRole role) const { |
| 665 int count = 0; | 669 int count = 0; |
| 666 for (uint32 i = 0; i < PlatformChildCount(); i++) { | 670 for (uint32 i = 0; i < PlatformChildCount(); i++) { |
| 667 if (PlatformGetChild(i)->GetRole() == role) | 671 if (PlatformGetChild(i)->GetRole() == role) |
| 668 count++; | 672 count++; |
| 669 } | 673 } |
| 670 return count; | 674 return count; |
| 671 } | 675 } |
| 672 | 676 |
| 673 } // namespace content | 677 } // namespace content |
| OLD | NEW |