Chromium Code Reviews| 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, |