OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "ui/views/controls/button/menu_button.h" | 5 #include "ui/views/controls/button/menu_button.h" |
6 | 6 |
7 #include "base/memory/scoped_ptr.h" | 7 #include "base/memory/scoped_ptr.h" |
8 #include "base/strings/utf_string_conversions.h" | 8 #include "base/strings/utf_string_conversions.h" |
9 #include "ui/base/dragdrop/drag_drop_types.h" | 9 #include "ui/base/dragdrop/drag_drop_types.h" |
10 #include "ui/events/test/event_generator.h" | 10 #include "ui/events/test/event_generator.h" |
11 #include "ui/views/controls/button/menu_button_listener.h" | 11 #include "ui/views/controls/button/menu_button_listener.h" |
12 #include "ui/views/drag_controller.h" | 12 #include "ui/views/drag_controller.h" |
13 #include "ui/views/test/views_test_base.h" | 13 #include "ui/views/test/views_test_base.h" |
14 | 14 |
15 #if defined(USE_AURA) | 15 #if defined(USE_AURA) |
16 #include "ui/events/event.h" | 16 #include "ui/events/event.h" |
17 #include "ui/events/event_handler.h" | 17 #include "ui/events/event_handler.h" |
18 #include "ui/wm/public/drag_drop_client.h" | 18 #include "ui/wm/public/drag_drop_client.h" |
19 #endif | 19 #endif |
20 | 20 |
21 using base::ASCIIToUTF16; | 21 using base::ASCIIToUTF16; |
22 | 22 |
23 namespace views { | 23 namespace views { |
24 | 24 |
25 class MenuButtonTest : public ViewsTestBase { | 25 class MenuButtonTest : public ViewsTestBase { |
26 public: | 26 public: |
27 MenuButtonTest() : widget_(nullptr), button_(nullptr) {} | 27 MenuButtonTest() : widget_(nullptr), button_(nullptr) {} |
28 virtual ~MenuButtonTest() {} | 28 ~MenuButtonTest() override {} |
29 | 29 |
30 void TearDown() override { | 30 void TearDown() override { |
31 if (widget_ && !widget_->IsClosed()) | 31 if (widget_ && !widget_->IsClosed()) |
32 widget_->Close(); | 32 widget_->Close(); |
33 | 33 |
34 ViewsTestBase::TearDown(); | 34 ViewsTestBase::TearDown(); |
35 } | 35 } |
36 | 36 |
37 Widget* widget() { return widget_; } | 37 Widget* widget() { return widget_; } |
38 MenuButton* button() { return button_; } | 38 MenuButton* button() { return button_; } |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
82 Widget* widget_; | 82 Widget* widget_; |
83 MenuButton* button_; | 83 MenuButton* button_; |
84 }; | 84 }; |
85 | 85 |
86 class TestButtonListener : public ButtonListener { | 86 class TestButtonListener : public ButtonListener { |
87 public: | 87 public: |
88 TestButtonListener() | 88 TestButtonListener() |
89 : last_sender_(nullptr), | 89 : last_sender_(nullptr), |
90 last_sender_state_(Button::STATE_NORMAL), | 90 last_sender_state_(Button::STATE_NORMAL), |
91 last_event_type_(ui::ET_UNKNOWN) {} | 91 last_event_type_(ui::ET_UNKNOWN) {} |
92 virtual ~TestButtonListener() {} | 92 ~TestButtonListener() override {} |
93 | 93 |
94 void ButtonPressed(Button* sender, const ui::Event& event) override { | 94 void ButtonPressed(Button* sender, const ui::Event& event) override { |
95 last_sender_ = sender; | 95 last_sender_ = sender; |
96 CustomButton* custom_button = CustomButton::AsCustomButton(sender); | 96 CustomButton* custom_button = CustomButton::AsCustomButton(sender); |
97 DCHECK(custom_button); | 97 DCHECK(custom_button); |
98 last_sender_state_ = custom_button->state(); | 98 last_sender_state_ = custom_button->state(); |
99 last_event_type_ = event.type(); | 99 last_event_type_ = event.type(); |
100 } | 100 } |
101 | 101 |
102 Button* last_sender() { return last_sender_; } | 102 Button* last_sender() { return last_sender_; } |
103 Button::ButtonState last_sender_state() { return last_sender_state_; } | 103 Button::ButtonState last_sender_state() { return last_sender_state_; } |
104 ui::EventType last_event_type() { return last_event_type_; } | 104 ui::EventType last_event_type() { return last_event_type_; } |
105 | 105 |
106 private: | 106 private: |
107 Button* last_sender_; | 107 Button* last_sender_; |
108 Button::ButtonState last_sender_state_; | 108 Button::ButtonState last_sender_state_; |
109 ui::EventType last_event_type_; | 109 ui::EventType last_event_type_; |
110 | 110 |
111 DISALLOW_COPY_AND_ASSIGN(TestButtonListener); | 111 DISALLOW_COPY_AND_ASSIGN(TestButtonListener); |
112 }; | 112 }; |
113 | 113 |
114 class TestMenuButtonListener : public MenuButtonListener { | 114 class TestMenuButtonListener : public MenuButtonListener { |
115 public: | 115 public: |
116 TestMenuButtonListener() | 116 TestMenuButtonListener() |
117 : last_source_(nullptr), last_source_state_(Button::STATE_NORMAL) {} | 117 : last_source_(nullptr), last_source_state_(Button::STATE_NORMAL) {} |
118 virtual ~TestMenuButtonListener() {} | 118 ~TestMenuButtonListener() override {} |
119 | 119 |
120 void OnMenuButtonClicked(View* source, const gfx::Point& /*point*/) override { | 120 void OnMenuButtonClicked(View* source, const gfx::Point& /*point*/) override { |
121 last_source_ = source; | 121 last_source_ = source; |
122 CustomButton* custom_button = CustomButton::AsCustomButton(source); | 122 CustomButton* custom_button = CustomButton::AsCustomButton(source); |
123 DCHECK(custom_button); | 123 DCHECK(custom_button); |
124 last_source_state_ = custom_button->state(); | 124 last_source_state_ = custom_button->state(); |
125 } | 125 } |
126 | 126 |
127 View* last_source() { return last_source_; } | 127 View* last_source() { return last_source_; } |
128 Button::ButtonState last_source_state() { return last_source_state_; } | 128 Button::ButtonState last_source_state() { return last_source_state_; } |
129 | 129 |
130 private: | 130 private: |
131 View* last_source_; | 131 View* last_source_; |
132 Button::ButtonState last_source_state_; | 132 Button::ButtonState last_source_state_; |
133 }; | 133 }; |
134 | 134 |
135 // Basic implementation of a DragController, to test input behaviour for | 135 // Basic implementation of a DragController, to test input behaviour for |
136 // MenuButtons that can be dragged. | 136 // MenuButtons that can be dragged. |
137 class TestDragController : public DragController { | 137 class TestDragController : public DragController { |
138 public: | 138 public: |
139 TestDragController() {} | 139 TestDragController() {} |
140 virtual ~TestDragController() {} | 140 ~TestDragController() override {} |
141 | 141 |
142 void WriteDragDataForView(View* sender, | 142 void WriteDragDataForView(View* sender, |
143 const gfx::Point& press_pt, | 143 const gfx::Point& press_pt, |
144 ui::OSExchangeData* data) override {} | 144 ui::OSExchangeData* data) override {} |
145 | 145 |
146 int GetDragOperationsForView(View* sender, const gfx::Point& p) override { | 146 int GetDragOperationsForView(View* sender, const gfx::Point& p) override { |
147 return ui::DragDropTypes::DRAG_MOVE; | 147 return ui::DragDropTypes::DRAG_MOVE; |
148 } | 148 } |
149 | 149 |
150 bool CanStartDragForView(View* sender, | 150 bool CanStartDragForView(View* sender, |
151 const gfx::Point& press_pt, | 151 const gfx::Point& press_pt, |
152 const gfx::Point& p) override { | 152 const gfx::Point& p) override { |
153 return true; | 153 return true; |
154 } | 154 } |
155 | 155 |
156 private: | 156 private: |
157 DISALLOW_COPY_AND_ASSIGN(TestDragController); | 157 DISALLOW_COPY_AND_ASSIGN(TestDragController); |
158 }; | 158 }; |
159 | 159 |
160 #if defined(USE_AURA) | 160 #if defined(USE_AURA) |
161 // Basic implementation of a DragDropClient, tracking the state of the drag | 161 // Basic implementation of a DragDropClient, tracking the state of the drag |
162 // operation. While dragging addition mouse events are consumed, preventing the | 162 // operation. While dragging addition mouse events are consumed, preventing the |
163 // target view from receiving them. | 163 // target view from receiving them. |
164 class TestDragDropClient : public aura::client::DragDropClient, | 164 class TestDragDropClient : public aura::client::DragDropClient, |
165 public ui::EventHandler { | 165 public ui::EventHandler { |
166 public: | 166 public: |
167 TestDragDropClient(); | 167 TestDragDropClient(); |
168 virtual ~TestDragDropClient(); | 168 ~TestDragDropClient() override; |
169 | 169 |
170 // aura::client::DragDropClient: | 170 // aura::client::DragDropClient: |
171 int StartDragAndDrop(const ui::OSExchangeData& data, | 171 int StartDragAndDrop(const ui::OSExchangeData& data, |
172 aura::Window* root_window, | 172 aura::Window* root_window, |
173 aura::Window* source_window, | 173 aura::Window* source_window, |
174 const gfx::Point& root_location, | 174 const gfx::Point& root_location, |
175 int operation, | 175 int operation, |
176 ui::DragDropTypes::DragEventSource source) override; | 176 ui::DragDropTypes::DragEventSource source) override; |
177 void DragUpdate(aura::Window* target, const ui::LocatedEvent& event) override; | 177 void DragUpdate(aura::Window* target, const ui::LocatedEvent& event) override; |
178 void Drop(aura::Window* target, const ui::LocatedEvent& event) override; | 178 void Drop(aura::Window* target, const ui::LocatedEvent& event) override; |
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
384 | 384 |
385 ui::test::EventGenerator generator(GetContext(), widget()->GetNativeWindow()); | 385 ui::test::EventGenerator generator(GetContext(), widget()->GetNativeWindow()); |
386 generator.set_current_location(gfx::Point(10, 10)); | 386 generator.set_current_location(gfx::Point(10, 10)); |
387 generator.DragMouseBy(10, 0); | 387 generator.DragMouseBy(10, 0); |
388 EXPECT_EQ(nullptr, menu_button_listener.last_source()); | 388 EXPECT_EQ(nullptr, menu_button_listener.last_source()); |
389 EXPECT_EQ(Button::STATE_NORMAL, menu_button_listener.last_source_state()); | 389 EXPECT_EQ(Button::STATE_NORMAL, menu_button_listener.last_source_state()); |
390 } | 390 } |
391 #endif | 391 #endif |
392 | 392 |
393 } // namespace views | 393 } // namespace views |
OLD | NEW |