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

Unified Diff: ui/accessibility/platform/ax_platform_node_base.cc

Issue 2933353002: Forward four more BrowserAccessibility APIs to AXPlatformNode. (Closed)
Patch Set: Use SkColor.h instead Created 3 years, 6 months 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: ui/accessibility/platform/ax_platform_node_base.cc
diff --git a/ui/accessibility/platform/ax_platform_node_base.cc b/ui/accessibility/platform/ax_platform_node_base.cc
index 4e8303558734ce4e5e3c7b95c6b468c153d6e4a7..953172e18c681c07e615d10986c83de812b9f345 100644
--- a/ui/accessibility/platform/ax_platform_node_base.cc
+++ b/ui/accessibility/platform/ax_platform_node_base.cc
@@ -213,4 +213,79 @@ bool AXPlatformNodeBase::SetTextSelection(int start_offset, int end_offset) {
return delegate_->AccessibilityPerformAction(action_data);
}
+bool AXPlatformNodeBase::IsTextOnlyObject() const {
+ return GetData().role == ui::AX_ROLE_STATIC_TEXT ||
+ GetData().role == ui::AX_ROLE_LINE_BREAK ||
+ GetData().role == ui::AX_ROLE_INLINE_TEXT_BOX;
+}
+
+bool AXPlatformNodeBase::IsNativeTextControl() const {
+ const std::string& html_tag = GetStringAttribute(ui::AX_ATTR_HTML_TAG);
+ if (html_tag == "input") {
+ std::string input_type;
+ if (!GetData().GetHtmlAttribute("type", &input_type))
+ return true;
+ return input_type.empty() || input_type == "email" ||
+ input_type == "password" || input_type == "search" ||
+ input_type == "tel" || input_type == "text" || input_type == "url" ||
+ input_type == "number";
+ }
+ return html_tag == "textarea";
+}
+
+bool AXPlatformNodeBase::IsSimpleTextControl() const {
+ // Time fields, color wells and spinner buttons might also use text fields as
+ // constituent parts, but they are not considered text fields as a whole.
+ switch (GetData().role) {
+ case ui::AX_ROLE_COMBO_BOX:
+ case ui::AX_ROLE_SEARCH_BOX:
+ return true;
+ case ui::AX_ROLE_TEXT_FIELD:
+ return !GetData().HasState(ui::AX_STATE_RICHLY_EDITABLE);
+ default:
+ return false;
+ }
+}
+
+// Indicates if this object is at the root of a rich edit text control.
+bool AXPlatformNodeBase::IsRichTextControl() {
+ gfx::NativeViewAccessible parent_accessible = GetParent();
+ AXPlatformNodeBase* parent = FromNativeViewAccessible(parent_accessible);
+ if (!parent)
+ return false;
+
+ return GetData().HasState(ui::AX_STATE_RICHLY_EDITABLE) &&
+ (!parent || !parent->GetData().HasState(ui::AX_STATE_RICHLY_EDITABLE));
+}
+
+base::string16 AXPlatformNodeBase::GetInnerText() {
+ if (IsTextOnlyObject())
+ return GetString16Attribute(ui::AX_ATTR_NAME);
+
+ base::string16 text;
+ for (int i = 0; i < GetChildCount(); ++i) {
+ gfx::NativeViewAccessible child_accessible = ChildAtIndex(i);
+ AXPlatformNodeBase* child = FromNativeViewAccessible(child_accessible);
+ if (!child)
+ continue;
+
+ text += child->GetInnerText();
+ }
+ return text;
+}
+
+bool AXPlatformNodeBase::IsRangeValueSupported() const {
+ switch (GetData().role) {
+ case ui::AX_ROLE_PROGRESS_INDICATOR:
+ case ui::AX_ROLE_SLIDER:
+ case ui::AX_ROLE_SPIN_BUTTON:
+ case ui::AX_ROLE_SCROLL_BAR:
+ return true;
+ case ui::AX_ROLE_SPLITTER:
+ return GetData().HasState(ui::AX_STATE_FOCUSABLE);
+ default:
+ return false;
+ }
+}
+
} // namespace ui
« no previous file with comments | « ui/accessibility/platform/ax_platform_node_base.h ('k') | ui/accessibility/platform/ax_platform_node_delegate.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698