OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/basictypes.h" | 5 #include "base/basictypes.h" |
6 #include "base/memory/scoped_ptr.h" | 6 #include "base/memory/scoped_ptr.h" |
7 #include "base/message_loop.h" | 7 #include "base/message_loop.h" |
8 #include "testing/gtest/include/gtest/gtest.h" | 8 #include "testing/gtest/include/gtest/gtest.h" |
9 #include "ui/gfx/native_widget_types.h" | 9 #include "ui/gfx/native_widget_types.h" |
10 #include "ui/gfx/point.h" | 10 #include "ui/gfx/point.h" |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
64 // relevant platforms. | 64 // relevant platforms. |
65 #if defined(USE_AURA) | 65 #if defined(USE_AURA) |
66 typedef NativeWidgetCapture NativeWidgetPlatformForTest; | 66 typedef NativeWidgetCapture NativeWidgetPlatformForTest; |
67 #elif defined(OS_WIN) | 67 #elif defined(OS_WIN) |
68 typedef NativeWidgetWin NativeWidgetPlatformForTest; | 68 typedef NativeWidgetWin NativeWidgetPlatformForTest; |
69 #endif | 69 #endif |
70 | 70 |
71 // A view that always processes all mouse events. | 71 // A view that always processes all mouse events. |
72 class MouseView : public View { | 72 class MouseView : public View { |
73 public: | 73 public: |
74 MouseView() : View() { | 74 MouseView() |
| 75 : View(), |
| 76 entered_(0), |
| 77 exited_(0) { |
75 } | 78 } |
76 virtual ~MouseView() {} | 79 virtual ~MouseView() {} |
77 | 80 |
78 virtual bool OnMousePressed(const ui::MouseEvent& event) OVERRIDE { | 81 virtual bool OnMousePressed(const ui::MouseEvent& event) OVERRIDE { |
79 return true; | 82 return true; |
80 } | 83 } |
| 84 |
| 85 virtual void OnMouseEntered(const ui::MouseEvent& event) OVERRIDE { |
| 86 entered_++; |
| 87 } |
| 88 |
| 89 virtual void OnMouseExited(const ui::MouseEvent& event) OVERRIDE { |
| 90 exited_++; |
| 91 } |
| 92 |
| 93 // Return the number of OnMouseEntered calls and reset the counter. |
| 94 int EnteredCalls() { |
| 95 int i = entered_; |
| 96 entered_ = 0; |
| 97 return i; |
| 98 } |
| 99 |
| 100 // Return the number of OnMouseExited calls and reset the counter. |
| 101 int ExitedCalls() { |
| 102 int i = exited_; |
| 103 exited_ = 0; |
| 104 return i; |
| 105 } |
| 106 |
| 107 private: |
| 108 int entered_; |
| 109 int exited_; |
| 110 |
| 111 DISALLOW_COPY_AND_ASSIGN(MouseView); |
81 }; | 112 }; |
82 | 113 |
83 typedef ViewsTestBase WidgetTest; | 114 typedef ViewsTestBase WidgetTest; |
84 | 115 |
85 NativeWidget* CreatePlatformNativeWidget( | 116 NativeWidget* CreatePlatformNativeWidget( |
86 internal::NativeWidgetDelegate* delegate) { | 117 internal::NativeWidgetDelegate* delegate) { |
87 return new NativeWidgetPlatformForTest(delegate); | 118 return new NativeWidgetPlatformForTest(delegate); |
88 } | 119 } |
89 | 120 |
90 Widget* CreateTopLevelPlatformWidget() { | 121 Widget* CreateTopLevelPlatformWidget() { |
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
244 ui::MouseEvent released2(ui::ET_MOUSE_RELEASED, p2, p2, | 275 ui::MouseEvent released2(ui::ET_MOUSE_RELEASED, p2, p2, |
245 ui::EF_LEFT_MOUSE_BUTTON); | 276 ui::EF_LEFT_MOUSE_BUTTON); |
246 toplevel->OnMouseEvent(released2); | 277 toplevel->OnMouseEvent(released2); |
247 EXPECT_FALSE(WidgetHasMouseCapture(toplevel)); | 278 EXPECT_FALSE(WidgetHasMouseCapture(toplevel)); |
248 EXPECT_FALSE(WidgetHasMouseCapture(child1)); | 279 EXPECT_FALSE(WidgetHasMouseCapture(child1)); |
249 EXPECT_FALSE(WidgetHasMouseCapture(child2)); | 280 EXPECT_FALSE(WidgetHasMouseCapture(child2)); |
250 | 281 |
251 toplevel->CloseNow(); | 282 toplevel->CloseNow(); |
252 } | 283 } |
253 | 284 |
| 285 // Tests mouse move outside of the window into the "resize controller" and back |
| 286 // will still generate an OnMouseEntered and OnMouseExited event.. |
| 287 TEST_F(WidgetTest, CheckResizeControllerEvents) { |
| 288 Widget* toplevel = CreateTopLevelPlatformWidget(); |
| 289 |
| 290 toplevel->SetBounds(gfx::Rect(0, 0, 100, 100)); |
| 291 |
| 292 MouseView* view = new MouseView(); |
| 293 view->SetBounds(90, 90, 10, 10); |
| 294 toplevel->GetRootView()->AddChildView(view); |
| 295 |
| 296 toplevel->Show(); |
| 297 RunPendingMessages(); |
| 298 |
| 299 // Move to an outside position. |
| 300 gfx::Point p1(200, 200); |
| 301 ui::MouseEvent moved_out(ui::ET_MOUSE_MOVED, p1, p1, ui::EF_NONE); |
| 302 toplevel->OnMouseEvent(moved_out); |
| 303 EXPECT_EQ(0, view->EnteredCalls()); |
| 304 EXPECT_EQ(0, view->ExitedCalls()); |
| 305 |
| 306 // Move onto the active view. |
| 307 gfx::Point p2(95, 95); |
| 308 ui::MouseEvent moved_over(ui::ET_MOUSE_MOVED, p2, p2, ui::EF_NONE); |
| 309 toplevel->OnMouseEvent(moved_over); |
| 310 EXPECT_EQ(1, view->EnteredCalls()); |
| 311 EXPECT_EQ(0, view->ExitedCalls()); |
| 312 |
| 313 // Move onto the outer resizing border. |
| 314 gfx::Point p3(102, 95); |
| 315 ui::MouseEvent moved_resizer(ui::ET_MOUSE_MOVED, p3, p3, ui::EF_NONE); |
| 316 toplevel->OnMouseEvent(moved_resizer); |
| 317 EXPECT_EQ(0, view->EnteredCalls()); |
| 318 EXPECT_EQ(1, view->ExitedCalls()); |
| 319 |
| 320 // Move onto the view again. |
| 321 toplevel->OnMouseEvent(moved_over); |
| 322 EXPECT_EQ(1, view->EnteredCalls()); |
| 323 EXPECT_EQ(0, view->ExitedCalls()); |
| 324 |
| 325 RunPendingMessages(); |
| 326 |
| 327 toplevel->CloseNow(); |
| 328 } |
| 329 |
254 // Test if a focus manager and an inputmethod work without CHECK failure | 330 // Test if a focus manager and an inputmethod work without CHECK failure |
255 // when window activation changes. | 331 // when window activation changes. |
256 TEST_F(WidgetTest, ChangeActivation) { | 332 TEST_F(WidgetTest, ChangeActivation) { |
257 Widget* top1 = CreateTopLevelPlatformWidget(); | 333 Widget* top1 = CreateTopLevelPlatformWidget(); |
258 // CreateInputMethod before activated | 334 // CreateInputMethod before activated |
259 top1->GetInputMethod(); | 335 top1->GetInputMethod(); |
260 top1->Show(); | 336 top1->Show(); |
261 RunPendingMessages(); | 337 RunPendingMessages(); |
262 | 338 |
263 Widget* top2 = CreateTopLevelPlatformWidget(); | 339 Widget* top2 = CreateTopLevelPlatformWidget(); |
(...skipping 557 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
821 // And it stays maximized after getting out of full screen. | 897 // And it stays maximized after getting out of full screen. |
822 EXPECT_EQ(ui::SHOW_STATE_MAXIMIZED, GetWidgetShowState(toplevel)); | 898 EXPECT_EQ(ui::SHOW_STATE_MAXIMIZED, GetWidgetShowState(toplevel)); |
823 | 899 |
824 // Clean up. | 900 // Clean up. |
825 toplevel->Close(); | 901 toplevel->Close(); |
826 RunPendingMessages(); | 902 RunPendingMessages(); |
827 } | 903 } |
828 | 904 |
829 } // namespace | 905 } // namespace |
830 } // namespace views | 906 } // namespace views |
OLD | NEW |