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

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

Issue 1894383002: MacViews: Implement Full Keyboard Access. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@SetFocusBehavior
Patch Set: Rebased. Created 4 years, 8 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_traversal_unittest.cc
diff --git a/ui/views/focus/focus_traversal_unittest.cc b/ui/views/focus/focus_traversal_unittest.cc
index 039c2b647a314143a24aa04c40e3c1365edc3d5f..6cd95b8c995ce40dd48cb6d2e124aabbbb61a8fb 100644
--- a/ui/views/focus/focus_traversal_unittest.cc
+++ b/ui/views/focus/focus_traversal_unittest.cc
@@ -603,6 +603,77 @@ TEST_F(FocusTraversalTest, NormalTraversal) {
}
}
+#if defined(OS_MACOSX)
+// Test focus traversal with full keyboard access off on Mac.
+TEST_F(FocusTraversalTest, NormalTraversalMac) {
+GetFocusManager()->SetKeyboardAccessible(false);
tapted 2016/04/20 06:05:58 indenting is off here
karandeepb 2016/05/03 02:54:13 Done.
+
+// Now only views with FocusBehavior of ALWAYS will be focusable.
+const int kTraversalIDs[] = { kAppleTextfieldID,
+ kOrangeTextfieldID, kBananaTextfieldID, kKiwiTextfieldID,
+ kStyleTextEditID,
+ kSearchTextfieldID,
+ kThumbnailContainerID};
+
+ // Let's traverse the whole focus hierarchy (several times, to make sure it
tapted 2016/04/20 06:05:58 I think this needs to be a helper function - it's
karandeepb 2016/05/03 02:54:13 Done. Turns out there were many other similar call
+ // loops OK).
+ GetFocusManager()->ClearFocus();
+ for (int i = 0; i < 3; ++i) {
+ for (size_t j = 0; j < arraysize(kTraversalIDs); j++) {
+ GetFocusManager()->AdvanceFocus(false);
+ View* focused_view = GetFocusManager()->GetFocusedView();
+ EXPECT_TRUE(focused_view != NULL);
tapted 2016/04/20 06:05:58 I think EXPECT_NE(nullptr, focused_view) is the
karandeepb 2016/05/03 02:54:13 Done.
+ if (focused_view)
+ EXPECT_EQ(kTraversalIDs[j], focused_view->id());
+ }
+ }
+
+ // Let's traverse in reverse order.
+ GetFocusManager()->ClearFocus();
+ for (int i = 0; i < 3; ++i) {
+ for (int j = arraysize(kTraversalIDs) - 1; j >= 0; --j) {
+ GetFocusManager()->AdvanceFocus(true);
+ View* focused_view = GetFocusManager()->GetFocusedView();
+ EXPECT_TRUE(focused_view != NULL);
+ if (focused_view)
+ EXPECT_EQ(kTraversalIDs[j], focused_view->id());
+ }
+ }
+}
+
+// Test toggling full keyboard access correctly changes the focused view on Mac.
+TEST_F(FocusTraversalTest, FullKeyboardToggle) {
+ // Give focus to kTopCheckBoxID .
+ FindViewByID(kTopCheckBoxID)->RequestFocus();
+ EXPECT_EQ(kTopCheckBoxID, GetFocusManager()->GetFocusedView()->id());
+
+ // Turn off full keyboard access. Focus should move to next view with ALWAYS
+ // focus behavior.
+ GetFocusManager()->SetKeyboardAccessible(false);
+ EXPECT_EQ(kAppleTextfieldID, GetFocusManager()->GetFocusedView()->id());
+
+ // Turning on full keyboard access should not change the focused view.
+ GetFocusManager()->SetKeyboardAccessible(true);
+ EXPECT_EQ(kAppleTextfieldID, GetFocusManager()->GetFocusedView()->id());
+
+ // Give focus to kSearchButtonID.
+ FindViewByID(kSearchButtonID)->RequestFocus();
+ EXPECT_EQ(kSearchButtonID, GetFocusManager()->GetFocusedView()->id());
+
+ // Turn off full keyboard access. Focus should move to next view with ALWAYS
+ // focus behavior.
+ GetFocusManager()->SetKeyboardAccessible(false);
+ EXPECT_EQ(kThumbnailContainerID, GetFocusManager()->GetFocusedView()->id());
+
+ // See focus advances correctly in both directions.
+ GetFocusManager()->AdvanceFocus(false);
+ EXPECT_EQ(kAppleTextfieldID, GetFocusManager()->GetFocusedView()->id());
+
+ GetFocusManager()->AdvanceFocus(true);
+ EXPECT_EQ(kThumbnailContainerID, GetFocusManager()->GetFocusedView()->id());
+}
+#endif
tapted 2016/04/20 06:05:58 nit: // OS_MACOSX
karandeepb 2016/05/03 02:54:13 Done.
+
TEST_F(FocusTraversalTest, TraversalWithNonEnabledViews) {
const int kDisabledIDs[] = {
kBananaTextfieldID, kFruitCheckBoxID, kComboboxID, kAsparagusButtonID,

Powered by Google App Engine
This is Rietveld 408576698