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

Unified Diff: ui/views/controls/menu/menu_controller_unittest.cc

Issue 1230163004: Selects last item in a menu when pressing 'up' initially (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Selects last item in a menu when pressing 'up' initially Created 5 years, 5 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/controls/menu/menu_controller_unittest.cc
diff --git a/ui/views/controls/menu/menu_controller_unittest.cc b/ui/views/controls/menu/menu_controller_unittest.cc
index 1fd47a55a8eaf19a4be82451077a4092641fd9d2..6360fb92f81dade23ed88ff2bf069a1ac510fd6c 100644
--- a/ui/views/controls/menu/menu_controller_unittest.cc
+++ b/ui/views/controls/menu/menu_controller_unittest.cc
@@ -46,6 +46,26 @@ class TestMenuItemView : public MenuItemView {
DISALLOW_COPY_AND_ASSIGN(TestMenuItemView);
};
+class SubmenuViewShown : public SubmenuView {
+ public:
+ SubmenuViewShown(MenuItemView* parent) : SubmenuView(parent) {}
+ ~SubmenuViewShown() override {}
+ bool IsShowing() override { return true; }
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(SubmenuViewShown);
+};
+
+class TestMenuItemViewShown : public MenuItemView {
+ public:
+ TestMenuItemViewShown() : MenuItemView(nullptr) {}
+ ~TestMenuItemViewShown() override {}
+ SubmenuView* CreateSubmenu() override { return new SubmenuViewShown(this); }
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(TestMenuItemViewShown);
+};
+
class TestPlatformEventSource : public ui::PlatformEventSource {
public:
TestPlatformEventSource() {
@@ -170,6 +190,7 @@ class MenuControllerTest : public ViewsTestBase {
void SetPendingStateItem(MenuItemView* item) {
controller_->pending_state_.item = item;
+ controller_->pending_state_.submenu_open = true;
}
void ResetSelection() {
@@ -445,4 +466,25 @@ TEST_F(MenuControllerTest, NextSelectedItem) {
ResetSelection();
}
+TEST_F(MenuControllerTest, NextSelectedItemUp) {
+ scoped_ptr<Widget> owner(CreateOwnerWidget());
+ scoped_ptr<TestMenuItemViewShown> menu_item(new TestMenuItemViewShown);
+ menu_item->AppendMenuItemWithLabel(1, base::ASCIIToUTF16("One"));
+ menu_item->AppendMenuItemWithLabel(2, base::ASCIIToUTF16("Two"));
+ menu_item->AppendMenuItemWithLabel(3, base::ASCIIToUTF16("Three"));
+ menu_item->AppendMenuItemWithLabel(4, base::ASCIIToUTF16("Four"));
+ // Disabling the item "Four" gets it skipped when using keyboard to navigate.
+ menu_item->GetSubmenu()->GetMenuItemAt(3)->SetEnabled(false);
+
+ SetupMenu(owner.get(), menu_item.get());
+
+ // Fake initial root item selection and submenu showing.
+ SetPendingStateItem(menu_item.get());
+ EXPECT_EQ(0, pending_state_item()->GetCommand());
+
+ // Move up and select a previous (in our case the last enabled) item.
+ IncrementSelection(-1);
+ EXPECT_EQ(3, pending_state_item()->GetCommand());
+}
+
} // namespace views

Powered by Google App Engine
This is Rietveld 408576698