Chromium Code Reviews| Index: ui/views/controls/combobox/combobox_unittest.cc |
| diff --git a/ui/views/controls/combobox/combobox_unittest.cc b/ui/views/controls/combobox/combobox_unittest.cc |
| index 18632861446c5db7f93e569e7ca286606721e64f..24691a32e1e77430e9b71d4f0a95ecb36fae79e9 100644 |
| --- a/ui/views/controls/combobox/combobox_unittest.cc |
| +++ b/ui/views/controls/combobox/combobox_unittest.cc |
| @@ -20,6 +20,7 @@ |
| #include "ui/events/keycodes/keyboard_codes.h" |
| #include "ui/events/test/event_generator.h" |
| #include "ui/views/controls/combobox/combobox_listener.h" |
| +#include "ui/views/style/platform_style.h" |
| #include "ui/views/test/combobox_test_api.h" |
| #include "ui/views/test/views_test_base.h" |
| #include "ui/views/widget/widget.h" |
| @@ -275,26 +276,63 @@ class ComboboxTest : public ViewsTestBase { |
| DISALLOW_COPY_AND_ASSIGN(ComboboxTest); |
| }; |
| +#if defined(OS_MACOSX) |
| +TEST_F(ComboboxTest, KeyTest) { |
|
tapted
2017/01/13 19:06:39
perhaps call this KeyTestMac? Since it's quite dif
tapted
2017/01/13 19:06:40
nit: comment before describing test
karandeepb
2017/01/16 04:26:16
Done.
karandeepb
2017/01/16 04:26:16
Done.
|
| + InitCombobox(nullptr, Combobox::STYLE_NORMAL); |
| + PressKey(ui::VKEY_END); |
| + EXPECT_EQ(0, combobox_->selected_index()); |
| + EXPECT_EQ(0, menu_show_count_); |
| + |
| + PressKey(ui::VKEY_HOME); |
| + EXPECT_EQ(0, combobox_->selected_index()); |
| + EXPECT_EQ(0, menu_show_count_); |
| + |
| + PressKey(ui::VKEY_DOWN); |
| + EXPECT_EQ(0, combobox_->selected_index()); |
| + EXPECT_EQ(1, menu_show_count_); |
| + |
| + PressKey(ui::VKEY_RIGHT); |
| + EXPECT_EQ(0, combobox_->selected_index()); |
| + EXPECT_EQ(1, menu_show_count_); |
| + |
| + PressKey(ui::VKEY_LEFT); |
| + EXPECT_EQ(0, combobox_->selected_index()); |
| + EXPECT_EQ(1, menu_show_count_); |
| + |
| + PressKey(ui::VKEY_UP); |
| + EXPECT_EQ(0, combobox_->selected_index()); |
| + EXPECT_EQ(2, menu_show_count_); |
| + |
| + PressKey(ui::VKEY_PRIOR); |
| + EXPECT_EQ(0, combobox_->selected_index()); |
| + EXPECT_EQ(2, menu_show_count_); |
| + |
| + PressKey(ui::VKEY_NEXT); |
| + EXPECT_EQ(0, combobox_->selected_index()); |
| + EXPECT_EQ(2, menu_show_count_); |
| +} |
| +#else |
|
tapted
2017/01/13 19:06:39
nit: // !OS_MACOSX
karandeepb
2017/01/16 04:26:16
Don't think it's needed now.
|
| TEST_F(ComboboxTest, KeyTest) { |
|
tapted
2017/01/13 19:06:39
nit: comment before
karandeepb
2017/01/16 04:26:16
Done.
|
| InitCombobox(nullptr, Combobox::STYLE_NORMAL); |
| PressKey(ui::VKEY_END); |
| - EXPECT_EQ(combobox_->selected_index() + 1, model_->GetItemCount()); |
| + EXPECT_EQ(model_->GetItemCount(), combobox_->selected_index() + 1); |
| PressKey(ui::VKEY_HOME); |
| - EXPECT_EQ(combobox_->selected_index(), 0); |
| + EXPECT_EQ(0, combobox_->selected_index()); |
| PressKey(ui::VKEY_DOWN); |
| PressKey(ui::VKEY_DOWN); |
| - EXPECT_EQ(combobox_->selected_index(), 2); |
| + EXPECT_EQ(2, combobox_->selected_index()); |
| PressKey(ui::VKEY_RIGHT); |
| - EXPECT_EQ(combobox_->selected_index(), 2); |
| + EXPECT_EQ(2, combobox_->selected_index()); |
| PressKey(ui::VKEY_LEFT); |
| - EXPECT_EQ(combobox_->selected_index(), 2); |
| + EXPECT_EQ(2, combobox_->selected_index()); |
| PressKey(ui::VKEY_UP); |
| - EXPECT_EQ(combobox_->selected_index(), 1); |
| + EXPECT_EQ(1, combobox_->selected_index()); |
| PressKey(ui::VKEY_PRIOR); |
| - EXPECT_EQ(combobox_->selected_index(), 0); |
| + EXPECT_EQ(0, combobox_->selected_index()); |
| PressKey(ui::VKEY_NEXT); |
| - EXPECT_EQ(combobox_->selected_index(), model_->GetItemCount() - 1); |
| + EXPECT_EQ(model_->GetItemCount() - 1, combobox_->selected_index()); |
| } |
| +#endif // OS_MACOSX |
| // Check that if a combobox is disabled before it has a native wrapper, then the |
| // native wrapper inherits the disabled state when it gets created. |
| @@ -316,6 +354,10 @@ TEST_F(ComboboxTest, DisabilityTest) { |
| EXPECT_FALSE(combobox_->enabled()); |
| } |
| +// On Mac, key events can't change the currently selected index directly for a |
| +// combobox. |
| +#if !defined(OS_MACOSX) |
| + |
|
tapted
2017/01/13 19:06:39
let's move TEST_F(ComboboxTest, KeyTest) in here t
karandeepb
2017/01/16 04:26:16
Done.
|
| // Verifies that we don't select a separator line in combobox when navigating |
| // through keyboard. |
| TEST_F(ComboboxTest, SkipSeparatorSimple) { |
| @@ -436,6 +478,7 @@ TEST_F(ComboboxTest, SkipMultipleSeparatorsAtEnd) { |
| PressKey(ui::VKEY_END); |
| EXPECT_EQ(6, combobox_->selected_index()); |
| } |
| +#endif // OS_MACOSX |
| TEST_F(ComboboxTest, GetTextForRowTest) { |
| std::set<int> separators; |
| @@ -546,7 +589,8 @@ TEST_F(ComboboxTest, NotifyOnClickWithReturnKey) { |
| // With STYLE_NORMAL, the click event is ignored. Instead the menu is shown. |
| PressKey(ui::VKEY_RETURN); |
| - EXPECT_EQ(1, menu_show_count_); |
| + EXPECT_EQ(PlatformStyle::kReturnClicksFocusedControl ? 1 : 0, |
| + menu_show_count_); |
| EXPECT_FALSE(listener.on_perform_action_called()); |
| } |
| @@ -559,8 +603,14 @@ TEST_F(ComboboxTest, NotifyOnClickWithReturnKeyActionStyle) { |
| // With STYLE_ACTION, the click event is notified and the menu is not shown. |
| PressKey(ui::VKEY_RETURN); |
| EXPECT_EQ(0, menu_show_count_); |
| - EXPECT_TRUE(listener.on_perform_action_called()); |
| - EXPECT_EQ(0, listener.perform_action_index()); |
| + |
| + if (PlatformStyle::kReturnClicksFocusedControl) { |
| + EXPECT_TRUE(listener.on_perform_action_called()); |
| + EXPECT_EQ(0, listener.perform_action_index()); |
| + } else { |
| + EXPECT_FALSE(listener.on_perform_action_called()); |
| + EXPECT_EQ(-1, listener.perform_action_index()); |
| + } |
| } |
| TEST_F(ComboboxTest, NotifyOnClickWithSpaceKey) { |
| @@ -586,10 +636,16 @@ TEST_F(ComboboxTest, NotifyOnClickWithSpaceKeyActionStyle) { |
| combobox_->set_listener(&listener); |
| // With STYLE_ACTION, the click event is notified after releasing and the menu |
| - // is not shown. |
| + // is not shown. On Mac the click event is notified on key press. |
| PressKey(ui::VKEY_SPACE); |
| EXPECT_EQ(0, menu_show_count_); |
| +#if defined(OS_MACOSX) |
| + EXPECT_TRUE(listener.on_perform_action_called()); |
| + EXPECT_EQ(0, listener.perform_action_index()); |
| +#else |
| EXPECT_FALSE(listener.on_perform_action_called()); |
| + EXPECT_EQ(-1, listener.perform_action_index()); |
| +#endif |
| ReleaseKey(ui::VKEY_SPACE); |
| EXPECT_EQ(0, menu_show_count_); |
| @@ -638,11 +694,17 @@ TEST_F(ComboboxTest, ConsumingPressKeyEvents) { |
| InitCombobox(nullptr, Combobox::STYLE_NORMAL); |
| EXPECT_TRUE(combobox_->OnKeyPressed( |
| - ui::KeyEvent(ui::ET_KEY_PRESSED, ui::VKEY_RETURN, ui::EF_NONE))); |
| - EXPECT_EQ(1, menu_show_count_); |
| - EXPECT_TRUE(combobox_->OnKeyPressed( |
| ui::KeyEvent(ui::ET_KEY_PRESSED, ui::VKEY_SPACE, ui::EF_NONE))); |
| - EXPECT_EQ(2, menu_show_count_); |
| + EXPECT_EQ(1, menu_show_count_); |
| + |
| + ui::KeyEvent return_press(ui::ET_KEY_PRESSED, ui::VKEY_RETURN, ui::EF_NONE); |
| + if (PlatformStyle::kReturnClicksFocusedControl) { |
| + EXPECT_TRUE(combobox_->OnKeyPressed(return_press)); |
| + EXPECT_EQ(2, menu_show_count_); |
| + } else { |
| + EXPECT_FALSE(combobox_->OnKeyPressed(return_press)); |
| + EXPECT_EQ(1, menu_show_count_); |
| + } |
| } |
| TEST_F(ComboboxTest, ConsumingKeyPressEventsActionStyle) { |
| @@ -650,8 +712,9 @@ TEST_F(ComboboxTest, ConsumingKeyPressEventsActionStyle) { |
| // or an enter key will be consumed and the menu is not shown. |
| InitCombobox(nullptr, Combobox::STYLE_ACTION); |
| - EXPECT_TRUE(combobox_->OnKeyPressed( |
| - ui::KeyEvent(ui::ET_KEY_PRESSED, ui::VKEY_RETURN, ui::EF_NONE))); |
| + EXPECT_EQ(PlatformStyle::kReturnClicksFocusedControl, |
| + combobox_->OnKeyPressed(ui::KeyEvent( |
| + ui::ET_KEY_PRESSED, ui::VKEY_RETURN, ui::EF_NONE))); |
| EXPECT_EQ(0, menu_show_count_); |
| EXPECT_TRUE(combobox_->OnKeyPressed( |
| ui::KeyEvent(ui::ET_KEY_PRESSED, ui::VKEY_SPACE, ui::EF_NONE))); |