summaryrefslogtreecommitdiff
path: root/chromium/ui/views/controls/menu/menu_item_view_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/ui/views/controls/menu/menu_item_view_unittest.cc')
-rw-r--r--chromium/ui/views/controls/menu/menu_item_view_unittest.cc84
1 files changed, 79 insertions, 5 deletions
diff --git a/chromium/ui/views/controls/menu/menu_item_view_unittest.cc b/chromium/ui/views/controls/menu/menu_item_view_unittest.cc
index 7c9151f6625..ab5f10ec455 100644
--- a/chromium/ui/views/controls/menu/menu_item_view_unittest.cc
+++ b/chromium/ui/views/controls/menu/menu_item_view_unittest.cc
@@ -7,8 +7,11 @@
#include "base/strings/string16.h"
#include "base/strings/utf_string_conversions.h"
#include "testing/gtest/include/gtest/gtest.h"
+#include "ui/base/l10n/l10n_util.h"
+#include "ui/strings/grit/ui_strings.h"
#include "ui/views/controls/menu/submenu_view.h"
-#include "ui/views/view.h"
+
+namespace views {
namespace {
@@ -23,15 +26,20 @@ class SquareView : public views::View {
int GetHeightForWidth(int width) const override { return width; }
};
+} // namespace
+
// A MenuItemView implementation with a public destructor (so we can clean up
// in tests).
-class TestMenuItemView : public views::MenuItemView {
+class TestMenuItemView : public MenuItemView {
public:
- TestMenuItemView() : views::MenuItemView(NULL) {}
+ TestMenuItemView() : MenuItemView(NULL) {}
~TestMenuItemView() override {}
-};
-} // namespace
+ void AddEmptyMenus() { MenuItemView::AddEmptyMenus(); }
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(TestMenuItemView);
+};
TEST(MenuItemViewUnitTest, TestMenuItemViewWithFlexibleWidthChild) {
TestMenuItemView root_menu;
@@ -70,3 +78,69 @@ TEST(MenuItemViewUnitTest, TestMenuItemViewWithFlexibleWidthChild) {
EXPECT_EQ(label_size.height() + flex_height,
submenu->GetPreferredSize().height());
}
+
+// Tests that the top-level menu item with hidden children should contain the
+// "(empty)" menu item to display.
+TEST(MenuItemViewUnitTest, TestEmptyTopLevelWhenAllItemsAreHidden) {
+ TestMenuItemView root_menu;
+ views::MenuItemView* item1 =
+ root_menu.AppendMenuItemWithLabel(1, base::ASCIIToUTF16("item 1"));
+ views::MenuItemView* item2 =
+ root_menu.AppendMenuItemWithLabel(2, base::ASCIIToUTF16("item 2"));
+
+ // Set menu items to hidden.
+ item1->SetVisible(false);
+ item2->SetVisible(false);
+
+ SubmenuView* submenu = root_menu.GetSubmenu();
+ ASSERT_TRUE(submenu);
+
+ EXPECT_EQ(2, submenu->child_count());
+
+ // Adds any empty menu items to the menu, if needed.
+ root_menu.AddEmptyMenus();
+
+ // Because all of the submenu's children are hidden, an empty menu item should
+ // have been added.
+ ASSERT_EQ(3, submenu->child_count());
+ MenuItemView* empty_item = static_cast<MenuItemView*>(submenu->child_at(0));
+ ASSERT_TRUE(empty_item);
+ ASSERT_EQ(MenuItemView::kEmptyMenuItemViewID, empty_item->id());
+ EXPECT_EQ(l10n_util::GetStringUTF16(IDS_APP_MENU_EMPTY_SUBMENU),
+ empty_item->title());
+}
+
+// Tests that submenu with hidden children should contain the "(empty)" menu
+// item to display.
+TEST(MenuItemViewUnitTest, TestEmptySubmenuWhenAllChildItemsAreHidden) {
+ TestMenuItemView root_menu;
+ MenuItemView* submenu_item =
+ root_menu.AppendSubMenu(1, base::ASCIIToUTF16("My Submenu"));
+ MenuItemView* child1 = submenu_item->AppendMenuItemWithLabel(
+ 1, base::ASCIIToUTF16("submenu item 1"));
+ MenuItemView* child2 = submenu_item->AppendMenuItemWithLabel(
+ 2, base::ASCIIToUTF16("submenu item 2"));
+
+ // Set submenu children to hidden.
+ child1->SetVisible(false);
+ child2->SetVisible(false);
+
+ SubmenuView* submenu = submenu_item->GetSubmenu();
+ ASSERT_TRUE(submenu);
+
+ EXPECT_EQ(2, submenu->child_count());
+
+ // Adds any empty menu items to the menu, if needed.
+ root_menu.AddEmptyMenus();
+
+ // Because all of the submenu's children are hidden, an empty menu item should
+ // have been added.
+ ASSERT_EQ(3, submenu->child_count());
+ MenuItemView* empty_item = static_cast<MenuItemView*>(submenu->child_at(0));
+ ASSERT_TRUE(empty_item);
+ ASSERT_EQ(MenuItemView::kEmptyMenuItemViewID, empty_item->id());
+ EXPECT_EQ(l10n_util::GetStringUTF16(IDS_APP_MENU_EMPTY_SUBMENU),
+ empty_item->title());
+}
+
+} // namespace views