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()); |