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, |