Index: ui/views/focus/focus_manager_unittest.cc |
diff --git a/ui/views/focus/focus_manager_unittest.cc b/ui/views/focus/focus_manager_unittest.cc |
index 425e9acf30a25cedcab098a5ac0c489dff8427bc..c37b77f2822b2796db40ec207131b69bf8799bc4 100644 |
--- a/ui/views/focus/focus_manager_unittest.cc |
+++ b/ui/views/focus/focus_manager_unittest.cc |
@@ -798,6 +798,39 @@ TEST_F(FocusManagerTest, StoreFocusedViewFullKeyboardAccess) { |
EXPECT_TRUE(GetFocusManager()->RestoreFocusedView()); |
EXPECT_EQ(view3, GetFocusManager()->GetFocusedView()); |
} |
+ |
+// Test that View::RequestFocus() respects full keyboard access mode. |
+TEST_F(FocusManagerTest, RequestFocus) { |
+ View* view1 = new View(); |
+ View* view2 = new View(); |
+ |
+ // Make view1 always focusable, view2 only focusable in accessibility mode. |
+ view1->SetFocusBehavior(View::FocusBehavior::ALWAYS); |
+ view2->SetFocusBehavior(View::FocusBehavior::ACCESSIBLE_ONLY); |
+ |
+ // Adds views to the view hierarchy. |
+ GetWidget()->GetRootView()->AddChildView(view1); |
+ GetWidget()->GetRootView()->AddChildView(view2); |
+ |
+ // Verify view1 can always get focus via View::RequestFocus, while view2 can |
+ // only get focus in full keyboard accessibility mode. |
+ EXPECT_TRUE(GetFocusManager()->keyboard_accessible()); |
+ view1->RequestFocus(); |
+ EXPECT_EQ(view1, GetFocusManager()->GetFocusedView()); |
+ view2->RequestFocus(); |
+ EXPECT_EQ(view2, GetFocusManager()->GetFocusedView()); |
+ |
+ // Toggle full keyboard accessibility. |
+ GetFocusManager()->SetKeyboardAccessible(false); |
+ |
+ GetFocusManager()->ClearFocus(); |
+ EXPECT_NE(view1, GetFocusManager()->GetFocusedView()); |
+ view1->RequestFocus(); |
+ EXPECT_EQ(view1, GetFocusManager()->GetFocusedView()); |
+ view2->RequestFocus(); |
+ EXPECT_EQ(view1, GetFocusManager()->GetFocusedView()); |
+} |
+ |
#endif |
namespace { |