diff options
author | evy@chromium.org <evy@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-07-26 19:53:24 +0000 |
---|---|---|
committer | evy@chromium.org <evy@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-07-26 19:53:24 +0000 |
commit | a9da710104d28c06df0bba628785ec50523af1ce (patch) | |
tree | 08a06dfe5deac5f9064f90ac8189942b4babb355 | |
parent | 40e187a46ed1ee3316b7585a5b587d50d4d389c6 (diff) | |
download | chromium_src-a9da710104d28c06df0bba628785ec50523af1ce.zip chromium_src-a9da710104d28c06df0bba628785ec50523af1ce.tar.gz chromium_src-a9da710104d28c06df0bba628785ec50523af1ce.tar.bz2 |
Modified tab change to work with status tray change
The status tray change made it so that a view must be accessiblity focusable to be read. Tabs are now accessibility focusable so now they will be read with the status tray change.
Review URL: https://codereview.chromium.org/414203002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@285795 0039d316-1c4b-4281-b951-d872f2087c98
3 files changed, 33 insertions, 3 deletions
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 fd7cf3f..84f173e 100644 --- a/chrome/browser/ui/views/accessibility/accessibility_event_router_views.cc +++ b/chrome/browser/ui/views/accessibility/accessibility_event_router_views.cc @@ -604,8 +604,10 @@ std::string AccessibilityEventRouterViews::RecursiveGetStaticText( // static views::View* AccessibilityEventRouterViews::FindFirstAccessibleAncestor( views::View* view) { - while (view->parent() && !view->IsAccessibilityFocusable()) { - view = view->parent(); - } + views::View* temp_view = view; + while (temp_view->parent() && !temp_view->IsAccessibilityFocusable()) + temp_view = temp_view->parent(); + if (temp_view->IsAccessibilityFocusable()) + return temp_view; return view; } diff --git a/chrome/browser/ui/views/accessibility/accessibility_event_router_views.h b/chrome/browser/ui/views/accessibility/accessibility_event_router_views.h index 6227f34..8ab62d2 100644 --- a/chrome/browser/ui/views/accessibility/accessibility_event_router_views.h +++ b/chrome/browser/ui/views/accessibility/accessibility_event_router_views.h @@ -67,6 +67,8 @@ class AccessibilityEventRouterViews : public content::NotificationObserver { TestFocusNotification); FRIEND_TEST_ALL_PREFIXES(AccessibilityEventRouterViewsTest, MenuIndexAndCountForInvisibleMenu); + FRIEND_TEST_ALL_PREFIXES(AccessibilityEventRouterViewsTest, + AccessibilityFocusableView); AccessibilityEventRouterViews(); virtual ~AccessibilityEventRouterViews(); diff --git a/chrome/browser/ui/views/accessibility/accessibility_event_router_views_unittest.cc b/chrome/browser/ui/views/accessibility/accessibility_event_router_views_unittest.cc index f1bc32e..aa05ab1 100644 --- a/chrome/browser/ui/views/accessibility/accessibility_event_router_views_unittest.cc +++ b/chrome/browser/ui/views/accessibility/accessibility_event_router_views_unittest.cc @@ -424,6 +424,32 @@ TEST_F(AccessibilityEventRouterViewsTest, AlertsFromWindowAndControl) { window->CloseNow(); } +TEST_F(AccessibilityEventRouterViewsTest, AccessibilityFocusableView) { + // Create a view with a child view. + views::View* parent = new views::View(); + views::View* child = new views::View(); + parent->AddChildView(child); + + // Put the view in a window. + views::Widget* window = CreateWindowWithContents(parent); + + // Since the child view has no accessiblity focusable ancestors, this + // should still be the child view. + views::View* accessible_view = + AccessibilityEventRouterViews::FindFirstAccessibleAncestor(child); + EXPECT_EQ(accessible_view, child); + + // Now make the parent view accessiblity focusable. Calling + // FindFirstAccessibleAncestor() again on child shoudl return the parent + // view. + parent->SetAccessibilityFocusable(true); + accessible_view = + AccessibilityEventRouterViews::FindFirstAccessibleAncestor(child); + EXPECT_EQ(accessible_view, parent); + + window->CloseNow(); +} + namespace { class SimpleMenuDelegate : public ui::SimpleMenuModel::Delegate { |