Chromium Code Reviews| 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()); |