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

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

Issue 79273002: Fixed accessibility issues in bookmark bubble dialog. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 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: 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 25b0feff746b5acf26b8c30aa039d72fa4cf8b99..abfb5836902435593c0e4900ecef01895a3cf8e5 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"
@@ -174,6 +175,7 @@ void AccessibilityEventRouterViews::DispatchAccessibilityEvent(
switch (state.role) {
case ui::AccessibilityTypes::ROLE_ALERT:
+ case ui::AccessibilityTypes::ROLE_DIALOG:
case ui::AccessibilityTypes::ROLE_WINDOW:
SendWindowNotification(view, type, profile);
break;
@@ -207,6 +209,12 @@ void AccessibilityEventRouterViews::DispatchAccessibilityEvent(
case ui::AccessibilityTypes::ROLE_SLIDER:
SendSliderNotification(view, type, profile);
break;
+ case ui::AccessibilityTypes::ROLE_OUTLINE:
+ SendMenuNotification(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.
@@ -273,6 +281,41 @@ void AccessibilityEventRouterViews::SendMenuItemNotification(
}
// 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);
dmazzoni 2013/11/21 06:54:07 Why is the view with a role of OUTLINEITEM the one
zel 2013/11/22 02:34:01 moved to another CL, will be addresses there
+ ui::TreeModelNode* selected_node = tree->GetSelectedNode();
+ ui::TreeModel* model = tree->model();
+
+ bool has_submenu = false;
+ int index = -1;
+ int count = -1;
dmazzoni 2013/11/21 06:54:07 Can we set the count even if there isn't a selecte
zel 2013/11/22 02:34:01 moved to another CL, will be addresses there
+
+ if (selected_node) {
+ has_submenu = model->GetChildCount(selected_node);
+ ui::TreeModelNode* parent_node = model->GetParent(selected_node);
+ if (parent_node) {
+ index = model->GetIndexOf(parent_node, selected_node);
+ count = model->GetChildCount(parent_node);
+ }
+ }
+
+ AccessibilityMenuItemInfo info(
+ profile, name, context, has_submenu, index, count);
+ SendControlAccessibilityNotification(event, &info);
+}
+
+// static
void AccessibilityEventRouterViews::SendTextfieldNotification(
views::View* view,
ui::AccessibilityTypes::Event event,
@@ -395,9 +438,11 @@ std::string AccessibilityEventRouterViews::GetViewContext(views::View* view) {
// Two cases are handled right now. More could be added in the future
// depending on how the UI evolves.
- // A control in a toolbar should use the toolbar's accessible name
- // as the context.
- if (state.role == ui::AccessibilityTypes::ROLE_TOOLBAR &&
+ // A control inside of alert, toolbar or dialog should use that container's
+ // accessible name.
+ if ((state.role == ui::AccessibilityTypes::ROLE_ALERT ||
+ state.role == ui::AccessibilityTypes::ROLE_DIALOG ||
+ state.role == ui::AccessibilityTypes::ROLE_TOOLBAR) &&
!state.name.empty()) {
return UTF16ToUTF8(state.name);
}

Powered by Google App Engine
This is Rietveld 408576698