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

Unified Diff: content/renderer/accessibility/blink_ax_tree_source.cc

Issue 1435113003: Make use of new AX name calc in Chromium. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix ChromeVox and Automation API tests Created 5 years, 1 month 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
Index: content/renderer/accessibility/blink_ax_tree_source.cc
diff --git a/content/renderer/accessibility/blink_ax_tree_source.cc b/content/renderer/accessibility/blink_ax_tree_source.cc
index f59517221e2bc6cc0c30d7deb64915e0c5805d93..5f9064d2df96d6af36bfe5b430dadfd106770d19 100644
--- a/content/renderer/accessibility/blink_ax_tree_source.cc
+++ b/content/renderer/accessibility/blink_ax_tree_source.cc
@@ -108,7 +108,11 @@ void AddIntListAttributeFromWebObjects(ui::AXIntListAttribute attr,
dst->AddIntListAttribute(attr, ids);
}
-} // Anonymous namespace
+std::string ToUTF8(const blink::WebString& str) {
+ return UTF16ToUTF8(base::StringPiece16(str));
+}
+
+} // namespace
BlinkAXTreeSource::BlinkAXTreeSource(RenderFrameImpl* render_frame)
: render_frame_(render_frame),
@@ -146,7 +150,7 @@ AXContentTreeData BlinkAXTreeSource::GetTreeData() const {
const WebDocumentType& doctype = document.doctype();
if (!doctype.isNull())
- tree_data.doctype = UTF16ToUTF8(base::StringPiece16(doctype.name()));
+ tree_data.doctype = ToUTF8(doctype.name());
WebAXObject anchor_object, focus_object;
int anchor_offset, focus_offset;
@@ -263,17 +267,38 @@ void BlinkAXTreeSource::SerializeNode(blink::WebAXObject src,
dst->state = AXStateFromBlink(src);
dst->location = src.boundingBoxRect();
dst->id = src.axID();
- std::string name = UTF16ToUTF8(base::StringPiece16(src.deprecatedTitle()));
+
+ blink::WebAXNameFrom nameFrom;
+ blink::WebVector<blink::WebAXObject> nameObjects;
+ blink::WebString web_name = src.name(nameFrom, nameObjects);
+ if (!web_name.isEmpty()) {
+ dst->AddStringAttribute(ui::AX_ATTR_NAME, ToUTF8(web_name));
+ dst->AddIntAttribute(ui::AX_ATTR_NAME_FROM, AXNameFromFromBlink(nameFrom));
+ AddIntListAttributeFromWebObjects(
+ ui::AX_ATTR_LABELLEDBY_IDS, nameObjects, dst);
+ }
+
+ blink::WebAXDescriptionFrom descriptionFrom;
+ blink::WebVector<blink::WebAXObject> descriptionObjects;
+ blink::WebString web_description = src.description(
aboxhall 2015/11/13 23:13:49 more spaces??
dmazzoni 2015/11/16 18:52:04 Same - the code looks fine to me. Is codereview.ch
aboxhall 2015/11/16 22:03:27 Super weird. Yeah, it looks fine now.
+ nameFrom, descriptionFrom, descriptionObjects);
+ if (!web_description.isEmpty()) {
+ dst->AddStringAttribute(ui::AX_ATTR_DESCRIPTION, ToUTF8(web_description));
+ dst->AddIntAttribute(ui::AX_ATTR_DESCRIPTION_FROM,
+ AXDescriptionFromFromBlink(descriptionFrom));
+ AddIntListAttributeFromWebObjects(
+ ui::AX_ATTR_DESCRIBEDBY_IDS, descriptionObjects, dst);
+ }
+
+ blink::WebString web_placeholder = src.placeholder(nameFrom, descriptionFrom);
+ if (!web_placeholder.isEmpty())
+ dst->AddStringAttribute(ui::AX_ATTR_PLACEHOLDER, ToUTF8(web_placeholder));
std::string value;
if (src.valueDescription().length()) {
- dst->AddStringAttribute(ui::AX_ATTR_VALUE,
- UTF16ToUTF8(base::StringPiece16(
- src.valueDescription())));
+ dst->AddStringAttribute(ui::AX_ATTR_VALUE, ToUTF8(src.valueDescription()));
} else {
- dst->AddStringAttribute(
- ui::AX_ATTR_VALUE,
- UTF16ToUTF8(base::StringPiece16(src.stringValue())));
+ dst->AddStringAttribute(ui::AX_ATTR_VALUE, ToUTF8(src.stringValue()));
}
if (dst->role == ui::AX_ROLE_COLOR_WELL)
@@ -297,8 +322,7 @@ void BlinkAXTreeSource::SerializeNode(blink::WebAXObject src,
}
if (src.invalidState() == blink::WebAXInvalidStateOther) {
dst->AddStringAttribute(
- ui::AX_ATTR_ARIA_INVALID_VALUE,
- UTF16ToUTF8(base::StringPiece16(src.ariaInvalidValue())));
+ ui::AX_ATTR_ARIA_INVALID_VALUE, ToUTF8(src.ariaInvalidValue()));
}
if (src.textDirection()) {
@@ -337,53 +361,29 @@ void BlinkAXTreeSource::SerializeNode(blink::WebAXObject src,
}
if (src.accessKey().length()) {
- dst->AddStringAttribute(ui::AX_ATTR_ACCESS_KEY,
- UTF16ToUTF8(base::StringPiece16(src.accessKey())));
+ dst->AddStringAttribute(ui::AX_ATTR_ACCESS_KEY, ToUTF8(src.accessKey()));
}
if (src.actionVerb().length())
- dst->AddStringAttribute(
- ui::AX_ATTR_ACTION,
- UTF16ToUTF8(base::StringPiece16(src.actionVerb())));
+ dst->AddStringAttribute(ui::AX_ATTR_ACTION, ToUTF8(src.actionVerb()));
if (src.ariaAutoComplete().length())
dst->AddStringAttribute(
- ui::AX_ATTR_AUTO_COMPLETE,
- UTF16ToUTF8(base::StringPiece16(src.ariaAutoComplete())));
+ ui::AX_ATTR_AUTO_COMPLETE, ToUTF8(src.ariaAutoComplete()));
if (src.isAriaReadOnly())
dst->AddBoolAttribute(ui::AX_ATTR_ARIA_READONLY, true);
if (src.isButtonStateMixed())
dst->AddBoolAttribute(ui::AX_ATTR_BUTTON_MIXED, true);
if (src.canSetValueAttribute())
dst->AddBoolAttribute(ui::AX_ATTR_CAN_SET_VALUE, true);
- if (src.deprecatedAccessibilityDescription().length()) {
- dst->AddStringAttribute(
- ui::AX_ATTR_DESCRIPTION,
- UTF16ToUTF8(base::StringPiece16(
- src.deprecatedAccessibilityDescription())));
- }
if (src.hasComputedStyle()) {
dst->AddStringAttribute(
- ui::AX_ATTR_DISPLAY,
- UTF16ToUTF8(base::StringPiece16(src.computedStyleDisplay())));
- }
- if (src.deprecatedHelpText().length())
- dst->AddStringAttribute(
- ui::AX_ATTR_HELP,
- UTF16ToUTF8(base::StringPiece16((src.deprecatedHelpText()))));
- if (src.deprecatedPlaceholder().length()) {
- dst->AddStringAttribute(
- ui::AX_ATTR_PLACEHOLDER,
- UTF16ToUTF8(base::StringPiece16(src.deprecatedPlaceholder())));
+ ui::AX_ATTR_DISPLAY, ToUTF8(src.computedStyleDisplay()));
}
if (src.keyboardShortcut().length()) {
dst->AddStringAttribute(
ui::AX_ATTR_SHORTCUT,
UTF16ToUTF8(base::StringPiece16(src.keyboardShortcut())));
}
- if (!src.deprecatedTitleUIElement().isDetached()) {
- dst->AddIntAttribute(ui::AX_ATTR_TITLE_UI_ELEMENT,
- src.deprecatedTitleUIElement().axID());
- }
if (!src.ariaActiveDescendant().isDetached()) {
dst->AddIntAttribute(ui::AX_ATTR_ACTIVEDESCENDANT_ID,
src.ariaActiveDescendant().axID());
@@ -433,8 +433,7 @@ void BlinkAXTreeSource::SerializeNode(blink::WebAXObject src,
for (unsigned i = 0; i < element.attributeCount(); ++i) {
std::string name = base::ToLowerASCII(UTF16ToUTF8(
base::StringPiece16(element.attributeLocalName(i))));
- std::string value =
- UTF16ToUTF8(base::StringPiece16(element.attributeValue(i)));
+ std::string value = ToUTF8(element.attributeValue(i));
dst->html_attributes.push_back(std::make_pair(name, value));
}
@@ -456,8 +455,7 @@ void BlinkAXTreeSource::SerializeNode(blink::WebAXObject src,
// ARIA role.
if (element.hasAttribute("role")) {
dst->AddStringAttribute(
- ui::AX_ATTR_ROLE,
- UTF16ToUTF8(base::StringPiece16(element.getAttribute("role"))));
+ ui::AX_ATTR_ROLE, ToUTF8(element.getAttribute("role")));
} else {
std::string role = GetEquivalentAriaRoleString(dst->role);
if (!role.empty())
@@ -496,22 +494,20 @@ void BlinkAXTreeSource::SerializeNode(blink::WebAXObject src,
dst->state |= (1 << ui::AX_STATE_BUSY);
if (!src.liveRegionStatus().isEmpty()) {
dst->AddStringAttribute(
- ui::AX_ATTR_LIVE_STATUS,
- UTF16ToUTF8(base::StringPiece16(src.liveRegionStatus())));
+ ui::AX_ATTR_LIVE_STATUS, ToUTF8(src.liveRegionStatus()));
}
dst->AddStringAttribute(
- ui::AX_ATTR_LIVE_RELEVANT,
- UTF16ToUTF8(base::StringPiece16(src.liveRegionRelevant())));
+ ui::AX_ATTR_LIVE_RELEVANT, ToUTF8(src.liveRegionRelevant()));
dst->AddBoolAttribute(ui::AX_ATTR_CONTAINER_LIVE_ATOMIC,
src.containerLiveRegionAtomic());
dst->AddBoolAttribute(ui::AX_ATTR_CONTAINER_LIVE_BUSY,
src.containerLiveRegionBusy());
dst->AddStringAttribute(
ui::AX_ATTR_CONTAINER_LIVE_STATUS,
- UTF16ToUTF8(base::StringPiece16(src.containerLiveRegionStatus())));
+ ToUTF8(src.containerLiveRegionStatus()));
dst->AddStringAttribute(
ui::AX_ATTR_CONTAINER_LIVE_RELEVANT,
- UTF16ToUTF8(base::StringPiece16(src.containerLiveRegionRelevant())));
+ ToUTF8(src.containerLiveRegionRelevant()));
}
if (dst->role == ui::AX_ROLE_PROGRESS_INDICATOR ||
@@ -526,12 +522,8 @@ void BlinkAXTreeSource::SerializeNode(blink::WebAXObject src,
src.minValueForRange());
}
- if (dst->role == ui::AX_ROLE_WEB_AREA) {
+ if (dst->role == ui::AX_ROLE_WEB_AREA)
dst->AddStringAttribute(ui::AX_ATTR_HTML_TAG, "#document");
- const WebDocument& document = src.document();
- if (name.empty())
- name = UTF16ToUTF8(base::StringPiece16(document.title()));
- }
if (dst->role == ui::AX_ROLE_TABLE) {
int column_count = src.columnCount();
@@ -594,8 +586,6 @@ void BlinkAXTreeSource::SerializeNode(blink::WebAXObject src,
AXSortDirectionFromBlink(src.sortDirection()));
}
- dst->AddStringAttribute(ui::AX_ATTR_NAME, name);
-
// Add the ids of *indirect* children - those who are children of this node,
// but whose parent is *not* this node. One example is a table
// cell, which is a child of both a row and a column. Because the cell's
@@ -617,27 +607,10 @@ void BlinkAXTreeSource::SerializeNode(blink::WebAXObject src,
if (src.ariaControls(controls))
AddIntListAttributeFromWebObjects(ui::AX_ATTR_CONTROLS_IDS, controls, dst);
- WebVector<WebAXObject> describedby;
- if (src.deprecatedAriaDescribedby(describedby)) {
- AddIntListAttributeFromWebObjects(
- ui::AX_ATTR_DESCRIBEDBY_IDS, describedby, dst);
- }
-
WebVector<WebAXObject> flowTo;
if (src.ariaFlowTo(flowTo))
AddIntListAttributeFromWebObjects(ui::AX_ATTR_FLOWTO_IDS, flowTo, dst);
- WebVector<WebAXObject> labelledby;
- if (src.deprecatedAriaLabelledby(labelledby)) {
- AddIntListAttributeFromWebObjects(
- ui::AX_ATTR_LABELLEDBY_IDS, labelledby, dst);
- }
-
- WebVector<WebAXObject> owns;
- if (src.ariaOwns(owns))
- AddIntListAttributeFromWebObjects(ui::AX_ATTR_OWNS_IDS, owns, dst);
-
-
if (src.isScrollableContainer()) {
const gfx::Point& scrollOffset = src.scrollOffset();
dst->AddIntAttribute(ui::AX_ATTR_SCROLL_X, scrollOffset.x());

Powered by Google App Engine
This is Rietveld 408576698