| 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();
|
|
|
|
|