| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/automation/ui_controls.h" | 5 #include "chrome/browser/automation/ui_controls.h" |
| 6 #include "chrome/test/base/view_event_test_base.h" | 6 #include "chrome/test/base/view_event_test_base.h" |
| 7 #include "views/controls/button/menu_button.h" | 7 #include "views/controls/button/menu_button.h" |
| 8 #include "views/controls/menu/menu_controller.h" | 8 #include "views/controls/menu/menu_controller.h" |
| 9 #include "views/controls/menu/menu_item_view.h" | 9 #include "views/controls/menu/menu_item_view.h" |
| 10 #include "views/controls/menu/menu_runner.h" |
| 10 #include "views/controls/menu/submenu_view.h" | 11 #include "views/controls/menu/submenu_view.h" |
| 11 #include "views/controls/menu/view_menu_delegate.h" | 12 #include "views/controls/menu/view_menu_delegate.h" |
| 12 #include "views/widget/root_view.h" | 13 #include "views/widget/root_view.h" |
| 13 #include "views/widget/widget.h" | 14 #include "views/widget/widget.h" |
| 14 | 15 |
| 15 // This is a convenience base class for all tests to provide some | 16 // This is a convenience base class for all tests to provide some |
| 16 // common functionality. It sets up a MenuButton and a MenuItemView | 17 // common functionality. It sets up a MenuButton and a MenuItemView |
| 17 // and clicks the MenuButton. | 18 // and clicks the MenuButton. |
| 18 // | 19 // |
| 19 // Subclasses should implement: | 20 // Subclasses should implement: |
| 20 // BuildMenu() populate the menu | 21 // BuildMenu() populate the menu |
| 21 // DoTestOnMessageLoop() initiate the test | 22 // DoTestOnMessageLoop() initiate the test |
| 22 // | 23 // |
| 23 // Subclasses can call: | 24 // Subclasses can call: |
| 24 // Click() to post a mouse click on a View | 25 // Click() to post a mouse click on a View |
| 25 // | 26 // |
| 26 // Although it should be possible to post a menu multiple times, | 27 // Although it should be possible to post a menu multiple times, |
| 27 // MenuItemView prevents repeated activation of a menu by clicks too | 28 // MenuItemView prevents repeated activation of a menu by clicks too |
| 28 // close in time. | 29 // close in time. |
| 29 class MenuItemViewTestBase : public ViewEventTestBase, | 30 class MenuItemViewTestBase : public ViewEventTestBase, |
| 30 public views::ViewMenuDelegate, | 31 public views::ViewMenuDelegate, |
| 31 public views::MenuDelegate { | 32 public views::MenuDelegate { |
| 32 public: | 33 public: |
| 33 MenuItemViewTestBase() : | 34 MenuItemViewTestBase() |
| 34 ViewEventTestBase(), | 35 : ViewEventTestBase(), |
| 35 button_(NULL), | 36 button_(NULL), |
| 36 menu_(NULL) { | 37 menu_(NULL) { |
| 37 } | 38 } |
| 38 | 39 |
| 39 virtual ~MenuItemViewTestBase() { | 40 virtual ~MenuItemViewTestBase() { |
| 40 } | 41 } |
| 41 | 42 |
| 42 // ViewEventTestBase implementation. | 43 // ViewEventTestBase implementation. |
| 43 | 44 |
| 44 virtual void SetUp() OVERRIDE { | 45 virtual void SetUp() OVERRIDE { |
| 45 button_ = new views::MenuButton(NULL, L"Menu Test", this, true); | 46 button_ = new views::MenuButton(NULL, L"Menu Test", this, true); |
| 46 menu_.reset(new views::MenuItemView(this)); | 47 menu_ = new views::MenuItemView(this); |
| 47 BuildMenu(menu_.get()); | 48 BuildMenu(menu_); |
| 49 menu_runner_.reset(new views::MenuRunner(menu_)); |
| 48 | 50 |
| 49 ViewEventTestBase::SetUp(); | 51 ViewEventTestBase::SetUp(); |
| 50 } | 52 } |
| 51 | 53 |
| 52 virtual void TearDown() OVERRIDE { | 54 virtual void TearDown() OVERRIDE { |
| 53 menu_.reset(NULL); | 55 menu_runner_.reset(NULL); |
| 56 menu_ = NULL; |
| 54 ViewEventTestBase::TearDown(); | 57 ViewEventTestBase::TearDown(); |
| 55 } | 58 } |
| 56 | 59 |
| 57 virtual views::View* CreateContentsView() OVERRIDE { | 60 virtual views::View* CreateContentsView() OVERRIDE { |
| 58 return button_; | 61 return button_; |
| 59 } | 62 } |
| 60 | 63 |
| 61 virtual gfx::Size GetPreferredSize() OVERRIDE { | 64 virtual gfx::Size GetPreferredSize() OVERRIDE { |
| 62 return button_->GetPreferredSize(); | 65 return button_->GetPreferredSize(); |
| 63 } | 66 } |
| 64 | 67 |
| 65 // views::ViewMenuDelegate implementation. | 68 // views::ViewMenuDelegate implementation. |
| 66 virtual void RunMenu(views::View* source, const gfx::Point& pt) OVERRIDE { | 69 virtual void RunMenu(views::View* source, const gfx::Point& pt) OVERRIDE { |
| 67 gfx::Point screen_location; | 70 gfx::Point screen_location; |
| 68 views::View::ConvertPointToScreen(source, &screen_location); | 71 views::View::ConvertPointToScreen(source, &screen_location); |
| 69 gfx::Rect bounds(screen_location, source->size()); | 72 gfx::Rect bounds(screen_location, source->size()); |
| 70 menu_->RunMenuAt( | 73 ignore_result(menu_runner_->RunMenuAt( |
| 71 source->GetWidget(), | 74 source->GetWidget(), |
| 72 button_, | 75 button_, |
| 73 bounds, | 76 bounds, |
| 74 views::MenuItemView::TOPLEFT, | 77 views::MenuItemView::TOPLEFT, |
| 75 true); | 78 views::MenuRunner::HAS_MNEMONICS)); |
| 76 } | 79 } |
| 77 | 80 |
| 78 protected: | 81 protected: |
| 79 // Generate a mouse click on the specified view and post a new task. | 82 // Generate a mouse click on the specified view and post a new task. |
| 80 virtual void Click(views::View* view, Task* next) { | 83 virtual void Click(views::View* view, Task* next) { |
| 81 ui_controls::MoveMouseToCenterAndPress( | 84 ui_controls::MoveMouseToCenterAndPress( |
| 82 view, | 85 view, |
| 83 ui_controls::LEFT, | 86 ui_controls::LEFT, |
| 84 ui_controls::DOWN | ui_controls::UP, | 87 ui_controls::DOWN | ui_controls::UP, |
| 85 next); | 88 next); |
| 86 } | 89 } |
| 87 | 90 |
| 88 virtual void BuildMenu(views::MenuItemView* menu) { | 91 virtual void BuildMenu(views::MenuItemView* menu) { |
| 89 } | 92 } |
| 90 | 93 |
| 91 views::MenuButton* button_; | 94 views::MenuButton* button_; |
| 92 scoped_ptr<views::MenuItemView> menu_; | 95 views::MenuItemView* menu_; |
| 96 scoped_ptr<views::MenuRunner> menu_runner_; |
| 93 }; | 97 }; |
| 94 | 98 |
| 95 // Simple test for clicking a menu item. This template class clicks on an | 99 // Simple test for clicking a menu item. This template class clicks on an |
| 96 // item and checks that the returned id matches. The index of the item | 100 // item and checks that the returned id matches. The index of the item |
| 97 // is the template argument. | 101 // is the template argument. |
| 98 template<int INDEX> | 102 template<int INDEX> |
| 99 class MenuItemViewTestBasic : public MenuItemViewTestBase { | 103 class MenuItemViewTestBasic : public MenuItemViewTestBase { |
| 100 public: | 104 public: |
| 101 MenuItemViewTestBasic() : | 105 MenuItemViewTestBasic() : |
| 102 last_command_(0) { | 106 last_command_(0) { |
| (...skipping 15 matching lines...) Expand all Loading... |
| 118 menu->AppendMenuItemWithLabel(3, L"item 3"); | 122 menu->AppendMenuItemWithLabel(3, L"item 3"); |
| 119 } | 123 } |
| 120 | 124 |
| 121 // ViewEventTestBase implementation | 125 // ViewEventTestBase implementation |
| 122 virtual void DoTestOnMessageLoop() OVERRIDE { | 126 virtual void DoTestOnMessageLoop() OVERRIDE { |
| 123 Click(button_, CreateEventTask(this, &MenuItemViewTestBasic::Step1)); | 127 Click(button_, CreateEventTask(this, &MenuItemViewTestBasic::Step1)); |
| 124 } | 128 } |
| 125 | 129 |
| 126 // Click on item INDEX. | 130 // Click on item INDEX. |
| 127 void Step1() { | 131 void Step1() { |
| 128 ASSERT_TRUE(menu_.get()); | 132 ASSERT_TRUE(menu_); |
| 129 | 133 |
| 130 views::SubmenuView* submenu = menu_->GetSubmenu(); | 134 views::SubmenuView* submenu = menu_->GetSubmenu(); |
| 131 ASSERT_TRUE(submenu); | 135 ASSERT_TRUE(submenu); |
| 132 ASSERT_TRUE(submenu->IsShowing()); | 136 ASSERT_TRUE(submenu->IsShowing()); |
| 133 ASSERT_EQ(3, submenu->GetMenuItemCount()); | 137 ASSERT_EQ(3, submenu->GetMenuItemCount()); |
| 134 | 138 |
| 135 // click an item and pass control to the next step | 139 // click an item and pass control to the next step |
| 136 views::MenuItemView* item = submenu->GetMenuItemAt(INDEX); | 140 views::MenuItemView* item = submenu->GetMenuItemAt(INDEX); |
| 137 ASSERT_TRUE(item); | 141 ASSERT_TRUE(item); |
| 138 Click(item, CreateEventTask(this, &MenuItemViewTestBasic::Step2)); | 142 Click(item, CreateEventTask(this, &MenuItemViewTestBasic::Step2)); |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 180 menu->AppendMenuItemWithLabel(2, L"item 2"); | 184 menu->AppendMenuItemWithLabel(2, L"item 2"); |
| 181 } | 185 } |
| 182 | 186 |
| 183 // ViewEventTestBase implementation | 187 // ViewEventTestBase implementation |
| 184 virtual void DoTestOnMessageLoop() OVERRIDE { | 188 virtual void DoTestOnMessageLoop() OVERRIDE { |
| 185 Click(button_, CreateEventTask(this, &MenuItemViewTestInsert::Step1)); | 189 Click(button_, CreateEventTask(this, &MenuItemViewTestInsert::Step1)); |
| 186 } | 190 } |
| 187 | 191 |
| 188 // Insert item at INSERT_INDEX and click item at SELECT_INDEX. | 192 // Insert item at INSERT_INDEX and click item at SELECT_INDEX. |
| 189 void Step1() { | 193 void Step1() { |
| 190 ASSERT_TRUE(menu_.get()); | 194 ASSERT_TRUE(menu_); |
| 191 | 195 |
| 192 views::SubmenuView* submenu = menu_->GetSubmenu(); | 196 views::SubmenuView* submenu = menu_->GetSubmenu(); |
| 193 ASSERT_TRUE(submenu); | 197 ASSERT_TRUE(submenu); |
| 194 ASSERT_TRUE(submenu->IsShowing()); | 198 ASSERT_TRUE(submenu->IsShowing()); |
| 195 ASSERT_EQ(2, submenu->GetMenuItemCount()); | 199 ASSERT_EQ(2, submenu->GetMenuItemCount()); |
| 196 | 200 |
| 197 inserted_item_ = menu_->AddMenuItemAt(INSERT_INDEX, 1000, | 201 inserted_item_ = menu_->AddMenuItemAt(INSERT_INDEX, 1000, |
| 198 L"inserted item", SkBitmap(), | 202 L"inserted item", SkBitmap(), |
| 199 views::MenuItemView::NORMAL); | 203 views::MenuItemView::NORMAL); |
| 200 ASSERT_TRUE(inserted_item_); | 204 ASSERT_TRUE(inserted_item_); |
| 201 menu_->ChildrenChanged(); | 205 menu_->ChildrenChanged(); |
| 202 | 206 |
| 203 // click an item and pass control to the next step | 207 // click an item and pass control to the next step |
| 204 views::MenuItemView* item = submenu->GetMenuItemAt(SELECT_INDEX); | 208 views::MenuItemView* item = submenu->GetMenuItemAt(SELECT_INDEX); |
| 205 ASSERT_TRUE(item); | 209 ASSERT_TRUE(item); |
| 206 Click(item, CreateEventTask(this, &MenuItemViewTestInsert::Step2)); | 210 Click(item, CreateEventTask(this, &MenuItemViewTestInsert::Step2)); |
| 207 } | 211 } |
| 208 | 212 |
| 209 // Check clicked item and complete test. | 213 // Check clicked item and complete test. |
| 210 void Step2() { | 214 void Step2() { |
| 211 ASSERT_TRUE(menu_.get()); | 215 ASSERT_TRUE(menu_); |
| 212 | 216 |
| 213 views::SubmenuView* submenu = menu_->GetSubmenu(); | 217 views::SubmenuView* submenu = menu_->GetSubmenu(); |
| 214 ASSERT_TRUE(submenu); | 218 ASSERT_TRUE(submenu); |
| 215 ASSERT_FALSE(submenu->IsShowing()); | 219 ASSERT_FALSE(submenu->IsShowing()); |
| 216 ASSERT_EQ(3, submenu->GetMenuItemCount()); | 220 ASSERT_EQ(3, submenu->GetMenuItemCount()); |
| 217 | 221 |
| 218 if (SELECT_INDEX == INSERT_INDEX) | 222 if (SELECT_INDEX == INSERT_INDEX) |
| 219 ASSERT_EQ(1000, last_command_); | 223 ASSERT_EQ(1000, last_command_); |
| 220 else if (SELECT_INDEX < INSERT_INDEX) | 224 else if (SELECT_INDEX < INSERT_INDEX) |
| 221 ASSERT_EQ(SELECT_INDEX + 1, last_command_); | 225 ASSERT_EQ(SELECT_INDEX + 1, last_command_); |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 311 // then inserts an item in the top-level menu at X. | 315 // then inserts an item in the top-level menu at X. |
| 312 typedef MenuItemViewTestInsertWithSubmenu<0> MenuItemViewTestInsertWithSubmenu0; | 316 typedef MenuItemViewTestInsertWithSubmenu<0> MenuItemViewTestInsertWithSubmenu0; |
| 313 typedef MenuItemViewTestInsertWithSubmenu<1> MenuItemViewTestInsertWithSubmenu1; | 317 typedef MenuItemViewTestInsertWithSubmenu<1> MenuItemViewTestInsertWithSubmenu1; |
| 314 VIEW_TEST(MenuItemViewTestInsertWithSubmenu0, InsertItemWithSubmenu0) | 318 VIEW_TEST(MenuItemViewTestInsertWithSubmenu0, InsertItemWithSubmenu0) |
| 315 VIEW_TEST(MenuItemViewTestInsertWithSubmenu1, InsertItemWithSubmenu1) | 319 VIEW_TEST(MenuItemViewTestInsertWithSubmenu1, InsertItemWithSubmenu1) |
| 316 | 320 |
| 317 // Test class for removing a menu item while the menu is open. | 321 // Test class for removing a menu item while the menu is open. |
| 318 template<int REMOVE_INDEX, int SELECT_INDEX> | 322 template<int REMOVE_INDEX, int SELECT_INDEX> |
| 319 class MenuItemViewTestRemove : public MenuItemViewTestBase { | 323 class MenuItemViewTestRemove : public MenuItemViewTestBase { |
| 320 public: | 324 public: |
| 321 MenuItemViewTestRemove() : | 325 MenuItemViewTestRemove() |
| 322 last_command_(0) { | 326 : last_command_(0) { |
| 323 } | 327 } |
| 324 | 328 |
| 325 virtual ~MenuItemViewTestRemove() { | 329 virtual ~MenuItemViewTestRemove() { |
| 326 } | 330 } |
| 327 | 331 |
| 328 // views::MenuDelegate implementation | 332 // views::MenuDelegate implementation |
| 329 virtual void ExecuteCommand(int id) OVERRIDE { | 333 virtual void ExecuteCommand(int id) OVERRIDE { |
| 330 last_command_ = id; | 334 last_command_ = id; |
| 331 } | 335 } |
| 332 | 336 |
| 333 // MenuItemViewTestBase implementation | 337 // MenuItemViewTestBase implementation |
| 334 virtual void BuildMenu(views::MenuItemView* menu) OVERRIDE { | 338 virtual void BuildMenu(views::MenuItemView* menu) OVERRIDE { |
| 335 menu->AppendMenuItemWithLabel(1, L"item 1"); | 339 menu->AppendMenuItemWithLabel(1, L"item 1"); |
| 336 menu->AppendMenuItemWithLabel(2, L"item 2"); | 340 menu->AppendMenuItemWithLabel(2, L"item 2"); |
| 337 menu->AppendMenuItemWithLabel(3, L"item 3"); | 341 menu->AppendMenuItemWithLabel(3, L"item 3"); |
| 338 } | 342 } |
| 339 | 343 |
| 340 // ViewEventTestBase implementation | 344 // ViewEventTestBase implementation |
| 341 virtual void DoTestOnMessageLoop() OVERRIDE { | 345 virtual void DoTestOnMessageLoop() OVERRIDE { |
| 342 Click(button_, CreateEventTask(this, &MenuItemViewTestRemove::Step1)); | 346 Click(button_, CreateEventTask(this, &MenuItemViewTestRemove::Step1)); |
| 343 } | 347 } |
| 344 | 348 |
| 345 // Remove item at REMOVE_INDEX and click item at SELECT_INDEX. | 349 // Remove item at REMOVE_INDEX and click item at SELECT_INDEX. |
| 346 void Step1() { | 350 void Step1() { |
| 347 ASSERT_TRUE(menu_.get()); | 351 ASSERT_TRUE(menu_); |
| 348 | 352 |
| 349 views::SubmenuView* submenu = menu_->GetSubmenu(); | 353 views::SubmenuView* submenu = menu_->GetSubmenu(); |
| 350 ASSERT_TRUE(submenu); | 354 ASSERT_TRUE(submenu); |
| 351 ASSERT_TRUE(submenu->IsShowing()); | 355 ASSERT_TRUE(submenu->IsShowing()); |
| 352 ASSERT_EQ(3, submenu->GetMenuItemCount()); | 356 ASSERT_EQ(3, submenu->GetMenuItemCount()); |
| 353 | 357 |
| 354 // remove | 358 // remove |
| 355 menu_->RemoveMenuItemAt(REMOVE_INDEX); | 359 menu_->RemoveMenuItemAt(REMOVE_INDEX); |
| 356 menu_->ChildrenChanged(); | 360 menu_->ChildrenChanged(); |
| 357 | 361 |
| 358 // click | 362 // click |
| 359 views::MenuItemView* item = submenu->GetMenuItemAt(SELECT_INDEX); | 363 views::MenuItemView* item = submenu->GetMenuItemAt(SELECT_INDEX); |
| 360 ASSERT_TRUE(item); | 364 ASSERT_TRUE(item); |
| 361 Click(item, CreateEventTask(this, &MenuItemViewTestRemove::Step2)); | 365 Click(item, CreateEventTask(this, &MenuItemViewTestRemove::Step2)); |
| 362 } | 366 } |
| 363 | 367 |
| 364 // Check clicked item and complete test. | 368 // Check clicked item and complete test. |
| 365 void Step2() { | 369 void Step2() { |
| 366 ASSERT_TRUE(menu_.get()); | 370 ASSERT_TRUE(menu_); |
| 367 | 371 |
| 368 views::SubmenuView* submenu = menu_->GetSubmenu(); | 372 views::SubmenuView* submenu = menu_->GetSubmenu(); |
| 369 ASSERT_TRUE(submenu); | 373 ASSERT_TRUE(submenu); |
| 370 ASSERT_FALSE(submenu->IsShowing()); | 374 ASSERT_FALSE(submenu->IsShowing()); |
| 371 ASSERT_EQ(2, submenu->GetMenuItemCount()); | 375 ASSERT_EQ(2, submenu->GetMenuItemCount()); |
| 372 | 376 |
| 373 if (SELECT_INDEX < REMOVE_INDEX) | 377 if (SELECT_INDEX < REMOVE_INDEX) |
| 374 ASSERT_EQ(SELECT_INDEX + 1, last_command_); | 378 ASSERT_EQ(SELECT_INDEX + 1, last_command_); |
| 375 else | 379 else |
| 376 ASSERT_EQ(SELECT_INDEX + 2, last_command_); | 380 ASSERT_EQ(SELECT_INDEX + 2, last_command_); |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 421 } | 425 } |
| 422 | 426 |
| 423 // ViewEventTestBase implementation | 427 // ViewEventTestBase implementation |
| 424 virtual void DoTestOnMessageLoop() OVERRIDE { | 428 virtual void DoTestOnMessageLoop() OVERRIDE { |
| 425 Click(button_, | 429 Click(button_, |
| 426 CreateEventTask(this, &MenuItemViewTestRemoveWithSubmenu::Step1)); | 430 CreateEventTask(this, &MenuItemViewTestRemoveWithSubmenu::Step1)); |
| 427 } | 431 } |
| 428 | 432 |
| 429 // Post submenu. | 433 // Post submenu. |
| 430 void Step1() { | 434 void Step1() { |
| 431 ASSERT_TRUE(menu_.get()); | 435 ASSERT_TRUE(menu_); |
| 432 | 436 |
| 433 views::SubmenuView* submenu = menu_->GetSubmenu(); | 437 views::SubmenuView* submenu = menu_->GetSubmenu(); |
| 434 ASSERT_TRUE(submenu); | 438 ASSERT_TRUE(submenu); |
| 435 ASSERT_TRUE(submenu->IsShowing()); | 439 ASSERT_TRUE(submenu->IsShowing()); |
| 436 | 440 |
| 437 Click(submenu_, | 441 Click(submenu_, |
| 438 CreateEventTask(this, &MenuItemViewTestRemoveWithSubmenu::Step2)); | 442 CreateEventTask(this, &MenuItemViewTestRemoveWithSubmenu::Step2)); |
| 439 } | 443 } |
| 440 | 444 |
| 441 // Remove item at REMOVE_INDEX and select it to exit the menu loop. | 445 // Remove item at REMOVE_INDEX and select it to exit the menu loop. |
| 442 void Step2() { | 446 void Step2() { |
| 443 ASSERT_TRUE(menu_.get()); | 447 ASSERT_TRUE(menu_); |
| 444 | 448 |
| 445 views::SubmenuView* submenu = menu_->GetSubmenu(); | 449 views::SubmenuView* submenu = menu_->GetSubmenu(); |
| 446 ASSERT_TRUE(submenu); | 450 ASSERT_TRUE(submenu); |
| 447 ASSERT_TRUE(submenu->IsShowing()); | 451 ASSERT_TRUE(submenu->IsShowing()); |
| 448 ASSERT_EQ(2, submenu->GetMenuItemCount()); | 452 ASSERT_EQ(2, submenu->GetMenuItemCount()); |
| 449 | 453 |
| 450 // remove | 454 // remove |
| 451 menu_->RemoveMenuItemAt(REMOVE_INDEX); | 455 menu_->RemoveMenuItemAt(REMOVE_INDEX); |
| 452 menu_->ChildrenChanged(); | 456 menu_->ChildrenChanged(); |
| 453 | 457 |
| 454 // click | 458 // click |
| 455 Click(button_, | 459 Click(button_, |
| 456 CreateEventTask(this, &MenuItemViewTestRemoveWithSubmenu::Step3)); | 460 CreateEventTask(this, &MenuItemViewTestRemoveWithSubmenu::Step3)); |
| 457 } | 461 } |
| 458 | 462 |
| 459 void Step3() { | 463 void Step3() { |
| 460 ASSERT_TRUE(menu_.get()); | 464 ASSERT_TRUE(menu_); |
| 461 | 465 |
| 462 views::SubmenuView* submenu = menu_->GetSubmenu(); | 466 views::SubmenuView* submenu = menu_->GetSubmenu(); |
| 463 ASSERT_TRUE(submenu); | 467 ASSERT_TRUE(submenu); |
| 464 ASSERT_FALSE(submenu->IsShowing()); | 468 ASSERT_FALSE(submenu->IsShowing()); |
| 465 ASSERT_EQ(1, submenu->GetMenuItemCount()); | 469 ASSERT_EQ(1, submenu->GetMenuItemCount()); |
| 466 | 470 |
| 467 Done(); | 471 Done(); |
| 468 } | 472 } |
| 469 | 473 |
| 470 private: | 474 private: |
| 471 int last_command_; | 475 int last_command_; |
| 472 views::MenuItemView* submenu_; | 476 views::MenuItemView* submenu_; |
| 473 }; | 477 }; |
| 474 | 478 |
| 475 typedef MenuItemViewTestRemoveWithSubmenu<0> MenuItemViewTestRemoveWithSubmenu0; | 479 typedef MenuItemViewTestRemoveWithSubmenu<0> MenuItemViewTestRemoveWithSubmenu0; |
| 476 typedef MenuItemViewTestRemoveWithSubmenu<1> MenuItemViewTestRemoveWithSubmenu1; | 480 typedef MenuItemViewTestRemoveWithSubmenu<1> MenuItemViewTestRemoveWithSubmenu1; |
| 477 VIEW_TEST(MenuItemViewTestRemoveWithSubmenu0, RemoveItemWithSubmenu0) | 481 VIEW_TEST(MenuItemViewTestRemoveWithSubmenu0, RemoveItemWithSubmenu0) |
| 478 VIEW_TEST(MenuItemViewTestRemoveWithSubmenu1, RemoveItemWithSubmenu1) | 482 VIEW_TEST(MenuItemViewTestRemoveWithSubmenu1, RemoveItemWithSubmenu1) |
| OLD | NEW |