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