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 "base/utf_string_conversions.h" | 8 #include "base/utf_string_conversions.h" |
9 #include "testing/gtest/include/gtest/gtest.h" | 9 #include "testing/gtest/include/gtest/gtest.h" |
10 #include "ui/gfx/native_widget_types.h" | 10 #include "ui/gfx/native_widget_types.h" |
(...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
277 view->SetBounds(0, 0, 200, 200); | 277 view->SetBounds(0, 0, 200, 200); |
278 child2->GetRootView()->AddChildView(view); | 278 child2->GetRootView()->AddChildView(view); |
279 | 279 |
280 toplevel->Show(); | 280 toplevel->Show(); |
281 RunPendingMessages(); | 281 RunPendingMessages(); |
282 | 282 |
283 // Click on child1 | 283 // Click on child1 |
284 gfx::Point p1(45, 45); | 284 gfx::Point p1(45, 45); |
285 ui::MouseEvent pressed(ui::ET_MOUSE_PRESSED, p1, p1, | 285 ui::MouseEvent pressed(ui::ET_MOUSE_PRESSED, p1, p1, |
286 ui::EF_LEFT_MOUSE_BUTTON); | 286 ui::EF_LEFT_MOUSE_BUTTON); |
287 toplevel->OnMouseEvent(pressed); | 287 toplevel->OnMouseEvent(&pressed); |
288 | 288 |
289 EXPECT_TRUE(WidgetHasMouseCapture(toplevel)); | 289 EXPECT_TRUE(WidgetHasMouseCapture(toplevel)); |
290 EXPECT_TRUE(WidgetHasMouseCapture(child1)); | 290 EXPECT_TRUE(WidgetHasMouseCapture(child1)); |
291 EXPECT_FALSE(WidgetHasMouseCapture(child2)); | 291 EXPECT_FALSE(WidgetHasMouseCapture(child2)); |
292 | 292 |
293 ui::MouseEvent released(ui::ET_MOUSE_RELEASED, p1, p1, | 293 ui::MouseEvent released(ui::ET_MOUSE_RELEASED, p1, p1, |
294 ui::EF_LEFT_MOUSE_BUTTON); | 294 ui::EF_LEFT_MOUSE_BUTTON); |
295 toplevel->OnMouseEvent(released); | 295 toplevel->OnMouseEvent(&released); |
296 | 296 |
297 EXPECT_FALSE(WidgetHasMouseCapture(toplevel)); | 297 EXPECT_FALSE(WidgetHasMouseCapture(toplevel)); |
298 EXPECT_FALSE(WidgetHasMouseCapture(child1)); | 298 EXPECT_FALSE(WidgetHasMouseCapture(child1)); |
299 EXPECT_FALSE(WidgetHasMouseCapture(child2)); | 299 EXPECT_FALSE(WidgetHasMouseCapture(child2)); |
300 | 300 |
301 RunPendingMessages(); | 301 RunPendingMessages(); |
302 | 302 |
303 // Click on child2 | 303 // Click on child2 |
304 gfx::Point p2(315, 45); | 304 gfx::Point p2(315, 45); |
305 ui::MouseEvent pressed2(ui::ET_MOUSE_PRESSED, p2, p2, | 305 ui::MouseEvent pressed2(ui::ET_MOUSE_PRESSED, p2, p2, |
306 ui::EF_LEFT_MOUSE_BUTTON); | 306 ui::EF_LEFT_MOUSE_BUTTON); |
307 EXPECT_TRUE(toplevel->OnMouseEvent(pressed2)); | 307 toplevel->OnMouseEvent(&pressed2); |
| 308 EXPECT_TRUE(pressed2.handled()); |
308 EXPECT_TRUE(WidgetHasMouseCapture(toplevel)); | 309 EXPECT_TRUE(WidgetHasMouseCapture(toplevel)); |
309 EXPECT_TRUE(WidgetHasMouseCapture(child2)); | 310 EXPECT_TRUE(WidgetHasMouseCapture(child2)); |
310 EXPECT_FALSE(WidgetHasMouseCapture(child1)); | 311 EXPECT_FALSE(WidgetHasMouseCapture(child1)); |
311 | 312 |
312 ui::MouseEvent released2(ui::ET_MOUSE_RELEASED, p2, p2, | 313 ui::MouseEvent released2(ui::ET_MOUSE_RELEASED, p2, p2, |
313 ui::EF_LEFT_MOUSE_BUTTON); | 314 ui::EF_LEFT_MOUSE_BUTTON); |
314 toplevel->OnMouseEvent(released2); | 315 toplevel->OnMouseEvent(&released2); |
315 EXPECT_FALSE(WidgetHasMouseCapture(toplevel)); | 316 EXPECT_FALSE(WidgetHasMouseCapture(toplevel)); |
316 EXPECT_FALSE(WidgetHasMouseCapture(child1)); | 317 EXPECT_FALSE(WidgetHasMouseCapture(child1)); |
317 EXPECT_FALSE(WidgetHasMouseCapture(child2)); | 318 EXPECT_FALSE(WidgetHasMouseCapture(child2)); |
318 | 319 |
319 toplevel->CloseNow(); | 320 toplevel->CloseNow(); |
320 } | 321 } |
321 | 322 |
322 // Tests mouse move outside of the window into the "resize controller" and back | 323 // Tests mouse move outside of the window into the "resize controller" and back |
323 // will still generate an OnMouseEntered and OnMouseExited event.. | 324 // will still generate an OnMouseEntered and OnMouseExited event.. |
324 TEST_F(WidgetTest, CheckResizeControllerEvents) { | 325 TEST_F(WidgetTest, CheckResizeControllerEvents) { |
325 Widget* toplevel = CreateTopLevelPlatformWidget(); | 326 Widget* toplevel = CreateTopLevelPlatformWidget(); |
326 | 327 |
327 toplevel->SetBounds(gfx::Rect(0, 0, 100, 100)); | 328 toplevel->SetBounds(gfx::Rect(0, 0, 100, 100)); |
328 | 329 |
329 MouseView* view = new MouseView(); | 330 MouseView* view = new MouseView(); |
330 view->SetBounds(90, 90, 10, 10); | 331 view->SetBounds(90, 90, 10, 10); |
331 toplevel->GetRootView()->AddChildView(view); | 332 toplevel->GetRootView()->AddChildView(view); |
332 | 333 |
333 toplevel->Show(); | 334 toplevel->Show(); |
334 RunPendingMessages(); | 335 RunPendingMessages(); |
335 | 336 |
336 // Move to an outside position. | 337 // Move to an outside position. |
337 gfx::Point p1(200, 200); | 338 gfx::Point p1(200, 200); |
338 ui::MouseEvent moved_out(ui::ET_MOUSE_MOVED, p1, p1, ui::EF_NONE); | 339 ui::MouseEvent moved_out(ui::ET_MOUSE_MOVED, p1, p1, ui::EF_NONE); |
339 toplevel->OnMouseEvent(moved_out); | 340 toplevel->OnMouseEvent(&moved_out); |
340 EXPECT_EQ(0, view->EnteredCalls()); | 341 EXPECT_EQ(0, view->EnteredCalls()); |
341 EXPECT_EQ(0, view->ExitedCalls()); | 342 EXPECT_EQ(0, view->ExitedCalls()); |
342 | 343 |
343 // Move onto the active view. | 344 // Move onto the active view. |
344 gfx::Point p2(95, 95); | 345 gfx::Point p2(95, 95); |
345 ui::MouseEvent moved_over(ui::ET_MOUSE_MOVED, p2, p2, ui::EF_NONE); | 346 ui::MouseEvent moved_over(ui::ET_MOUSE_MOVED, p2, p2, ui::EF_NONE); |
346 toplevel->OnMouseEvent(moved_over); | 347 toplevel->OnMouseEvent(&moved_over); |
347 EXPECT_EQ(1, view->EnteredCalls()); | 348 EXPECT_EQ(1, view->EnteredCalls()); |
348 EXPECT_EQ(0, view->ExitedCalls()); | 349 EXPECT_EQ(0, view->ExitedCalls()); |
349 | 350 |
350 // Move onto the outer resizing border. | 351 // Move onto the outer resizing border. |
351 gfx::Point p3(102, 95); | 352 gfx::Point p3(102, 95); |
352 ui::MouseEvent moved_resizer(ui::ET_MOUSE_MOVED, p3, p3, ui::EF_NONE); | 353 ui::MouseEvent moved_resizer(ui::ET_MOUSE_MOVED, p3, p3, ui::EF_NONE); |
353 toplevel->OnMouseEvent(moved_resizer); | 354 toplevel->OnMouseEvent(&moved_resizer); |
354 EXPECT_EQ(0, view->EnteredCalls()); | 355 EXPECT_EQ(0, view->EnteredCalls()); |
355 EXPECT_EQ(1, view->ExitedCalls()); | 356 EXPECT_EQ(1, view->ExitedCalls()); |
356 | 357 |
357 // Move onto the view again. | 358 // Move onto the view again. |
358 toplevel->OnMouseEvent(moved_over); | 359 toplevel->OnMouseEvent(&moved_over); |
359 EXPECT_EQ(1, view->EnteredCalls()); | 360 EXPECT_EQ(1, view->EnteredCalls()); |
360 EXPECT_EQ(0, view->ExitedCalls()); | 361 EXPECT_EQ(0, view->ExitedCalls()); |
361 | 362 |
362 RunPendingMessages(); | 363 RunPendingMessages(); |
363 | 364 |
364 toplevel->CloseNow(); | 365 toplevel->CloseNow(); |
365 } | 366 } |
366 | 367 |
367 // Test if a focus manager and an inputmethod work without CHECK failure | 368 // Test if a focus manager and an inputmethod work without CHECK failure |
368 // when window activation changes. | 369 // when window activation changes. |
(...skipping 621 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
990 toplevel->OnGestureEvent(&begin); | 991 toplevel->OnGestureEvent(&begin); |
991 | 992 |
992 // Now try to click on |mouse|. Since |gesture| will have capture, |mouse| | 993 // Now try to click on |mouse|. Since |gesture| will have capture, |mouse| |
993 // will not receive the event. | 994 // will not receive the event. |
994 gfx::Point click_location(45, 15); | 995 gfx::Point click_location(45, 15); |
995 ui::MouseEvent press(ui::ET_MOUSE_PRESSED, click_location, click_location, | 996 ui::MouseEvent press(ui::ET_MOUSE_PRESSED, click_location, click_location, |
996 ui::EF_LEFT_MOUSE_BUTTON); | 997 ui::EF_LEFT_MOUSE_BUTTON); |
997 ui::MouseEvent release(ui::ET_MOUSE_RELEASED, click_location, click_location, | 998 ui::MouseEvent release(ui::ET_MOUSE_RELEASED, click_location, click_location, |
998 ui::EF_LEFT_MOUSE_BUTTON); | 999 ui::EF_LEFT_MOUSE_BUTTON); |
999 | 1000 |
1000 toplevel->OnMouseEvent(press); | 1001 toplevel->OnMouseEvent(&press); |
1001 toplevel->OnMouseEvent(release); | 1002 toplevel->OnMouseEvent(&release); |
1002 EXPECT_EQ(0, mouse->pressed()); | 1003 EXPECT_EQ(0, mouse->pressed()); |
1003 | 1004 |
1004 // The end of the gesture should release the capture, and pressing on |mouse| | 1005 // The end of the gesture should release the capture, and pressing on |mouse| |
1005 // should now reach |mouse|. | 1006 // should now reach |mouse|. |
1006 toplevel->OnGestureEvent(&end); | 1007 toplevel->OnGestureEvent(&end); |
1007 toplevel->OnMouseEvent(press); | 1008 toplevel->OnMouseEvent(&press); |
1008 toplevel->OnMouseEvent(release); | 1009 toplevel->OnMouseEvent(&release); |
1009 EXPECT_EQ(1, mouse->pressed()); | 1010 EXPECT_EQ(1, mouse->pressed()); |
1010 | 1011 |
1011 toplevel->Close(); | 1012 toplevel->Close(); |
1012 RunPendingMessages(); | 1013 RunPendingMessages(); |
1013 } | 1014 } |
1014 | 1015 |
1015 #if defined(USE_AURA) | 1016 #if defined(USE_AURA) |
1016 // The key-event propagation from Widget happens differently on aura and | 1017 // The key-event propagation from Widget happens differently on aura and |
1017 // non-aura systems because of the difference in IME. So this test works only on | 1018 // non-aura systems because of the difference in IME. So this test works only on |
1018 // aura. | 1019 // aura. |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1074 bubble_widget->CloseNow(); | 1075 bubble_widget->CloseNow(); |
1075 | 1076 |
1076 // Closing the bubble should result in focus going back to the contents view. | 1077 // Closing the bubble should result in focus going back to the contents view. |
1077 EXPECT_TRUE(contents_view->HasFocus()); | 1078 EXPECT_TRUE(contents_view->HasFocus()); |
1078 } | 1079 } |
1079 | 1080 |
1080 #endif // defined(USE_AURA) | 1081 #endif // defined(USE_AURA) |
1081 | 1082 |
1082 } // namespace | 1083 } // namespace |
1083 } // namespace views | 1084 } // namespace views |
OLD | NEW |