Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/renderer/accessibility/accessibility_node_serializer.h" | 5 #include "content/renderer/accessibility/accessibility_node_serializer.h" |
| 6 | 6 |
| 7 #include <set> | 7 #include <set> |
| 8 | 8 |
| 9 #include "base/strings/string_number_conversions.h" | 9 #include "base/strings/string_number_conversions.h" |
| 10 #include "base/strings/string_util.h" | 10 #include "base/strings/string_util.h" |
| (...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 117 | 117 |
| 118 if (o.isVertical()) | 118 if (o.isVertical()) |
| 119 state |= (1 << blink::WebAXStateVertical); | 119 state |= (1 << blink::WebAXStateVertical); |
| 120 | 120 |
| 121 if (o.isVisited()) | 121 if (o.isVisited()) |
| 122 state |= (1 << blink::WebAXStateVisited); | 122 state |= (1 << blink::WebAXStateVisited); |
| 123 | 123 |
| 124 return state; | 124 return state; |
| 125 } | 125 } |
| 126 | 126 |
| 127 std::string ConvertRole(const blink::WebAXRole role) { | |
|
dmazzoni
2014/01/05 05:27:38
Let's call this GetEquivalentAriaRoleString.
| |
| 128 switch (role) { | |
| 129 case blink::WebAXRoleArticle: | |
| 130 return "article"; | |
| 131 case blink::WebAXRoleComplementary: | |
| 132 return "complementary"; | |
| 133 case blink::WebAXRoleContentInfo: | |
| 134 case blink::WebAXRoleFooter: | |
| 135 return "contentinfo"; | |
| 136 case blink::WebAXRoleBanner: | |
| 137 return "banner"; | |
| 138 case blink::WebAXRoleMain: | |
| 139 return "main"; | |
| 140 case blink::WebAXRoleNavigation: | |
| 141 return "navigation"; | |
| 142 case blink::WebAXRoleRegion: | |
| 143 return "region"; | |
| 144 default: | |
| 145 break; | |
| 146 } | |
| 147 | |
| 148 return std::string(); | |
| 149 } | |
| 150 | |
| 127 } // Anonymous namespace | 151 } // Anonymous namespace |
| 128 | 152 |
| 129 void SerializeAccessibilityNode( | 153 void SerializeAccessibilityNode( |
| 130 const WebAXObject& src, | 154 const WebAXObject& src, |
| 131 AccessibilityNodeData* dst) { | 155 AccessibilityNodeData* dst) { |
| 132 dst->role = src.role(); | 156 dst->role = src.role(); |
| 133 dst->state = ConvertState(src); | 157 dst->state = ConvertState(src); |
| 134 dst->location = src.boundingBoxRect(); | 158 dst->location = src.boundingBoxRect(); |
| 135 dst->id = src.axID(); | 159 dst->id = src.axID(); |
| 136 std::string name = base::UTF16ToUTF8(src.title()); | 160 std::string name = base::UTF16ToUTF8(src.title()); |
| (...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 271 for (size_t i = 0; i < src_line_breaks.size(); ++i) | 295 for (size_t i = 0; i < src_line_breaks.size(); ++i) |
| 272 line_breaks.push_back(src_line_breaks[i]); | 296 line_breaks.push_back(src_line_breaks[i]); |
| 273 dst->AddIntListAttribute(dst->ATTR_LINE_BREAKS, line_breaks); | 297 dst->AddIntListAttribute(dst->ATTR_LINE_BREAKS, line_breaks); |
| 274 } | 298 } |
| 275 } | 299 } |
| 276 | 300 |
| 277 // ARIA role. | 301 // ARIA role. |
| 278 if (element.hasAttribute("role")) { | 302 if (element.hasAttribute("role")) { |
| 279 dst->AddStringAttribute(dst->ATTR_ROLE, | 303 dst->AddStringAttribute(dst->ATTR_ROLE, |
| 280 base::UTF16ToUTF8(element.getAttribute("role"))); | 304 base::UTF16ToUTF8(element.getAttribute("role"))); |
| 305 } else { | |
| 306 std::string role = ConvertRole(src.role()); | |
| 307 if (!role.empty()) { | |
|
dmazzoni
2014/01/05 05:27:38
Nit: the Chromium style is to not use { } braces w
| |
| 308 dst->AddStringAttribute(dst->ATTR_ROLE, role); | |
| 309 } | |
| 281 } | 310 } |
| 282 | 311 |
| 283 // Live region attributes | 312 // Live region attributes |
| 284 live_atomic = base::UTF16ToUTF8(element.getAttribute("aria-atomic")); | 313 live_atomic = base::UTF16ToUTF8(element.getAttribute("aria-atomic")); |
| 285 live_busy = base::UTF16ToUTF8(element.getAttribute("aria-busy")); | 314 live_busy = base::UTF16ToUTF8(element.getAttribute("aria-busy")); |
| 286 live_status = base::UTF16ToUTF8(element.getAttribute("aria-live")); | 315 live_status = base::UTF16ToUTF8(element.getAttribute("aria-live")); |
| 287 live_relevant = base::UTF16ToUTF8(element.getAttribute("aria-relevant")); | 316 live_relevant = base::UTF16ToUTF8(element.getAttribute("aria-relevant")); |
| 288 } | 317 } |
| 289 | 318 |
| 290 // Walk up the parent chain to set live region attributes of containers | 319 // Walk up the parent chain to set live region attributes of containers |
| (...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 484 WebNode node = parent.node(); | 513 WebNode node = parent.node(); |
| 485 if (!node.isNull() && node.isElementNode()) { | 514 if (!node.isNull() && node.isElementNode()) { |
| 486 WebElement element = node.to<WebElement>(); | 515 WebElement element = node.to<WebElement>(); |
| 487 is_iframe = (element.tagName() == base::ASCIIToUTF16("IFRAME")); | 516 is_iframe = (element.tagName() == base::ASCIIToUTF16("IFRAME")); |
| 488 } | 517 } |
| 489 | 518 |
| 490 return (is_iframe || IsParentUnignoredOf(parent, child)); | 519 return (is_iframe || IsParentUnignoredOf(parent, child)); |
| 491 } | 520 } |
| 492 | 521 |
| 493 } // namespace content | 522 } // namespace content |
| OLD | NEW |