Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 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 | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #include "base/message_loop.h" | |
| 6 #include "base/utf_string_conversions.h" | |
| 7 #include "ui/base/models/simple_menu_model.h" | |
| 8 #include "chrome/browser/automation/ui_controls.h" | |
| 9 #include "chrome/test/interactive_ui/view_event_test_base.h" | |
| 10 #include "views/controls/button/button_dropdown.h" | |
| 11 | |
| 12 class ButtonDropDownDragTest : public ViewEventTestBase, | |
| 13 ui::SimpleMenuModel::Delegate { | |
| 14 public: | |
| 15 ButtonDropDownDragTest() : button_(NULL), | |
|
sky
2011/05/31 23:10:40
nit: if you can't fit all the members on the initi
rhashimoto
2011/05/31 23:36:49
Done.
| |
| 16 ALLOW_THIS_IN_INITIALIZER_LIST(menu_model_(this)), | |
| 17 menu_shown_(false), | |
| 18 menu_closed_(false) { | |
| 19 } | |
| 20 | |
| 21 virtual ~ButtonDropDownDragTest() { | |
| 22 } | |
| 23 | |
| 24 // ViewEventTestBase implementation. | |
| 25 virtual void SetUp() OVERRIDE { | |
| 26 button_ = new views::ButtonDropDown(NULL, &menu_model_); | |
| 27 | |
| 28 ViewEventTestBase::SetUp(); | |
| 29 } | |
| 30 | |
| 31 virtual void TearDown() OVERRIDE { | |
| 32 ViewEventTestBase::TearDown(); | |
| 33 } | |
| 34 | |
| 35 virtual views::View* CreateContentsView() OVERRIDE { | |
| 36 return button_; | |
| 37 } | |
| 38 | |
| 39 virtual gfx::Size GetPreferredSize() OVERRIDE { | |
| 40 return button_->GetPreferredSize(); | |
| 41 } | |
| 42 | |
| 43 // ui::SimpleMenuModel::Delegate implementation. | |
| 44 virtual bool IsCommandIdChecked(int id) const OVERRIDE { | |
| 45 return false; | |
| 46 } | |
| 47 | |
| 48 virtual bool IsCommandIdEnabled(int id) const OVERRIDE { | |
| 49 return true; | |
| 50 } | |
| 51 | |
| 52 virtual bool GetAcceleratorForCommandId( | |
| 53 int id, | |
| 54 ui::Accelerator* accelerator) OVERRIDE { | |
| 55 return false; | |
| 56 } | |
| 57 | |
| 58 virtual void ExecuteCommand(int id) OVERRIDE { | |
| 59 } | |
| 60 | |
| 61 virtual void MenuWillShow() OVERRIDE { | |
| 62 menu_shown_ = true; | |
| 63 } | |
| 64 | |
| 65 virtual void MenuClosed() OVERRIDE { | |
| 66 menu_closed_ = true; | |
| 67 } | |
| 68 | |
| 69 // ViewEventTestBase implementation. | |
| 70 virtual void DoTestOnMessageLoop() OVERRIDE { | |
| 71 // Click on the ButtonDropDown. | |
| 72 ui_controls::MoveMouseToCenterAndPress( | |
| 73 button_, | |
| 74 ui_controls::LEFT, | |
| 75 ui_controls::DOWN, | |
| 76 CreateEventTask(this, &ButtonDropDownDragTest::Step1)); | |
| 77 } | |
| 78 | |
| 79 void Step1() { | |
| 80 // Drag to invoke the menu. | |
| 81 gfx::Point view_center; | |
| 82 views::View::ConvertPointToScreen(button_, &view_center); | |
| 83 ui_controls::SendMouseMoveNotifyWhenDone( | |
| 84 view_center.x(), view_center.y() + button_->height(), | |
| 85 CreateEventTask(this, &ButtonDropDownDragTest::Step2)); | |
| 86 } | |
| 87 | |
| 88 void Step2() { | |
| 89 ASSERT_TRUE(menu_shown_); | |
| 90 | |
| 91 // Release. | |
| 92 ui_controls::SendMouseEventsNotifyWhenDone( | |
| 93 ui_controls::LEFT, | |
| 94 ui_controls::UP, | |
| 95 CreateEventTask(this, &ButtonDropDownDragTest::Step3)); | |
| 96 } | |
| 97 | |
| 98 void Step3() { | |
| 99 // Click mouse to dismiss menu. The views menu does not dismiss the | |
| 100 // menu on click-drag-release unless an item is selected. | |
| 101 ui_controls::MoveMouseToCenterAndPress( | |
| 102 button_, | |
| 103 ui_controls::LEFT, | |
| 104 ui_controls::DOWN, | |
| 105 CreateEventTask(this, &ButtonDropDownDragTest::Step4)); | |
| 106 } | |
| 107 | |
| 108 void Step4() { | |
| 109 // One more hop is required because ui::SimpleMenuModel calls | |
| 110 // ui::SimpleMenuModel::Delegate::MenuClosed() via a posted | |
| 111 // task. | |
| 112 MessageLoopForUI::current()->PostTask( | |
| 113 FROM_HERE, | |
| 114 CreateEventTask(this, &ButtonDropDownDragTest::Step5)); | |
| 115 } | |
| 116 | |
| 117 void Step5() { | |
| 118 ASSERT_TRUE(menu_closed_); | |
| 119 Done(); | |
| 120 } | |
| 121 | |
| 122 private: | |
| 123 views::ButtonDropDown* button_; | |
| 124 ui::SimpleMenuModel menu_model_; | |
| 125 bool menu_shown_; | |
| 126 bool menu_closed_; | |
| 127 }; | |
| 128 | |
| 129 VIEW_TEST(ButtonDropDownDragTest, DragActivation) | |
| OLD | NEW |