Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(349)

Side by Side Diff: ui/views/widget/desktop_aura/desktop_native_widget_aura_unittest.cc

Issue 1260453006: ui: events: Add a class to hold common touch and stylus properties (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address build problems, add accessor and unit tests. Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 "ui/views/widget/desktop_aura/desktop_native_widget_aura.h" 5 #include "ui/views/widget/desktop_aura/desktop_native_widget_aura.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "ui/aura/client/aura_constants.h" 8 #include "ui/aura/client/aura_constants.h"
9 #include "ui/aura/client/cursor_client.h" 9 #include "ui/aura/client/cursor_client.h"
10 #include "ui/aura/client/window_tree_client.h" 10 #include "ui/aura/client/window_tree_client.h"
(...skipping 433 matching lines...) Expand 10 before | Expand all | Expand 10 after
444 444
445 // The following code verifies we can correctly destroy a Widget from a mouse 445 // The following code verifies we can correctly destroy a Widget from a mouse
446 // enter/exit. We could test move/drag/enter/exit but in general we don't run 446 // enter/exit. We could test move/drag/enter/exit but in general we don't run
447 // nested message loops from such events, nor has the code ever really dealt 447 // nested message loops from such events, nor has the code ever really dealt
448 // with this situation. 448 // with this situation.
449 449
450 // Generates two moves (first generates enter, second real move), a press, drag 450 // Generates two moves (first generates enter, second real move), a press, drag
451 // and release stopping at |last_event_type|. 451 // and release stopping at |last_event_type|.
452 void GenerateMouseEvents(Widget* widget, ui::EventType last_event_type) { 452 void GenerateMouseEvents(Widget* widget, ui::EventType last_event_type) {
453 const gfx::Rect screen_bounds(widget->GetWindowBoundsInScreen()); 453 const gfx::Rect screen_bounds(widget->GetWindowBoundsInScreen());
454 ui::MouseEvent move_event(ui::ET_MOUSE_MOVED, screen_bounds.CenterPoint(), 454 ui::MouseEvent move_event(
455 screen_bounds.CenterPoint(), ui::EventTimeForNow(), 455 ui::ET_MOUSE_MOVED, screen_bounds.CenterPoint(),
456 0, 0); 456 screen_bounds.CenterPoint(), ui::EventTimeForNow(), 0, 0,
457 ui::PointerEventDetails(ui::EventPointerType::POINTER_TYPE_MOUSE));
457 ui::EventProcessor* dispatcher = WidgetTest::GetEventProcessor(widget); 458 ui::EventProcessor* dispatcher = WidgetTest::GetEventProcessor(widget);
458 ui::EventDispatchDetails details = dispatcher->OnEventFromSource(&move_event); 459 ui::EventDispatchDetails details = dispatcher->OnEventFromSource(&move_event);
459 if (last_event_type == ui::ET_MOUSE_ENTERED || details.dispatcher_destroyed) 460 if (last_event_type == ui::ET_MOUSE_ENTERED || details.dispatcher_destroyed)
460 return; 461 return;
461 details = dispatcher->OnEventFromSource(&move_event); 462 details = dispatcher->OnEventFromSource(&move_event);
462 if (last_event_type == ui::ET_MOUSE_MOVED || details.dispatcher_destroyed) 463 if (last_event_type == ui::ET_MOUSE_MOVED || details.dispatcher_destroyed)
463 return; 464 return;
464 465
465 ui::MouseEvent press_event(ui::ET_MOUSE_PRESSED, screen_bounds.CenterPoint(), 466 ui::MouseEvent press_event(
466 screen_bounds.CenterPoint(), ui::EventTimeForNow(), 467 ui::ET_MOUSE_PRESSED, screen_bounds.CenterPoint(),
467 0, 0); 468 screen_bounds.CenterPoint(), ui::EventTimeForNow(), 0, 0,
469 ui::PointerEventDetails(ui::EventPointerType::POINTER_TYPE_MOUSE));
468 details = dispatcher->OnEventFromSource(&press_event); 470 details = dispatcher->OnEventFromSource(&press_event);
469 if (last_event_type == ui::ET_MOUSE_PRESSED || details.dispatcher_destroyed) 471 if (last_event_type == ui::ET_MOUSE_PRESSED || details.dispatcher_destroyed)
470 return; 472 return;
471 473
472 gfx::Point end_point(screen_bounds.CenterPoint()); 474 gfx::Point end_point(screen_bounds.CenterPoint());
473 end_point.Offset(1, 1); 475 end_point.Offset(1, 1);
474 ui::MouseEvent drag_event(ui::ET_MOUSE_DRAGGED, end_point, end_point, 476 ui::MouseEvent drag_event(
475 ui::EventTimeForNow(), 0, 0); 477 ui::ET_MOUSE_DRAGGED, end_point, end_point, ui::EventTimeForNow(), 0, 0,
478 ui::PointerEventDetails(ui::EventPointerType::POINTER_TYPE_MOUSE));
476 details = dispatcher->OnEventFromSource(&drag_event); 479 details = dispatcher->OnEventFromSource(&drag_event);
477 if (last_event_type == ui::ET_MOUSE_DRAGGED || details.dispatcher_destroyed) 480 if (last_event_type == ui::ET_MOUSE_DRAGGED || details.dispatcher_destroyed)
478 return; 481 return;
479 482
480 ui::MouseEvent release_event(ui::ET_MOUSE_RELEASED, end_point, end_point, 483 ui::MouseEvent release_event(
481 ui::EventTimeForNow(), 0, 0); 484 ui::ET_MOUSE_RELEASED, end_point, end_point, ui::EventTimeForNow(), 0, 0,
485 ui::PointerEventDetails(ui::EventPointerType::POINTER_TYPE_MOUSE));
482 details = dispatcher->OnEventFromSource(&release_event); 486 details = dispatcher->OnEventFromSource(&release_event);
483 if (details.dispatcher_destroyed) 487 if (details.dispatcher_destroyed)
484 return; 488 return;
485 } 489 }
486 490
487 // Creates a widget and invokes GenerateMouseEvents() with |last_event_type|. 491 // Creates a widget and invokes GenerateMouseEvents() with |last_event_type|.
488 void RunCloseWidgetDuringDispatchTest(WidgetTest* test, 492 void RunCloseWidgetDuringDispatchTest(WidgetTest* test,
489 ui::EventType last_event_type) { 493 ui::EventType last_event_type) {
490 // |widget| is deleted by CloseWidgetView. 494 // |widget| is deleted by CloseWidgetView.
491 Widget* widget = new Widget; 495 Widget* widget = new Widget;
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
538 top_level_widget.Init(init_params); 542 top_level_widget.Init(init_params);
539 top_level_widget.Show(); 543 top_level_widget.Show();
540 EXPECT_TRUE(top_level_widget.IsVisible()); 544 EXPECT_TRUE(top_level_widget.IsVisible());
541 545
542 // Create a view and validate that a mouse moves makes it to the view. 546 // Create a view and validate that a mouse moves makes it to the view.
543 EventCountView* widget_view = new EventCountView(); 547 EventCountView* widget_view = new EventCountView();
544 widget_view->SetBounds(0, 0, 10, 10); 548 widget_view->SetBounds(0, 0, 10, 10);
545 top_level_widget.GetRootView()->AddChildView(widget_view); 549 top_level_widget.GetRootView()->AddChildView(widget_view);
546 550
547 gfx::Point cursor_location_main(5, 5); 551 gfx::Point cursor_location_main(5, 5);
548 ui::MouseEvent move_main(ui::ET_MOUSE_MOVED, cursor_location_main, 552 ui::MouseEvent move_main(
549 cursor_location_main, ui::EventTimeForNow(), 553 ui::ET_MOUSE_MOVED, cursor_location_main, cursor_location_main,
550 ui::EF_NONE, ui::EF_NONE); 554 ui::EventTimeForNow(), ui::EF_NONE, ui::EF_NONE,
555 ui::PointerEventDetails(ui::EventPointerType::POINTER_TYPE_MOUSE));
551 ui::EventDispatchDetails details = 556 ui::EventDispatchDetails details =
552 GetEventProcessor(&top_level_widget)->OnEventFromSource(&move_main); 557 GetEventProcessor(&top_level_widget)->OnEventFromSource(&move_main);
553 ASSERT_FALSE(details.dispatcher_destroyed); 558 ASSERT_FALSE(details.dispatcher_destroyed);
554 559
555 EXPECT_EQ(1, widget_view->GetEventCount(ui::ET_MOUSE_ENTERED)); 560 EXPECT_EQ(1, widget_view->GetEventCount(ui::ET_MOUSE_ENTERED));
556 widget_view->ResetCounts(); 561 widget_view->ResetCounts();
557 562
558 // Create a modal dialog and validate that a mouse down message makes it to 563 // Create a modal dialog and validate that a mouse down message makes it to
559 // the main view within the dialog. 564 // the main view within the dialog.
560 565
561 // This instance will be destroyed when the dialog is destroyed. 566 // This instance will be destroyed when the dialog is destroyed.
562 ModalDialogDelegate* dialog_delegate = new ModalDialogDelegate; 567 ModalDialogDelegate* dialog_delegate = new ModalDialogDelegate;
563 568
564 Widget* modal_dialog_widget = views::DialogDelegate::CreateDialogWidget( 569 Widget* modal_dialog_widget = views::DialogDelegate::CreateDialogWidget(
565 dialog_delegate, NULL, top_level_widget.GetNativeView()); 570 dialog_delegate, NULL, top_level_widget.GetNativeView());
566 modal_dialog_widget->SetBounds(gfx::Rect(100, 100, 200, 200)); 571 modal_dialog_widget->SetBounds(gfx::Rect(100, 100, 200, 200));
567 EventCountView* dialog_widget_view = new EventCountView(); 572 EventCountView* dialog_widget_view = new EventCountView();
568 dialog_widget_view->SetBounds(0, 0, 50, 50); 573 dialog_widget_view->SetBounds(0, 0, 50, 50);
569 modal_dialog_widget->GetRootView()->AddChildView(dialog_widget_view); 574 modal_dialog_widget->GetRootView()->AddChildView(dialog_widget_view);
570 modal_dialog_widget->Show(); 575 modal_dialog_widget->Show();
571 EXPECT_TRUE(modal_dialog_widget->IsVisible()); 576 EXPECT_TRUE(modal_dialog_widget->IsVisible());
572 577
573 gfx::Point cursor_location_dialog(100, 100); 578 gfx::Point cursor_location_dialog(100, 100);
574 ui::MouseEvent mouse_down_dialog( 579 ui::MouseEvent mouse_down_dialog(
575 ui::ET_MOUSE_PRESSED, cursor_location_dialog, cursor_location_dialog, 580 ui::ET_MOUSE_PRESSED, cursor_location_dialog, cursor_location_dialog,
576 ui::EventTimeForNow(), ui::EF_NONE, ui::EF_NONE); 581 ui::EventTimeForNow(), ui::EF_NONE, ui::EF_NONE,
582 ui::PointerEventDetails(ui::EventPointerType::POINTER_TYPE_MOUSE));
577 details = GetEventProcessor(&top_level_widget)->OnEventFromSource( 583 details = GetEventProcessor(&top_level_widget)->OnEventFromSource(
578 &mouse_down_dialog); 584 &mouse_down_dialog);
579 ASSERT_FALSE(details.dispatcher_destroyed); 585 ASSERT_FALSE(details.dispatcher_destroyed);
580 EXPECT_EQ(1, dialog_widget_view->GetEventCount(ui::ET_MOUSE_PRESSED)); 586 EXPECT_EQ(1, dialog_widget_view->GetEventCount(ui::ET_MOUSE_PRESSED));
581 587
582 // Send a mouse move message to the main window. It should not be received by 588 // Send a mouse move message to the main window. It should not be received by
583 // the main window as the modal dialog is still active. 589 // the main window as the modal dialog is still active.
584 gfx::Point cursor_location_main2(6, 6); 590 gfx::Point cursor_location_main2(6, 6);
585 ui::MouseEvent mouse_down_main(ui::ET_MOUSE_MOVED, cursor_location_main2, 591 ui::MouseEvent mouse_down_main(
586 cursor_location_main2, ui::EventTimeForNow(), 592 ui::ET_MOUSE_MOVED, cursor_location_main2, cursor_location_main2,
587 ui::EF_NONE, ui::EF_NONE); 593 ui::EventTimeForNow(), ui::EF_NONE, ui::EF_NONE,
594 ui::PointerEventDetails(ui::EventPointerType::POINTER_TYPE_MOUSE));
588 details = GetEventProcessor(&top_level_widget)->OnEventFromSource( 595 details = GetEventProcessor(&top_level_widget)->OnEventFromSource(
589 &mouse_down_main); 596 &mouse_down_main);
590 ASSERT_FALSE(details.dispatcher_destroyed); 597 ASSERT_FALSE(details.dispatcher_destroyed);
591 EXPECT_EQ(0, widget_view->GetEventCount(ui::ET_MOUSE_MOVED)); 598 EXPECT_EQ(0, widget_view->GetEventCount(ui::ET_MOUSE_MOVED));
592 599
593 modal_dialog_widget->CloseNow(); 600 modal_dialog_widget->CloseNow();
594 top_level_widget.CloseNow(); 601 top_level_widget.CloseNow();
595 } 602 }
596 603
597 #if defined(OS_WIN) 604 #if defined(OS_WIN)
(...skipping 29 matching lines...) Expand all
627 reinterpret_cast<WPARAM>(win32_window), 634 reinterpret_cast<WPARAM>(win32_window),
628 MAKELPARAM(WM_LBUTTONDOWN, HTCLIENT)); 635 MAKELPARAM(WM_LBUTTONDOWN, HTCLIENT));
629 EXPECT_EQ(activate_result, MA_ACTIVATE); 636 EXPECT_EQ(activate_result, MA_ACTIVATE);
630 637
631 modal_dialog_widget->CloseNow(); 638 modal_dialog_widget->CloseNow();
632 } 639 }
633 #endif // defined(OS_WIN) 640 #endif // defined(OS_WIN)
634 641
635 } // namespace test 642 } // namespace test
636 } // namespace views 643 } // namespace views
OLDNEW
« ui/events/event.h ('K') | « ui/views/view_unittest.cc ('k') | ui/views/widget/root_view.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698