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

Unified Diff: chrome/browser/ui/views/accessibility/accessibility_event_router_views.cc

Issue 79543010: Added basic accessibility to TreeView. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 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
Index: chrome/browser/ui/views/accessibility/accessibility_event_router_views.cc
diff --git a/chrome/browser/ui/views/accessibility/accessibility_event_router_views.cc b/chrome/browser/ui/views/accessibility/accessibility_event_router_views.cc
index 233de2937e04f2d2063586e7147d061cccc62f33..17a915a8daf29f9f34494850a9c20e7ba704e4cb 100644
--- a/chrome/browser/ui/views/accessibility/accessibility_event_router_views.cc
+++ b/chrome/browser/ui/views/accessibility/accessibility_event_router_views.cc
@@ -18,6 +18,7 @@
#include "ui/base/accessibility/accessible_view_state.h"
#include "ui/views/controls/menu/menu_item_view.h"
#include "ui/views/controls/menu/submenu_view.h"
+#include "ui/views/controls/tree/tree_view.h"
#include "ui/views/focus/view_storage.h"
#include "ui/views/view.h"
#include "ui/views/widget/widget.h"
@@ -208,6 +209,12 @@ void AccessibilityEventRouterViews::DispatchAccessibilityEvent(
case ui::AccessibilityTypes::ROLE_SLIDER:
SendSliderNotification(view, type, profile);
break;
+ case ui::AccessibilityTypes::ROLE_OUTLINE:
+ SendTreeNotification(view, type, profile);
+ break;
+ case ui::AccessibilityTypes::ROLE_OUTLINEITEM:
+ SendTreeItemNotification(view, type, profile);
+ break;
default:
// If this is encountered, please file a bug with the role that wasn't
// caught so we can add accessibility extension API support.
@@ -274,6 +281,60 @@ void AccessibilityEventRouterViews::SendMenuItemNotification(
}
// static
+void AccessibilityEventRouterViews::SendTreeNotification(
+ views::View* view,
+ ui::AccessibilityTypes::Event event,
+ Profile* profile) {
+ AccessibilityTreeInfo info(profile, GetViewName(view));
+ SendControlAccessibilityNotification(event, &info);
+}
+
+// static
+void AccessibilityEventRouterViews::SendTreeItemNotification(
+ views::View* view,
+ ui::AccessibilityTypes::Event event,
+ Profile* profile) {
+ std::string name = GetViewName(view);
+ std::string context = GetViewContext(view);
+
+ if (strcmp(view->GetClassName(), views::TreeView::kViewClassName) != 0) {
+ NOTREACHED();
+ return;
+ }
+
+ views::TreeView* tree = static_cast<views::TreeView*>(view);
+ ui::TreeModelNode* selected_node = tree->GetSelectedNode();
+ ui::TreeModel* model = tree->model();
+
+ int siblings_count = model->GetChildCount(model->GetRoot());
+ int children_count = -1;
+ int index = -1;
+ int depth = -1;
+ bool is_expanded = false;
+
+ if (selected_node) {
+ children_count = model->GetChildCount(selected_node);
+ is_expanded = tree->IsExpanded(selected_node);
+ ui::TreeModelNode* parent_node = model->GetParent(selected_node);
+ if (parent_node) {
+ index = model->GetIndexOf(parent_node, selected_node);
+ siblings_count = model->GetChildCount(parent_node);
+ }
+ // Get node depth.
+ depth = 0;
+ while (parent_node) {
+ depth++;
+ parent_node = model->GetParent(parent_node);
+ }
+ }
+
+ AccessibilityTreeItemInfo info(
+ profile, name, context, depth, index, siblings_count, children_count,
+ is_expanded);
+ SendControlAccessibilityNotification(event, &info);
+}
+
+// static
void AccessibilityEventRouterViews::SendTextfieldNotification(
views::View* view,
ui::AccessibilityTypes::Event event,

Powered by Google App Engine
This is Rietveld 408576698