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

Unified Diff: ui/views/accessibility/native_view_accessibility_unittest.cc

Issue 2119413004: a11y: Exclude children of nested keyboard accessible controls from a11y tree. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Linting & review comments. Created 3 years, 7 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
« no previous file with comments | « ui/views/accessibility/native_view_accessibility_base.cc ('k') | ui/views/view.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/views/accessibility/native_view_accessibility_unittest.cc
diff --git a/ui/views/accessibility/native_view_accessibility_unittest.cc b/ui/views/accessibility/native_view_accessibility_unittest.cc
index ba8fa7e04fa5f2dd6a70edb983b7192e6cc587de..25f7a0aaef69a82f8dddb1149344de05a856fbd0 100644
--- a/ui/views/accessibility/native_view_accessibility_unittest.cc
+++ b/ui/views/accessibility/native_view_accessibility_unittest.cc
@@ -13,6 +13,7 @@
#include "ui/views/controls/button/button.h"
#include "ui/views/controls/label.h"
#include "ui/views/test/views_test_base.h"
+#include "ui/views/widget/widget.h"
namespace views {
namespace test {
@@ -36,9 +37,8 @@ class NativeViewAccessibilityTest : public ViewsTestBase {
void SetUp() override {
ViewsTestBase::SetUp();
- widget_ = new views::Widget;
- views::Widget::InitParams params =
- CreateParams(views::Widget::InitParams::TYPE_WINDOW);
+ widget_ = new Widget;
+ Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_WINDOW);
params.bounds = gfx::Rect(0, 0, 200, 200);
widget_->Init(params);
@@ -78,15 +78,25 @@ class NativeViewAccessibilityTest : public ViewsTestBase {
}
protected:
- views::Widget* widget_;
+ Widget* widget_;
TestButton* button_;
std::unique_ptr<NativeViewAccessibility> button_accessibility_;
Label* label_;
std::unique_ptr<NativeViewAccessibility> label_accessibility_;
+
+ DISALLOW_COPY_AND_ASSIGN(NativeViewAccessibilityTest);
};
TEST_F(NativeViewAccessibilityTest, RoleShouldMatch) {
EXPECT_EQ(ui::AX_ROLE_BUTTON, button_accessibility()->GetData().role);
+ // Since the label is a subview of |button_|, and the button is keyboard
+ // focusable, the label is assumed to form part of the button and not have a
+ // role of its own.
+ EXPECT_EQ(ui::AX_ROLE_IGNORED, label_accessibility()->GetData().role);
+ // This will happen for all potentially keyboard-focusable Views with
+ // non-keyboard-focusable children, so if we make the button unfocusable, the
+ // label will be allowed to have its own role again.
+ button_->SetFocusBehavior(View::FocusBehavior::NEVER);
EXPECT_EQ(ui::AX_ROLE_STATIC_TEXT, label_accessibility()->GetData().role);
}
@@ -100,11 +110,21 @@ TEST_F(NativeViewAccessibilityTest, BoundsShouldMatch) {
}
TEST_F(NativeViewAccessibilityTest, LabelIsChildOfButton) {
+ // |button_| is focusable, so |label_| (as its child) should be ignored.
+ EXPECT_EQ(View::FocusBehavior::ACCESSIBLE_ONLY, button_->focus_behavior());
+ EXPECT_EQ(1, button_accessibility()->GetChildCount());
+ EXPECT_EQ(button_->GetNativeViewAccessible(),
+ label_accessibility()->GetParent());
+ EXPECT_EQ(ui::AX_ROLE_IGNORED, label_accessibility()->GetData().role);
+
+ // If |button_| is no longer focusable, |label_| should show up again.
+ button_->SetFocusBehavior(View::FocusBehavior::NEVER);
EXPECT_EQ(1, button_accessibility()->GetChildCount());
EXPECT_EQ(label_->GetNativeViewAccessible(),
button_accessibility()->ChildAtIndex(0));
EXPECT_EQ(button_->GetNativeViewAccessible(),
label_accessibility()->GetParent());
+ EXPECT_NE(ui::AX_ROLE_IGNORED, label_accessibility()->GetData().role);
}
// Verify Views with invisible ancestors have AX_STATE_INVISIBLE.
@@ -158,7 +178,7 @@ class TestNativeViewAccessibility : public NativeViewAccessibilityBase {
TEST_F(NativeViewAccessibilityTest, CrashOnWidgetDestroyed) {
std::unique_ptr<Widget> parent_widget(new Widget);
Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP);
- params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
+ params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
params.bounds = gfx::Rect(50, 50, 650, 650);
parent_widget->Init(params);
@@ -189,8 +209,7 @@ class AxTestViewsDelegate : public TestViewsDelegate {
AxTestViewsDelegate() {}
~AxTestViewsDelegate() override {}
- void NotifyAccessibilityEvent(views::View* view,
- ui::AXEvent event_type) override {
+ void NotifyAccessibilityEvent(View* view, ui::AXEvent event_type) override {
AXAuraObjCache* ax = AXAuraObjCache::GetInstance();
std::vector<AXAuraObjWrapper*> out_children;
AXAuraObjWrapper* ax_obj = ax->GetOrCreate(view->GetWidget());
@@ -209,7 +228,7 @@ class AXViewTest : public ViewsTestBase {
std::unique_ptr<TestViewsDelegate> views_delegate(
new AxTestViewsDelegate());
set_views_delegate(std::move(views_delegate));
- views::ViewsTestBase::SetUp();
+ ViewsTestBase::SetUp();
}
};
@@ -218,7 +237,7 @@ class AXViewTest : public ViewsTestBase {
TEST_F(AXViewTest, LayoutCalledInvalidateRootView) {
std::unique_ptr<Widget> widget(new Widget);
Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP);
- params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
+ params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
widget->Init(params);
widget->Show();
« no previous file with comments | « ui/views/accessibility/native_view_accessibility_base.cc ('k') | ui/views/view.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698