| Index: chrome/browser/ui/views/menu_item_view_test.cc
|
| diff --git a/chrome/browser/ui/views/menu_item_view_test.cc b/chrome/browser/ui/views/menu_item_view_test.cc
|
| index 8990f0d78d5640186e78a5d1135140aa1cd9ce3c..3a70f91a5cb9d13c0cba7910ceb419b608b59930 100644
|
| --- a/chrome/browser/ui/views/menu_item_view_test.cc
|
| +++ b/chrome/browser/ui/views/menu_item_view_test.cc
|
| @@ -2,128 +2,26 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -#include "base/callback.h"
|
| #include "base/strings/utf_string_conversions.h"
|
| -#include "chrome/test/base/interactive_test_utils.h"
|
| -#include "chrome/test/base/ui_test_utils.h"
|
| -#include "chrome/test/base/view_event_test_base.h"
|
| -#include "ui/base/test/ui_controls.h"
|
| -#include "ui/views/controls/button/menu_button.h"
|
| -#include "ui/views/controls/button/menu_button_listener.h"
|
| -#include "ui/views/controls/menu/menu_controller.h"
|
| +#include "chrome/browser/ui/views/menu_test_base.h"
|
| #include "ui/views/controls/menu/menu_item_view.h"
|
| -#include "ui/views/controls/menu/menu_runner.h"
|
| #include "ui/views/controls/menu/submenu_view.h"
|
| -#include "ui/views/widget/root_view.h"
|
| -#include "ui/views/widget/widget.h"
|
|
|
| using base::ASCIIToUTF16;
|
|
|
| -// This is a convenience base class for all tests to provide some
|
| -// common functionality. It sets up a MenuButton and a MenuItemView
|
| -// and clicks the MenuButton.
|
| -//
|
| -// Subclasses should implement:
|
| -// BuildMenu() populate the menu
|
| -// DoTestOnMessageLoop() initiate the test
|
| -//
|
| -// Subclasses can call:
|
| -// Click() to post a mouse click on a View
|
| -//
|
| -// Although it should be possible to post a menu multiple times,
|
| -// MenuItemView prevents repeated activation of a menu by clicks too
|
| -// close in time.
|
| -class MenuItemViewTestBase : public ViewEventTestBase,
|
| - public views::MenuButtonListener,
|
| - public views::MenuDelegate {
|
| - public:
|
| - MenuItemViewTestBase()
|
| - : ViewEventTestBase(),
|
| - button_(NULL),
|
| - menu_(NULL) {
|
| - }
|
| -
|
| - virtual ~MenuItemViewTestBase() {
|
| - }
|
| -
|
| - // ViewEventTestBase implementation.
|
| -
|
| - virtual void SetUp() OVERRIDE {
|
| - button_ = new views::MenuButton(
|
| - NULL, ASCIIToUTF16("Menu Test"), this, true);
|
| - menu_ = new views::MenuItemView(this);
|
| - BuildMenu(menu_);
|
| - menu_runner_.reset(new views::MenuRunner(menu_));
|
| -
|
| - ViewEventTestBase::SetUp();
|
| - }
|
| -
|
| - virtual void TearDown() OVERRIDE {
|
| - menu_runner_.reset(NULL);
|
| - menu_ = NULL;
|
| - ViewEventTestBase::TearDown();
|
| - }
|
| -
|
| - virtual views::View* CreateContentsView() OVERRIDE {
|
| - return button_;
|
| - }
|
| -
|
| - virtual gfx::Size GetPreferredSize() OVERRIDE {
|
| - return button_->GetPreferredSize();
|
| - }
|
| -
|
| - // views::MenuButtonListener implementation.
|
| - virtual void OnMenuButtonClicked(views::View* source,
|
| - const gfx::Point& point) OVERRIDE {
|
| - gfx::Point screen_location;
|
| - views::View::ConvertPointToScreen(source, &screen_location);
|
| - gfx::Rect bounds(screen_location, source->size());
|
| - ignore_result(menu_runner_->RunMenuAt(
|
| - source->GetWidget(),
|
| - button_,
|
| - bounds,
|
| - views::MenuItemView::TOPLEFT,
|
| - ui::MENU_SOURCE_NONE,
|
| - views::MenuRunner::HAS_MNEMONICS));
|
| - }
|
| -
|
| - protected:
|
| - // Generate a mouse click on the specified view and post a new task.
|
| - virtual void Click(views::View* view, const base::Closure& next) {
|
| - ui_test_utils::MoveMouseToCenterAndPress(
|
| - view,
|
| - ui_controls::LEFT,
|
| - ui_controls::DOWN | ui_controls::UP,
|
| - next);
|
| - }
|
| -
|
| - virtual void BuildMenu(views::MenuItemView* menu) {
|
| - }
|
| -
|
| - views::MenuButton* button_;
|
| - views::MenuItemView* menu_;
|
| - scoped_ptr<views::MenuRunner> menu_runner_;
|
| -};
|
| -
|
| // Simple test for clicking a menu item. This template class clicks on an
|
| // item and checks that the returned id matches. The index of the item
|
| // is the template argument.
|
| template<int INDEX>
|
| -class MenuItemViewTestBasic : public MenuItemViewTestBase {
|
| +class MenuItemViewTestBasic : public MenuTestBase {
|
| public:
|
| - MenuItemViewTestBasic() :
|
| - last_command_(0) {
|
| + MenuItemViewTestBasic() {
|
| }
|
|
|
| virtual ~MenuItemViewTestBasic() {
|
| }
|
|
|
| - // views::MenuDelegate implementation
|
| - virtual void ExecuteCommand(int id) OVERRIDE {
|
| - last_command_ = id;
|
| - }
|
| -
|
| - // MenuItemViewTestBase implementation
|
| + // MenuTestBase implementation
|
| virtual void BuildMenu(views::MenuItemView* menu) OVERRIDE {
|
| menu->AppendMenuItemWithLabel(1, ASCIIToUTF16("item 1"));
|
| menu->AppendMenuItemWithLabel(2, ASCIIToUTF16("item 2"));
|
| @@ -131,16 +29,9 @@ class MenuItemViewTestBasic : public MenuItemViewTestBase {
|
| menu->AppendMenuItemWithLabel(3, ASCIIToUTF16("item 3"));
|
| }
|
|
|
| - // ViewEventTestBase implementation
|
| - virtual void DoTestOnMessageLoop() OVERRIDE {
|
| - Click(button_, CreateEventTask(this, &MenuItemViewTestBasic::Step1));
|
| - }
|
| -
|
| // Click on item INDEX.
|
| - void Step1() {
|
| - ASSERT_TRUE(menu_);
|
| -
|
| - views::SubmenuView* submenu = menu_->GetSubmenu();
|
| + virtual void DoTestWithMenuOpen() OVERRIDE {
|
| + views::SubmenuView* submenu = menu()->GetSubmenu();
|
| ASSERT_TRUE(submenu);
|
| ASSERT_TRUE(submenu->IsShowing());
|
| ASSERT_EQ(3, submenu->GetMenuItemCount());
|
| @@ -153,13 +44,13 @@ class MenuItemViewTestBasic : public MenuItemViewTestBase {
|
|
|
| // Check the clicked item and complete the test.
|
| void Step2() {
|
| - ASSERT_FALSE(menu_->GetSubmenu()->IsShowing());
|
| - ASSERT_EQ(INDEX + 1,last_command_);
|
| + ASSERT_FALSE(menu()->GetSubmenu()->IsShowing());
|
| + ASSERT_EQ(INDEX + 1, last_command());
|
| Done();
|
| }
|
|
|
| private:
|
| - int last_command_;
|
| + DISALLOW_COPY_AND_ASSIGN(MenuItemViewTestBasic);
|
| };
|
|
|
| // Click each item of a 3-item menu (with separator).
|
| @@ -172,51 +63,37 @@ VIEW_TEST(MenuItemViewTestBasic2, SelectItem2)
|
|
|
| // Test class for inserting a menu item while the menu is open.
|
| template<int INSERT_INDEX, int SELECT_INDEX>
|
| -class MenuItemViewTestInsert : public MenuItemViewTestBase {
|
| +class MenuItemViewTestInsert : public MenuTestBase {
|
| public:
|
| - MenuItemViewTestInsert() :
|
| - last_command_(0),
|
| - inserted_item_(NULL) {
|
| + MenuItemViewTestInsert() : inserted_item_(NULL) {
|
| }
|
|
|
| virtual ~MenuItemViewTestInsert() {
|
| }
|
|
|
| - // views::MenuDelegate implementation
|
| - virtual void ExecuteCommand(int id) OVERRIDE {
|
| - last_command_ = id;
|
| - }
|
| -
|
| - // MenuItemViewTestBase implementation
|
| + // MenuTestBase implementation
|
| virtual void BuildMenu(views::MenuItemView* menu) OVERRIDE {
|
| menu->AppendMenuItemWithLabel(1, ASCIIToUTF16("item 1"));
|
| menu->AppendMenuItemWithLabel(2, ASCIIToUTF16("item 2"));
|
| }
|
|
|
| - // ViewEventTestBase implementation
|
| - virtual void DoTestOnMessageLoop() OVERRIDE {
|
| - Click(button_, CreateEventTask(this, &MenuItemViewTestInsert::Step1));
|
| - }
|
| -
|
| // Insert item at INSERT_INDEX and click item at SELECT_INDEX.
|
| - void Step1() {
|
| - ASSERT_TRUE(menu_);
|
| -
|
| - views::SubmenuView* submenu = menu_->GetSubmenu();
|
| + virtual void DoTestWithMenuOpen() OVERRIDE {
|
| + views::SubmenuView* submenu = menu()->GetSubmenu();
|
| ASSERT_TRUE(submenu);
|
| ASSERT_TRUE(submenu->IsShowing());
|
| ASSERT_EQ(2, submenu->GetMenuItemCount());
|
|
|
| - inserted_item_ = menu_->AddMenuItemAt(INSERT_INDEX,
|
| - 1000,
|
| - ASCIIToUTF16("inserted item"),
|
| - base::string16(),
|
| - base::string16(),
|
| - gfx::ImageSkia(),
|
| - views::MenuItemView::NORMAL,
|
| - ui::NORMAL_SEPARATOR);
|
| + inserted_item_ = menu()->AddMenuItemAt(INSERT_INDEX,
|
| + 1000,
|
| + ASCIIToUTF16("inserted item"),
|
| + base::string16(),
|
| + base::string16(),
|
| + gfx::ImageSkia(),
|
| + views::MenuItemView::NORMAL,
|
| + ui::NORMAL_SEPARATOR);
|
| ASSERT_TRUE(inserted_item_);
|
| - menu_->ChildrenChanged();
|
| + menu()->ChildrenChanged();
|
|
|
| // click an item and pass control to the next step
|
| views::MenuItemView* item = submenu->GetMenuItemAt(SELECT_INDEX);
|
| @@ -226,26 +103,25 @@ class MenuItemViewTestInsert : public MenuItemViewTestBase {
|
|
|
| // Check clicked item and complete test.
|
| void Step2() {
|
| - ASSERT_TRUE(menu_);
|
| -
|
| - views::SubmenuView* submenu = menu_->GetSubmenu();
|
| + views::SubmenuView* submenu = menu()->GetSubmenu();
|
| ASSERT_TRUE(submenu);
|
| ASSERT_FALSE(submenu->IsShowing());
|
| ASSERT_EQ(3, submenu->GetMenuItemCount());
|
|
|
| if (SELECT_INDEX == INSERT_INDEX)
|
| - ASSERT_EQ(1000, last_command_);
|
| + ASSERT_EQ(1000, last_command());
|
| else if (SELECT_INDEX < INSERT_INDEX)
|
| - ASSERT_EQ(SELECT_INDEX + 1, last_command_);
|
| + ASSERT_EQ(SELECT_INDEX + 1, last_command());
|
| else
|
| - ASSERT_EQ(SELECT_INDEX, last_command_);
|
| + ASSERT_EQ(SELECT_INDEX, last_command());
|
|
|
| Done();
|
| }
|
|
|
| private:
|
| - int last_command_;
|
| views::MenuItemView* inserted_item_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(MenuItemViewTestInsert);
|
| };
|
|
|
| // MenuItemViewTestInsertXY inserts an item at index X and selects the
|
| @@ -267,10 +143,9 @@ VIEW_TEST(MenuItemViewTestInsert22, InsertItem22)
|
|
|
| // Test class for inserting a menu item while a submenu is open.
|
| template<int INSERT_INDEX>
|
| -class MenuItemViewTestInsertWithSubmenu : public MenuItemViewTestBase {
|
| +class MenuItemViewTestInsertWithSubmenu : public MenuTestBase {
|
| public:
|
| MenuItemViewTestInsertWithSubmenu() :
|
| - last_command_(0),
|
| submenu_(NULL),
|
| inserted_item_(NULL) {
|
| }
|
| @@ -278,12 +153,7 @@ class MenuItemViewTestInsertWithSubmenu : public MenuItemViewTestBase {
|
| virtual ~MenuItemViewTestInsertWithSubmenu() {
|
| }
|
|
|
| - // views::MenuDelegate implementation
|
| - virtual void ExecuteCommand(int id) OVERRIDE {
|
| - last_command_ = id;
|
| - }
|
| -
|
| - // MenuItemViewTestBase implementation
|
| + // MenuTestBase implementation
|
| virtual void BuildMenu(views::MenuItemView* menu) OVERRIDE {
|
| submenu_ = menu->AppendSubMenu(1, ASCIIToUTF16("My Submenu"));
|
| submenu_->AppendMenuItemWithLabel(101, ASCIIToUTF16("submenu item 1"));
|
| @@ -291,30 +161,24 @@ class MenuItemViewTestInsertWithSubmenu : public MenuItemViewTestBase {
|
| menu->AppendMenuItemWithLabel(2, ASCIIToUTF16("item 2"));
|
| }
|
|
|
| - // ViewEventTestBase implementation
|
| - virtual void DoTestOnMessageLoop() OVERRIDE {
|
| - Click(button_,
|
| - CreateEventTask(this, &MenuItemViewTestInsertWithSubmenu::Step1));
|
| - }
|
| -
|
| // Post submenu.
|
| - void Step1() {
|
| + virtual void DoTestWithMenuOpen() OVERRIDE {
|
| Click(submenu_,
|
| CreateEventTask(this, &MenuItemViewTestInsertWithSubmenu::Step2));
|
| }
|
|
|
| // Insert item at INSERT_INDEX.
|
| void Step2() {
|
| - inserted_item_ = menu_->AddMenuItemAt(INSERT_INDEX,
|
| - 1000,
|
| - ASCIIToUTF16("inserted item"),
|
| - base::string16(),
|
| - base::string16(),
|
| - gfx::ImageSkia(),
|
| - views::MenuItemView::NORMAL,
|
| - ui::NORMAL_SEPARATOR);
|
| + inserted_item_ = menu()->AddMenuItemAt(INSERT_INDEX,
|
| + 1000,
|
| + ASCIIToUTF16("inserted item"),
|
| + base::string16(),
|
| + base::string16(),
|
| + gfx::ImageSkia(),
|
| + views::MenuItemView::NORMAL,
|
| + ui::NORMAL_SEPARATOR);
|
| ASSERT_TRUE(inserted_item_);
|
| - menu_->ChildrenChanged();
|
| + menu()->ChildrenChanged();
|
|
|
| Click(inserted_item_,
|
| CreateEventTask(this, &MenuItemViewTestInsertWithSubmenu::Step3));
|
| @@ -325,9 +189,10 @@ class MenuItemViewTestInsertWithSubmenu : public MenuItemViewTestBase {
|
| }
|
|
|
| private:
|
| - int last_command_;
|
| views::MenuItemView* submenu_;
|
| views::MenuItemView* inserted_item_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(MenuItemViewTestInsertWithSubmenu);
|
| };
|
|
|
| // MenuItemViewTestInsertWithSubmenuX posts a menu and its submenu,
|
| @@ -339,44 +204,31 @@ VIEW_TEST(MenuItemViewTestInsertWithSubmenu1, InsertItemWithSubmenu1)
|
|
|
| // Test class for removing a menu item while the menu is open.
|
| template<int REMOVE_INDEX, int SELECT_INDEX>
|
| -class MenuItemViewTestRemove : public MenuItemViewTestBase {
|
| +class MenuItemViewTestRemove : public MenuTestBase {
|
| public:
|
| - MenuItemViewTestRemove()
|
| - : last_command_(0) {
|
| + MenuItemViewTestRemove() {
|
| }
|
|
|
| virtual ~MenuItemViewTestRemove() {
|
| }
|
|
|
| - // views::MenuDelegate implementation
|
| - virtual void ExecuteCommand(int id) OVERRIDE {
|
| - last_command_ = id;
|
| - }
|
| -
|
| - // MenuItemViewTestBase implementation
|
| + // MenuTestBase implementation
|
| virtual void BuildMenu(views::MenuItemView* menu) OVERRIDE {
|
| menu->AppendMenuItemWithLabel(1, ASCIIToUTF16("item 1"));
|
| menu->AppendMenuItemWithLabel(2, ASCIIToUTF16("item 2"));
|
| menu->AppendMenuItemWithLabel(3, ASCIIToUTF16("item 3"));
|
| }
|
|
|
| - // ViewEventTestBase implementation
|
| - virtual void DoTestOnMessageLoop() OVERRIDE {
|
| - Click(button_, CreateEventTask(this, &MenuItemViewTestRemove::Step1));
|
| - }
|
| -
|
| // Remove item at REMOVE_INDEX and click item at SELECT_INDEX.
|
| - void Step1() {
|
| - ASSERT_TRUE(menu_);
|
| -
|
| - views::SubmenuView* submenu = menu_->GetSubmenu();
|
| + virtual void DoTestWithMenuOpen() OVERRIDE {
|
| + views::SubmenuView* submenu = menu()->GetSubmenu();
|
| ASSERT_TRUE(submenu);
|
| ASSERT_TRUE(submenu->IsShowing());
|
| ASSERT_EQ(3, submenu->GetMenuItemCount());
|
|
|
| // remove
|
| - menu_->RemoveMenuItemAt(REMOVE_INDEX);
|
| - menu_->ChildrenChanged();
|
| + menu()->RemoveMenuItemAt(REMOVE_INDEX);
|
| + menu()->ChildrenChanged();
|
|
|
| // click
|
| views::MenuItemView* item = submenu->GetMenuItemAt(SELECT_INDEX);
|
| @@ -386,23 +238,21 @@ class MenuItemViewTestRemove : public MenuItemViewTestBase {
|
|
|
| // Check clicked item and complete test.
|
| void Step2() {
|
| - ASSERT_TRUE(menu_);
|
| -
|
| - views::SubmenuView* submenu = menu_->GetSubmenu();
|
| + views::SubmenuView* submenu = menu()->GetSubmenu();
|
| ASSERT_TRUE(submenu);
|
| ASSERT_FALSE(submenu->IsShowing());
|
| ASSERT_EQ(2, submenu->GetMenuItemCount());
|
|
|
| if (SELECT_INDEX < REMOVE_INDEX)
|
| - ASSERT_EQ(SELECT_INDEX + 1, last_command_);
|
| + ASSERT_EQ(SELECT_INDEX + 1, last_command());
|
| else
|
| - ASSERT_EQ(SELECT_INDEX + 2, last_command_);
|
| + ASSERT_EQ(SELECT_INDEX + 2, last_command());
|
|
|
| Done();
|
| }
|
|
|
| private:
|
| - int last_command_;
|
| + DISALLOW_COPY_AND_ASSIGN(MenuItemViewTestRemove);
|
| };
|
|
|
| typedef MenuItemViewTestRemove<0,0> MenuItemViewTestRemove00;
|
| @@ -420,22 +270,15 @@ VIEW_TEST(MenuItemViewTestRemove21, RemoveItem21)
|
|
|
| // Test class for removing a menu item while a submenu is open.
|
| template<int REMOVE_INDEX>
|
| -class MenuItemViewTestRemoveWithSubmenu : public MenuItemViewTestBase {
|
| +class MenuItemViewTestRemoveWithSubmenu : public MenuTestBase {
|
| public:
|
| - MenuItemViewTestRemoveWithSubmenu() :
|
| - last_command_(0),
|
| - submenu_(NULL) {
|
| + MenuItemViewTestRemoveWithSubmenu() : submenu_(NULL) {
|
| }
|
|
|
| virtual ~MenuItemViewTestRemoveWithSubmenu() {
|
| }
|
|
|
| - // views::MenuDelegate implementation
|
| - virtual void ExecuteCommand(int id) OVERRIDE {
|
| - last_command_ = id;
|
| - }
|
| -
|
| - // MenuItemViewTestBase implementation
|
| + // MenuTestBase implementation
|
| virtual void BuildMenu(views::MenuItemView* menu) OVERRIDE {
|
| menu->AppendMenuItemWithLabel(1, ASCIIToUTF16("item 1"));
|
| submenu_ = menu->AppendSubMenu(2, ASCIIToUTF16("My Submenu"));
|
| @@ -443,17 +286,9 @@ class MenuItemViewTestRemoveWithSubmenu : public MenuItemViewTestBase {
|
| submenu_->AppendMenuItemWithLabel(102, ASCIIToUTF16("submenu item 2"));
|
| }
|
|
|
| - // ViewEventTestBase implementation
|
| - virtual void DoTestOnMessageLoop() OVERRIDE {
|
| - Click(button_,
|
| - CreateEventTask(this, &MenuItemViewTestRemoveWithSubmenu::Step1));
|
| - }
|
| -
|
| // Post submenu.
|
| - void Step1() {
|
| - ASSERT_TRUE(menu_);
|
| -
|
| - views::SubmenuView* submenu = menu_->GetSubmenu();
|
| + virtual void DoTestWithMenuOpen() OVERRIDE {
|
| + views::SubmenuView* submenu = menu()->GetSubmenu();
|
| ASSERT_TRUE(submenu);
|
| ASSERT_TRUE(submenu->IsShowing());
|
|
|
| @@ -461,28 +296,24 @@ class MenuItemViewTestRemoveWithSubmenu : public MenuItemViewTestBase {
|
| CreateEventTask(this, &MenuItemViewTestRemoveWithSubmenu::Step2));
|
| }
|
|
|
| - // Remove item at REMOVE_INDEX and select it to exit the menu loop.
|
| + // Remove item at REMOVE_INDEX and press escape to exit the menu loop.
|
| void Step2() {
|
| - ASSERT_TRUE(menu_);
|
| -
|
| - views::SubmenuView* submenu = menu_->GetSubmenu();
|
| + views::SubmenuView* submenu = menu()->GetSubmenu();
|
| ASSERT_TRUE(submenu);
|
| ASSERT_TRUE(submenu->IsShowing());
|
| ASSERT_EQ(2, submenu->GetMenuItemCount());
|
|
|
| // remove
|
| - menu_->RemoveMenuItemAt(REMOVE_INDEX);
|
| - menu_->ChildrenChanged();
|
| + menu()->RemoveMenuItemAt(REMOVE_INDEX);
|
| + menu()->ChildrenChanged();
|
|
|
| // click
|
| - Click(button_,
|
| - CreateEventTask(this, &MenuItemViewTestRemoveWithSubmenu::Step3));
|
| + KeyPress(ui::VKEY_ESCAPE,
|
| + CreateEventTask(this, &MenuItemViewTestRemoveWithSubmenu::Step3));
|
| }
|
|
|
| void Step3() {
|
| - ASSERT_TRUE(menu_);
|
| -
|
| - views::SubmenuView* submenu = menu_->GetSubmenu();
|
| + views::SubmenuView* submenu = menu()->GetSubmenu();
|
| ASSERT_TRUE(submenu);
|
| ASSERT_FALSE(submenu->IsShowing());
|
| ASSERT_EQ(1, submenu->GetMenuItemCount());
|
| @@ -491,8 +322,9 @@ class MenuItemViewTestRemoveWithSubmenu : public MenuItemViewTestBase {
|
| }
|
|
|
| private:
|
| - int last_command_;
|
| views::MenuItemView* submenu_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(MenuItemViewTestRemoveWithSubmenu);
|
| };
|
|
|
| typedef MenuItemViewTestRemoveWithSubmenu<0> MenuItemViewTestRemoveWithSubmenu0;
|
|
|