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