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

Unified Diff: content/browser/accessibility/accessibility_tree_formatter_blink.cc

Issue 2587343004: Finish implementation and tests of 5 ARIA 1.1 attributes. (Closed)
Patch Set: Rebase on previous change Created 4 years 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | content/browser/accessibility/browser_accessibility_cocoa.mm » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/accessibility/accessibility_tree_formatter_blink.cc
diff --git a/content/browser/accessibility/accessibility_tree_formatter_blink.cc b/content/browser/accessibility/accessibility_tree_formatter_blink.cc
index 00d9a0693847085b85d48198cbd752c625420ad1..bea82a365b616795ab3d59ccd33b9367de5e0038 100644
--- a/content/browser/accessibility/accessibility_tree_formatter_blink.cc
+++ b/content/browser/accessibility/accessibility_tree_formatter_blink.cc
@@ -7,6 +7,7 @@
#include "base/strings/string_number_conversions.h"
#include "base/strings/stringprintf.h"
#include "content/browser/accessibility/accessibility_tree_formatter_blink.h"
+#include "content/browser/accessibility/browser_accessibility_manager.h"
#include "ui/gfx/geometry/rect_conversions.h"
#include "ui/gfx/transform.h"
@@ -79,8 +80,20 @@ void AccessibilityTreeFormatterBlink::AddProperties(
attr_index <= ui::AX_INT_ATTRIBUTE_LAST;
++attr_index) {
auto attr = static_cast<ui::AXIntAttribute>(attr_index);
- if (node.HasIntAttribute(attr))
- dict->SetInteger(ui::ToString(attr), node.GetIntAttribute(attr));
+ if (node.HasIntAttribute(attr)) {
+ int value = node.GetIntAttribute(attr);
+ if (ui::IsNodeIdIntAttribute(attr)) {
+ BrowserAccessibility* target = node.manager()->GetFromID(value);
+ if (target) {
+ dict->SetString(ui::ToString(attr),
+ ui::ToString(target->GetData().role));
+ } else {
+ dict->SetString(ui::ToString(attr), "null");
+ }
+ } else {
+ dict->SetInteger(ui::ToString(attr), value);
+ }
+ }
}
for (int attr_index = ui::AX_FLOAT_ATTRIBUTE_NONE;
@@ -107,8 +120,17 @@ void AccessibilityTreeFormatterBlink::AddProperties(
std::vector<int32_t> values;
node.GetIntListAttribute(attr, &values);
base::ListValue* value_list = new base::ListValue;
- for (size_t i = 0; i < values.size(); ++i)
- value_list->AppendInteger(values[i]);
+ for (size_t i = 0; i < values.size(); ++i) {
+ if (ui::IsNodeIdIntListAttribute(attr)) {
+ BrowserAccessibility* target = node.manager()->GetFromID(values[i]);
+ if (target)
+ value_list->AppendString(ui::ToString(target->GetData().role));
+ else
+ value_list->AppendString("null");
+ } else {
+ value_list->AppendInteger(values[i]);
+ }
+ }
dict->Set(ui::ToString(attr), value_list);
}
}
@@ -178,15 +200,27 @@ base::string16 AccessibilityTreeFormatterBlink::ToString(
attr_index <= ui::AX_INT_ATTRIBUTE_LAST;
++attr_index) {
auto attr = static_cast<ui::AXIntAttribute>(attr_index);
- int int_value;
- if (!dict.GetInteger(ui::ToString(attr), &int_value))
- continue;
- WriteAttribute(false,
- base::StringPrintf(
- "%s=%d",
- ui::ToString(attr).c_str(),
- int_value),
- &line);
+ if (ui::IsNodeIdIntAttribute(attr)) {
+ std::string string_value;
+ if (dict.GetString(ui::ToString(attr), &string_value)) {
+ WriteAttribute(false,
+ base::StringPrintf(
+ "%s=%s",
+ ui::ToString(attr).c_str(),
+ string_value.c_str()),
+ &line);
+ }
+ } else {
+ int int_value;
+ if (!dict.GetInteger(ui::ToString(attr), &int_value))
+ continue;
+ WriteAttribute(false,
+ base::StringPrintf(
+ "%s=%d",
+ ui::ToString(attr).c_str(),
+ int_value),
+ &line);
+ }
}
for (int attr_index = ui::AX_BOOL_ATTRIBUTE_NONE;
@@ -213,11 +247,17 @@ base::string16 AccessibilityTreeFormatterBlink::ToString(
continue;
std::string attr_string = ui::ToString(attr) + "=";
for (size_t i = 0; i < value->GetSize(); ++i) {
- int int_value;
- value->GetInteger(i, &int_value);
if (i > 0)
attr_string += ",";
- attr_string += base::IntToString(int_value);
+ if (ui::IsNodeIdIntListAttribute(attr)) {
+ std::string string_value;
+ value->GetString(i, &string_value);
+ attr_string += string_value;
+ } else {
+ int int_value;
+ value->GetInteger(i, &int_value);
+ attr_string += base::IntToString(int_value);
+ }
}
WriteAttribute(false, attr_string, &line);
}
« no previous file with comments | « no previous file | content/browser/accessibility/browser_accessibility_cocoa.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698