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

Side by Side Diff: ui/views/view_unittest.cc

Issue 10790019: Add gesture target fuzzing to views (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: sadrul's comments about testing addressed Created 8 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 (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 <map> 5 #include <map>
6 6
7 #include "base/memory/scoped_ptr.h" 7 #include "base/memory/scoped_ptr.h"
8 #include "base/rand_util.h" 8 #include "base/rand_util.h"
9 #include "base/string_util.h" 9 #include "base/string_util.h"
10 #include "base/utf_string_conversions.h" 10 #include "base/utf_string_conversions.h"
(...skipping 629 matching lines...) Expand 10 before | Expand all | Expand 10 after
640 v1->last_gesture_event_type_ = ui::ET_UNKNOWN; 640 v1->last_gesture_event_type_ = ui::ET_UNKNOWN;
641 v3->last_gesture_event_type_ = ui::ET_UNKNOWN; 641 v3->last_gesture_event_type_ = ui::ET_UNKNOWN;
642 root->OnGestureEvent(g1); 642 root->OnGestureEvent(g1);
643 EXPECT_EQ(ui::ET_GESTURE_TAP, v1->last_gesture_event_type_); 643 EXPECT_EQ(ui::ET_GESTURE_TAP, v1->last_gesture_event_type_);
644 EXPECT_EQ(ui::ET_UNKNOWN, v3->last_gesture_event_type_); 644 EXPECT_EQ(ui::ET_UNKNOWN, v3->last_gesture_event_type_);
645 EXPECT_EQ("110,110", v1->location_.ToString()); 645 EXPECT_EQ("110,110", v1->location_.ToString());
646 646
647 widget->CloseNow(); 647 widget->CloseNow();
648 } 648 }
649 649
650 TEST_F(ViewTest, GestureEventWithFuzzing) {
651 scoped_ptr<Widget> widget(new Widget());
652 Widget::InitParams params(Widget::InitParams::TYPE_POPUP);
653 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
654 params.bounds = gfx::Rect(0, 0, 500, 500);
655 widget->Init(params);
656 View* root_view = widget->GetRootView();
657
658 // Have this hierarchy of views (the coords here are all in root coord):
659 // v1 (0, 0, 100, 100)
660 // v2 (150, 0, 250, 100)
661 // v3 (0, 200, 150, 100)
662 // v31 (10, 210, 80, 80)
663 // v32 (110, 210, 30, 80)
664 // v4 (300, 200, 100, 100)
665 // v41 (310, 210, 80, 80)
666 // v411 (370, 275, 10, 5)
667
668 // The coordinates used for SetBounds are in parent coordinates
669
670 TestView* v1 = new TestViewConsumeGesture();
671 v1->SetBounds(0, 0, 100, 100);
672 root_view->AddChildView(v1);
673
674 TestView* v2 = new TestViewConsumeGesture();
675 v2->SetBounds(150, 0, 250, 100);
676 root_view->AddChildView(v2);
677
678 TestView* v3 = new TestViewConsumeGesture();
679 v3->SetBounds(0, 200, 150, 100);
680 root_view->AddChildView(v3);
681
682 TestView* v4 = new TestViewConsumeGesture();
683 v4->SetBounds(300, 200, 100, 100);
684 root_view->AddChildView(v4);
685
686 TestView* v31 = new TestViewIgnoreGesture();
687 v31->SetBounds(10, 10, 80, 80);
688 v3->AddChildView(v31);
689
690 TestView* v32 = new TestViewConsumeGesture();
691 v32->SetBounds(110, 10, 30, 80);
692 v3->AddChildView(v32);
693
694 TestView* v41 = new TestViewConsumeGesture();
695 v41->SetBounds(10, 10, 80, 80);
696 v4->AddChildView(v41);
697
698 TestView* v411 = new TestViewIgnoreGesture();
699 v411->SetBounds(60, 65, 10, 5);
700 v41->AddChildView(v411);
701
702 v1->Reset();
703 v2->Reset();
704 v3->Reset();
705 v4->Reset();
706 v31->Reset();
707 v32->Reset();
708 v41->Reset();
709 v411->Reset();
710
711 // Covers v1 by enough
712 ui::GestureEventDetails gesture_details(ui::ET_GESTURE_TAP, 0, 0);
713 gesture_details.set_bounding_box(gfx::Rect(15, 15, 100, 100));
714 GestureEventForTest g1(ui::ET_GESTURE_TAP, 65, 65, 0);
715 g1.set_details(gesture_details);
716 root_view->OnGestureEvent(g1);
717 EXPECT_EQ(ui::ET_GESTURE_TAP, v1->last_gesture_event_type_);
718 GestureEventForTest g1_up(ui::ET_GESTURE_END, 65, 65, 0);
719 root_view->OnGestureEvent(g1_up);
720 v1->Reset();
721
722 // Intersects v1 but does not cover by enough, center point is in v1
723 gesture_details.set_bounding_box(gfx::Rect(80, 80, 20, 20));
724 GestureEventForTest g2(ui::ET_GESTURE_TAP, 90, 90, 0);
725 g2.set_details(gesture_details);
726 root_view->OnGestureEvent(g2);
727 EXPECT_EQ(ui::ET_GESTURE_TAP, v1->last_gesture_event_type_);
728 GestureEventForTest g2_up(ui::ET_GESTURE_END, 90, 90, 0);
729 root_view->OnGestureEvent(g2_up);
730 v1->Reset();
731
732 // Intersects nothing
733 gesture_details.set_bounding_box(gfx::Rect(105, 105, 30, 45));
734 GestureEventForTest g3(ui::ET_GESTURE_TAP, 120, 127, 0);
735 g3.set_details(gesture_details);
736 root_view->OnGestureEvent(g3);
737 EXPECT_EQ(ui::ET_UNKNOWN, v1->last_gesture_event_type_);
738 EXPECT_EQ(ui::ET_UNKNOWN, v2->last_gesture_event_type_);
739 EXPECT_EQ(ui::ET_UNKNOWN, v3->last_gesture_event_type_);
740 EXPECT_EQ(ui::ET_UNKNOWN, v32->last_gesture_event_type_);
741 EXPECT_EQ(ui::ET_UNKNOWN, v4->last_gesture_event_type_);
742 EXPECT_EQ(ui::ET_UNKNOWN, v41->last_gesture_event_type_);
743 GestureEventForTest g3_up(ui::ET_GESTURE_END, 120, 127, 0);
744 root_view->OnGestureEvent(g3_up);
745
746 // Intersects v2 and covers by enough,
747 // Intersects v1 but does not cover by enough
748 gesture_details.set_bounding_box(gfx::Rect(95, 10, 300, 120));
749 GestureEventForTest g4(ui::ET_GESTURE_TAP, 245, 70, 0);
750 g4.set_details(gesture_details);
751 root_view->OnGestureEvent(g4);
752 EXPECT_EQ(ui::ET_UNKNOWN, v1->last_gesture_event_type_);
753 EXPECT_EQ(ui::ET_GESTURE_TAP, v2->last_gesture_event_type_);
754 GestureEventForTest g4_up(ui::ET_GESTURE_END, 245, 70, 0);
755 root_view->OnGestureEvent(g4_up);
756 v1->Reset();
757 v2->Reset();
758
759 // Intersects v1 and v2 and covers by enough, closer to v2
760 gesture_details.set_bounding_box(gfx::Rect(20, 20, 400, 100));
761 GestureEventForTest g5(ui::ET_GESTURE_TAP, 220, 70, 0);
762 g5.set_details(gesture_details);
763 root_view->OnGestureEvent(g5);
764 EXPECT_EQ(ui::ET_UNKNOWN, v1->last_gesture_event_type_);
765 EXPECT_EQ(ui::ET_GESTURE_TAP, v2->last_gesture_event_type_);
766 GestureEventForTest g5_up(ui::ET_GESTURE_END, 220, 70, 0);
767 root_view->OnGestureEvent(g5_up);
768 v1->Reset();
769 v2->Reset();
770
771 // Covers all of v3 up to left side of v32
772 gesture_details.set_bounding_box(gfx::Rect(0, 200, 110, 100));
773 GestureEventForTest g6(ui::ET_GESTURE_TAP, 55, 250, 0);
774 g6.set_details(gesture_details);
775 root_view->OnGestureEvent(g6);
776 EXPECT_EQ(ui::ET_UNKNOWN, v31->last_gesture_event_type_);
777 EXPECT_EQ(ui::ET_UNKNOWN, v32->last_gesture_event_type_);
778 EXPECT_EQ(ui::ET_GESTURE_TAP, v3->last_gesture_event_type_);
779 GestureEventForTest g6_up(ui::ET_GESTURE_END, 55, 250, 0);
780 root_view->OnGestureEvent(g6_up);
781 v31->Reset();
782 v32->Reset();
783 v3->Reset();
784
785 // Covers all of v3
786 gesture_details.set_bounding_box(gfx::Rect(0, 200, 150, 100));
787 GestureEventForTest g7(ui::ET_GESTURE_TAP, 75, 250, 0);
788 g7.set_details(gesture_details);
789 root_view->OnGestureEvent(g7);
790 EXPECT_EQ(ui::ET_UNKNOWN, v31->last_gesture_event_type_);
791 EXPECT_EQ(ui::ET_UNKNOWN, v32->last_gesture_event_type_);
792 EXPECT_EQ(ui::ET_GESTURE_TAP, v3->last_gesture_event_type_);
793 GestureEventForTest g7_up(ui::ET_GESTURE_END, 75, 250, 0);
794 root_view->OnGestureEvent(g7_up);
795 v31->Reset();
796 v32->Reset();
797 v3->Reset();
798
799 // Covers right half of v3
800 gesture_details.set_bounding_box(gfx::Rect(75, 200, 75, 100));
801 GestureEventForTest g8(ui::ET_GESTURE_TAP, 112, 250, 0);
802 g8.set_details(gesture_details);
803 root_view->OnGestureEvent(g8);
804 EXPECT_EQ(ui::ET_UNKNOWN, v31->last_gesture_event_type_);
805 EXPECT_EQ(ui::ET_GESTURE_TAP, v32->last_gesture_event_type_);
806 EXPECT_EQ(ui::ET_UNKNOWN, v3->last_gesture_event_type_);
807 GestureEventForTest g8_up(ui::ET_GESTURE_END, 112, 250, 0);
808 root_view->OnGestureEvent(g8_up);
809 v31->Reset();
810 v32->Reset();
811 v3->Reset();
812
813 // Covers v31 and v32 by enough, but closer to v32
814 gesture_details.set_bounding_box(gfx::Rect(30, 225, 180, 115));
815 GestureEventForTest g9(ui::ET_GESTURE_TAP, 120, 282, 0);
816 g9.set_details(gesture_details);
817 root_view->OnGestureEvent(g9);
818 EXPECT_EQ(ui::ET_UNKNOWN, v31->last_gesture_event_type_);
819 EXPECT_EQ(ui::ET_GESTURE_TAP, v32->last_gesture_event_type_);
820 EXPECT_EQ(ui::ET_UNKNOWN, v3->last_gesture_event_type_);
821 GestureEventForTest g9_up(ui::ET_GESTURE_END, 120, 282, 0);
822 root_view->OnGestureEvent(g9_up);
823 v31->Reset();
824 v32->Reset();
825 v3->Reset();
826
827 // Covers all of v41
828 gesture_details.set_bounding_box(gfx::Rect(310, 210, 80, 80));
829 GestureEventForTest g10(ui::ET_GESTURE_TAP, 350, 250, 0);
830 g10.set_details(gesture_details);
831 root_view->OnGestureEvent(g10);
832 EXPECT_EQ(ui::ET_UNKNOWN, v4->last_gesture_event_type_);
833 EXPECT_EQ(ui::ET_GESTURE_TAP, v41->last_gesture_event_type_);
834 EXPECT_EQ(ui::ET_UNKNOWN, v411->last_gesture_event_type_);
835 GestureEventForTest g10_up(ui::ET_GESTURE_END, 350, 250, 0);
836 root_view->OnGestureEvent(g10_up);
837 v4->Reset();
838 v41->Reset();
839 v411->Reset();
840
841 // Covers all of v411
842 gesture_details.set_bounding_box(gfx::Rect(370, 275, 10, 5));
843 GestureEventForTest g11(ui::ET_GESTURE_TAP, 375, 277, 0);
844 g11.set_details(gesture_details);
845 root_view->OnGestureEvent(g11);
846 EXPECT_EQ(ui::ET_UNKNOWN, v4->last_gesture_event_type_);
847 EXPECT_EQ(ui::ET_GESTURE_TAP, v41->last_gesture_event_type_);
848 EXPECT_EQ(ui::ET_UNKNOWN, v411->last_gesture_event_type_);
849 GestureEventForTest g11_up(ui::ET_GESTURE_END, 375, 277, 0);
850 root_view->OnGestureEvent(g11_up);
851 v4->Reset();
852 v41->Reset();
853 v411->Reset();
854
855 // Intersects v41 and v411 but covers neither by enough
856 gesture_details.set_bounding_box(gfx::Rect(368, 272, 5, 8));
857 GestureEventForTest g12(ui::ET_GESTURE_TAP, 370, 276, 0);
858 g12.set_details(gesture_details);
859 root_view->OnGestureEvent(g12);
860 EXPECT_EQ(ui::ET_UNKNOWN, v4->last_gesture_event_type_);
861 EXPECT_EQ(ui::ET_GESTURE_TAP, v41->last_gesture_event_type_);
862 EXPECT_EQ(ui::ET_UNKNOWN, v411->last_gesture_event_type_);
863 GestureEventForTest g12_up(ui::ET_GESTURE_END, 370, 276, 0);
864 root_view->OnGestureEvent(g12_up);
865 v4->Reset();
866 v41->Reset();
867 v411->Reset();
868
869 // Center point in v4, intersects v41 but not by enough
870 gesture_details.set_bounding_box(gfx::Rect(285, 185, 40, 40));
871 GestureEventForTest g13(ui::ET_GESTURE_TAP, 305, 205, 0);
872 g13.set_details(gesture_details);
873 root_view->OnGestureEvent(g13);
874 EXPECT_EQ(ui::ET_GESTURE_TAP, v4->last_gesture_event_type_);
875 EXPECT_EQ(ui::ET_UNKNOWN, v41->last_gesture_event_type_);
876 EXPECT_EQ(ui::ET_UNKNOWN, v411->last_gesture_event_type_);
877 GestureEventForTest g13_up(ui::ET_GESTURE_END, 305, 205, 0);
878 root_view->OnGestureEvent(g13_up);
879 v4->Reset();
880 v41->Reset();
881 v411->Reset();
882
883 // Intersects v31, v32 (covers by enough), v411 (does not cover
884 // by enough) and is closest to v32
885 gesture_details.set_bounding_box(gfx::Rect(20, 222, 352, 250));
886 GestureEventForTest g14(ui::ET_GESTURE_TAP, 196, 347, 0);
887 g14.set_details(gesture_details);
888 root_view->OnGestureEvent(g14);
889 EXPECT_EQ(ui::ET_UNKNOWN, v1->last_gesture_event_type_);
890 EXPECT_EQ(ui::ET_UNKNOWN, v2->last_gesture_event_type_);
891 EXPECT_EQ(ui::ET_UNKNOWN, v3->last_gesture_event_type_);
892 EXPECT_EQ(ui::ET_UNKNOWN, v4->last_gesture_event_type_);
893 EXPECT_EQ(ui::ET_UNKNOWN, v31->last_gesture_event_type_);
894 EXPECT_EQ(ui::ET_GESTURE_TAP, v32->last_gesture_event_type_);
895 EXPECT_EQ(ui::ET_UNKNOWN, v41->last_gesture_event_type_);
896 EXPECT_EQ(ui::ET_UNKNOWN, v411->last_gesture_event_type_);
897 GestureEventForTest g14_up(ui::ET_GESTURE_END, 196, 347, 0);
898 root_view->OnGestureEvent(g14_up);
899 v1->Reset();
900 v2->Reset();
901 v3->Reset();
902 v4->Reset();
903 v31->Reset();
904 v32->Reset();
905 v41->Reset();
906 v411->Reset();
907
908 // Covers all views completely
909 gesture_details.set_bounding_box(gfx::Rect(0, 0, 400, 300));
910 GestureEventForTest g15(ui::ET_GESTURE_TAP, 200, 150, 0);
911 g15.set_details(gesture_details);
912 root_view->OnGestureEvent(g15);
913 EXPECT_EQ(ui::ET_UNKNOWN, v1->last_gesture_event_type_);
914 EXPECT_EQ(ui::ET_GESTURE_TAP, v2->last_gesture_event_type_);
915 EXPECT_EQ(ui::ET_UNKNOWN, v3->last_gesture_event_type_);
916 EXPECT_EQ(ui::ET_UNKNOWN, v4->last_gesture_event_type_);
917 EXPECT_EQ(ui::ET_UNKNOWN, v31->last_gesture_event_type_);
918 EXPECT_EQ(ui::ET_UNKNOWN, v32->last_gesture_event_type_);
919 EXPECT_EQ(ui::ET_UNKNOWN, v41->last_gesture_event_type_);
920 EXPECT_EQ(ui::ET_UNKNOWN, v411->last_gesture_event_type_);
921 GestureEventForTest g15_up(ui::ET_GESTURE_END, 200, 150, 0);
922 root_view->OnGestureEvent(g15_up);
923 v1->Reset();
924 v2->Reset();
925 v3->Reset();
926 v4->Reset();
927 v31->Reset();
928 v32->Reset();
929 v41->Reset();
930 v411->Reset();
931
932 // Covers enough of v32, v2, v411 (closest to v411)
933 gesture_details.set_bounding_box(gfx::Rect(120, 15, 375, 450));
934 GestureEventForTest g16(ui::ET_GESTURE_TAP, 307, 240, 0);
935 g16.set_details(gesture_details);
936 root_view->OnGestureEvent(g16);
937 EXPECT_EQ(ui::ET_UNKNOWN, v1->last_gesture_event_type_);
938 EXPECT_EQ(ui::ET_UNKNOWN, v2->last_gesture_event_type_);
939 EXPECT_EQ(ui::ET_UNKNOWN, v3->last_gesture_event_type_);
940 EXPECT_EQ(ui::ET_UNKNOWN, v4->last_gesture_event_type_);
941 EXPECT_EQ(ui::ET_UNKNOWN, v31->last_gesture_event_type_);
942 EXPECT_EQ(ui::ET_UNKNOWN, v32->last_gesture_event_type_);
943 EXPECT_EQ(ui::ET_GESTURE_TAP, v41->last_gesture_event_type_);
944 EXPECT_EQ(ui::ET_UNKNOWN, v411->last_gesture_event_type_);
945 GestureEventForTest g16_up(ui::ET_GESTURE_END, 307, 240, 0);
946 root_view->OnGestureEvent(g16_up);
947 v1->Reset();
948 v2->Reset();
949 v3->Reset();
950 v4->Reset();
951 v31->Reset();
952 v32->Reset();
953 v41->Reset();
954 v411->Reset();
955
956 widget->CloseNow();
957 }
958
650 TEST_F(ViewTest, ScrollGestureEvent) { 959 TEST_F(ViewTest, ScrollGestureEvent) {
651 // Views hierarchy for non delivery of GestureEvent. 960 // Views hierarchy for non delivery of GestureEvent.
652 TestView* v1 = new TestViewConsumeGesture(); 961 TestView* v1 = new TestViewConsumeGesture();
653 v1->SetBoundsRect(gfx::Rect(0, 0, 300, 300)); 962 v1->SetBoundsRect(gfx::Rect(0, 0, 300, 300));
654 963
655 TestView* v2 = new TestViewIgnoreScrollGestures(); 964 TestView* v2 = new TestViewIgnoreScrollGestures();
656 v2->SetBoundsRect(gfx::Rect(100, 100, 100, 100)); 965 v2->SetBoundsRect(gfx::Rect(100, 100, 100, 100));
657 966
658 TestView* v3 = new TestViewIgnoreGesture(); 967 TestView* v3 = new TestViewIgnoreGesture();
659 v3->SetBoundsRect(gfx::Rect(0, 0, 100, 100)); 968 v3->SetBoundsRect(gfx::Rect(0, 0, 100, 100));
(...skipping 329 matching lines...) Expand 10 before | Expand all | Expand 10 after
989 1298
990 // Test GetEventHandlerForPoint 1299 // Test GetEventHandlerForPoint
991 EXPECT_EQ(v1, root_view->GetEventHandlerForPoint(v1_centerpoint)); 1300 EXPECT_EQ(v1, root_view->GetEventHandlerForPoint(v1_centerpoint));
992 EXPECT_EQ(v2, root_view->GetEventHandlerForPoint(v2_centerpoint)); 1301 EXPECT_EQ(v2, root_view->GetEventHandlerForPoint(v2_centerpoint));
993 EXPECT_EQ(v1, root_view->GetEventHandlerForPoint(v1_origin)); 1302 EXPECT_EQ(v1, root_view->GetEventHandlerForPoint(v1_origin));
994 EXPECT_EQ(root_view, root_view->GetEventHandlerForPoint(v2_origin)); 1303 EXPECT_EQ(root_view, root_view->GetEventHandlerForPoint(v2_origin));
995 1304
996 widget->CloseNow(); 1305 widget->CloseNow();
997 } 1306 }
998 1307
1308 TEST_F(ViewTest, GetEventHandlerForRect) {
1309 Widget* widget = new Widget;
1310 widget->Init(Widget::InitParams(Widget::InitParams::TYPE_POPUP));
1311 View* root_view = widget->GetRootView();
1312 root_view->SetBoundsRect(gfx::Rect(0, 0, 500, 500));
1313
1314 // Have this hierarchy of views (the coords here are all in root coord):
1315 // v1 (0, 0, 100, 100)
1316 // v2 (150, 0, 250, 100)
1317 // v3 (0, 200, 150, 100)
1318 // v31 (10, 210, 80, 80)
1319 // v32 (110, 210, 30, 80)
1320 // v4 (300, 200, 100, 100)
1321 // v41 (310, 210, 80, 80)
1322 // v411 (370, 275, 10, 5)
1323
1324 // The coordinates used for SetBounds are in parent coordinates
1325
1326 TestView* v1 = new TestView;
1327 v1->SetBounds(0, 0, 100, 100);
1328 root_view->AddChildView(v1);
1329
1330 TestView* v2 = new TestView;
1331 v2->SetBounds(150, 0, 250, 100);
1332 root_view->AddChildView(v2);
1333
1334 TestView* v3 = new TestView;
1335 v3->SetBounds(0, 200, 150, 100);
1336 root_view->AddChildView(v3);
1337
1338 TestView* v4 = new TestView;
1339 v4->SetBounds(300, 200, 100, 100);
1340 root_view->AddChildView(v4);
1341
1342 TestView* v31 = new TestView;
1343 v31->SetBounds(10, 10, 80, 80);
1344 v3->AddChildView(v31);
1345
1346 TestView* v32 = new TestView;
1347 v32->SetBounds(110, 10, 30, 80);
1348 v3->AddChildView(v32);
1349
1350 TestView* v41 = new TestView;
1351 v41->SetBounds(10, 10, 80, 80);
1352 v4->AddChildView(v41);
1353
1354 TestView* v411 = new TestView;
1355 v411->SetBounds(60, 65, 10, 5);
1356 v41->AddChildView(v411);
1357
1358
1359 // Covers v1 by enough
1360 gfx::Rect touch_rect(15, 15, 100, 100);
1361 View* result_view = root_view->GetEventHandlerForRect(touch_rect);
1362 EXPECT_EQ(result_view, v1);
1363
1364 // Intersects v1 but does not cover by enough
1365 touch_rect.SetRect(80, 90, 20, 20);
1366 result_view = root_view->GetEventHandlerForRect(touch_rect);
1367 EXPECT_FALSE(result_view);
1368
1369 // Intersects nothing
1370 touch_rect.SetRect(105, 105, 30, 45);
1371 result_view = root_view->GetEventHandlerForRect(touch_rect);
1372 EXPECT_FALSE(result_view);
1373
1374 // Intersects v2 and covers by enough,
1375 // Intersects v1 but does not cover by enough
1376 touch_rect.SetRect(95, 10, 300, 120);
1377 result_view = root_view->GetEventHandlerForRect(touch_rect);
1378 EXPECT_EQ(result_view, v2);
1379
1380 // Intersects v1 and v2 and covers by enough, closer to v2
1381 touch_rect.SetRect(20, 20, 400, 100);
1382 result_view = root_view->GetEventHandlerForRect(touch_rect);
1383 EXPECT_EQ(result_view, v2);
1384
1385 // Covers all of v3 up to left side of v32
1386 touch_rect.SetRect(0, 200, 110, 100);
1387 result_view = root_view->GetEventHandlerForRect(touch_rect);
1388 EXPECT_EQ(result_view, v31);
1389
1390 // Covers all of v3
1391 touch_rect.SetRect(0, 200, 150, 100);
1392 result_view = root_view->GetEventHandlerForRect(touch_rect);
1393 EXPECT_EQ(result_view, v31);
1394
1395 // Covers right half of v3
1396 touch_rect.SetRect(75, 200, 75, 100);
1397 result_view = root_view->GetEventHandlerForRect(touch_rect);
1398 EXPECT_EQ(result_view, v32);
1399
1400 // Covers v31 and v32 by enough, but closer to v32
1401 touch_rect.SetRect(30, 225, 180, 115);
1402 result_view = root_view->GetEventHandlerForRect(touch_rect);
1403 EXPECT_EQ(result_view, v32);
1404
1405 // Covers all of v41
1406 touch_rect.SetRect(310, 210, 80, 80);
1407 result_view = root_view->GetEventHandlerForRect(touch_rect);
1408 EXPECT_EQ(result_view, v411);
1409
1410 // Covers all of v411
1411 touch_rect.SetRect(370, 275, 10, 5);
1412 result_view = root_view->GetEventHandlerForRect(touch_rect);
1413 EXPECT_EQ(result_view, v411);
1414
1415 // Intersects v41 and v411 but covers neither by enough
1416 touch_rect.SetRect(368, 272, 5, 8);
1417 result_view = root_view->GetEventHandlerForRect(touch_rect);
1418 EXPECT_FALSE(result_view);
1419
1420 // Covers enough of v41 but not enough of v411
1421 touch_rect.SetRect(315, 212, 62, 64);
1422 result_view = root_view->GetEventHandlerForRect(touch_rect);
1423 EXPECT_FALSE(result_view);
1424
1425 // Intersects v31, v32 (covers by enough), v4111 (does not cover
1426 // by enough) and is closest to v32
1427 touch_rect.SetRect(20, 222, 352, 250);
1428 result_view = root_view->GetEventHandlerForRect(touch_rect);
1429 EXPECT_EQ(result_view, v32);
1430
1431 // Covers all views completely
1432 touch_rect.SetRect(0, 0, 400, 300);
1433 result_view = root_view->GetEventHandlerForRect(touch_rect);
1434 EXPECT_EQ(result_view, v2);
1435
1436 // Covers enough of v32, v2, v411 (closest to v411)
1437 touch_rect.SetRect(120, 15, 375, 450);
1438 result_view = root_view->GetEventHandlerForRect(touch_rect);
1439 EXPECT_EQ(result_view, v411);
1440
1441 widget->CloseNow();
1442 }
1443
999 TEST_F(ViewTest, NotifyEnterExitOnChild) { 1444 TEST_F(ViewTest, NotifyEnterExitOnChild) {
1000 Widget* widget = new Widget; 1445 Widget* widget = new Widget;
1001 widget->Init(Widget::InitParams(Widget::InitParams::TYPE_POPUP)); 1446 widget->Init(Widget::InitParams(Widget::InitParams::TYPE_POPUP));
1002 View* root_view = widget->GetRootView(); 1447 View* root_view = widget->GetRootView();
1003 root_view->SetBoundsRect(gfx::Rect(0, 0, 500, 500)); 1448 root_view->SetBoundsRect(gfx::Rect(0, 0, 500, 500));
1004 1449
1005 // Have this hierarchy of views (the coords here are in root coord): 1450 // Have this hierarchy of views (the coords here are in root coord):
1006 // v1 (0, 0, 100, 100) 1451 // v1 (0, 0, 100, 100)
1007 // - v11 (0, 0, 20, 30) 1452 // - v11 (0, 0, 20, 30)
1008 // - v111 (5, 5, 5, 15) 1453 // - v111 (5, 5, 5, 15)
(...skipping 2328 matching lines...) Expand 10 before | Expand all | Expand 10 after
3337 // Set to non default value. 3782 // Set to non default value.
3338 v->layer()->set_scale_content(false); 3783 v->layer()->set_scale_content(false);
3339 scoped_ptr<ui::Layer> old_layer(v->RecreateLayer()); 3784 scoped_ptr<ui::Layer> old_layer(v->RecreateLayer());
3340 ui::Layer* new_layer = v->layer(); 3785 ui::Layer* new_layer = v->layer();
3341 EXPECT_FALSE(new_layer->scale_content()); 3786 EXPECT_FALSE(new_layer->scale_content());
3342 } 3787 }
3343 3788
3344 #endif // USE_AURA 3789 #endif // USE_AURA
3345 3790
3346 } // namespace views 3791 } // namespace views
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698