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

Unified Diff: ui/views/focus/focus_manager_unittest.cc

Issue 1973073003: Views: Change View::RequestFocus to respect keyboard accessibility. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add RequestFocus test Created 4 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
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 {

Powered by Google App Engine
This is Rietveld 408576698