Infobar material design refresh: layout
[chromium-blink-merge.git] / chrome / browser / ui / views / toolbar / toolbar_button_test.cc
blobc22775a7cd1df11d797eb0600ba48deaa036dbe1
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.
5 #include "base/message_loop/message_loop.h"
6 #include "base/strings/utf_string_conversions.h"
7 #include "chrome/browser/ui/views/toolbar/toolbar_button.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"
14 class ToolbarButtonDragTest : public ViewEventTestBase,
15 ui::SimpleMenuModel::Delegate {
16 public:
17 ToolbarButtonDragTest()
18 : button_(NULL),
19 menu_shown_(false),
20 menu_closed_(false) {
23 ~ToolbarButtonDragTest() override {
26 // ViewEventTestBase implementation.
27 void SetUp() override {
28 button_ = new ToolbarButton(NULL, new ui::SimpleMenuModel(this));
30 ViewEventTestBase::SetUp();
33 void TearDown() override {
34 ViewEventTestBase::TearDown();
37 views::View* CreateContentsView() override {
38 return button_;
41 gfx::Size GetPreferredSize() const override {
42 return button_->GetPreferredSize();
45 // ui::SimpleMenuModel::Delegate implementation.
46 bool IsCommandIdChecked(int id) const override {
47 return false;
50 bool IsCommandIdEnabled(int id) const override {
51 return true;
54 bool GetAcceleratorForCommandId(
55 int id,
56 ui::Accelerator* accelerator) override {
57 return false;
60 void ExecuteCommand(int id, int event_flags) override {
63 void MenuWillShow(ui::SimpleMenuModel* /*source*/) override {
64 menu_shown_ = true;
67 void MenuClosed(ui::SimpleMenuModel* /*source*/) override {
68 menu_closed_ = true;
71 // ViewEventTestBase implementation.
72 void DoTestOnMessageLoop() override {
73 // Click on the ToolbarButton.
74 ui_test_utils::MoveMouseToCenterAndPress(
75 button_,
76 ui_controls::LEFT,
77 ui_controls::DOWN,
78 CreateEventTask(this, &ToolbarButtonDragTest::Step1));
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, &ToolbarButtonDragTest::Step2));
92 void Step2() {
93 ASSERT_TRUE(menu_shown_);
95 // Release.
96 ui_controls::SendMouseEventsNotifyWhenDone(
97 ui_controls::LEFT,
98 ui_controls::UP,
99 CreateEventTask(this, &ToolbarButtonDragTest::Step3));
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, &ToolbarButtonDragTest::Step4));
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, &ToolbarButtonDragTest::Step5));
120 void Step5() {
121 ASSERT_TRUE(menu_closed_);
122 Done();
125 private:
126 ToolbarButton* button_;
127 bool menu_shown_;
128 bool menu_closed_;
131 // Broken since landed. crbug.com/325055
132 VIEW_TEST(ToolbarButtonDragTest, DISABLED_DragActivation)