| 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/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" | |
| 13 | |
| 14 class ToolbarButtonDragTest : public ViewEventTestBase, | |
| 15 ui::SimpleMenuModel::Delegate { | |
| 16 public: | |
| 17 ToolbarButtonDragTest() | |
| 18 : button_(NULL), | |
| 19 menu_shown_(false), | |
| 20 menu_closed_(false) { | |
| 21 } | |
| 22 | |
| 23 ~ToolbarButtonDragTest() override { | |
| 24 } | |
| 25 | |
| 26 // ViewEventTestBase implementation. | |
| 27 void SetUp() override { | |
| 28 button_ = new ToolbarButton(NULL, new ui::SimpleMenuModel(this)); | |
| 29 | |
| 30 ViewEventTestBase::SetUp(); | |
| 31 } | |
| 32 | |
| 33 void TearDown() override { | |
| 34 ViewEventTestBase::TearDown(); | |
| 35 } | |
| 36 | |
| 37 views::View* CreateContentsView() override { | |
| 38 return button_; | |
| 39 } | |
| 40 | |
| 41 gfx::Size GetPreferredSize() const override { | |
| 42 return button_->GetPreferredSize(); | |
| 43 } | |
| 44 | |
| 45 // ui::SimpleMenuModel::Delegate implementation. | |
| 46 bool IsCommandIdChecked(int id) const override { | |
| 47 return false; | |
| 48 } | |
| 49 | |
| 50 bool IsCommandIdEnabled(int id) const override { | |
| 51 return true; | |
| 52 } | |
| 53 | |
| 54 bool GetAcceleratorForCommandId( | |
| 55 int id, | |
| 56 ui::Accelerator* accelerator) override { | |
| 57 return false; | |
| 58 } | |
| 59 | |
| 60 void ExecuteCommand(int id, int event_flags) override { | |
| 61 } | |
| 62 | |
| 63 void MenuWillShow(ui::SimpleMenuModel* /*source*/) override { | |
| 64 menu_shown_ = true; | |
| 65 } | |
| 66 | |
| 67 void MenuClosed(ui::SimpleMenuModel* /*source*/) override { | |
| 68 menu_closed_ = true; | |
| 69 } | |
| 70 | |
| 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)); | |
| 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, &ToolbarButtonDragTest::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, &ToolbarButtonDragTest::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, &ToolbarButtonDragTest::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, &ToolbarButtonDragTest::Step5)); | |
| 118 } | |
| 119 | |
| 120 void Step5() { | |
| 121 ASSERT_TRUE(menu_closed_); | |
| 122 Done(); | |
| 123 } | |
| 124 | |
| 125 private: | |
| 126 ToolbarButton* button_; | |
| 127 bool menu_shown_; | |
| 128 bool menu_closed_; | |
| 129 }; | |
| 130 | |
| 131 // Broken since landed. crbug.com/325055 | |
| 132 VIEW_TEST(ToolbarButtonDragTest, DISABLED_DragActivation) | |
| OLD | NEW |