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

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: Patch with unit tests 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, gesture_details);
715 root_view->OnGestureEvent(g1);
716 EXPECT_EQ(ui::ET_GESTURE_TAP, v1->last_gesture_event_type_);
717 GestureEventForTest g1_up(ui::ET_GESTURE_END, 65, 65, 0);
718 root_view->OnGestureEvent(g1_up);
719 v1->Reset();
720
721 // Intersects v1 but does not cover by enough, center point is in v1
722 gesture_details.set_bounding_box(gfx::Rect(80, 80, 20, 20));
723 GestureEventForTest g2(ui::ET_GESTURE_TAP, 90, 90, 0, gesture_details);
724 root_view->OnGestureEvent(g2);
725 EXPECT_EQ(ui::ET_GESTURE_TAP, v1->last_gesture_event_type_);
726 GestureEventForTest g2_up(ui::ET_GESTURE_END, 90, 90, 0);
727 root_view->OnGestureEvent(g2_up);
728 v1->Reset();
729
730 // Intersects nothing
731 gesture_details.set_bounding_box(gfx::Rect(105, 105, 30, 45));
732 GestureEventForTest g3(ui::ET_GESTURE_TAP, 120, 127, 0, gesture_details);
733 root_view->OnGestureEvent(g3);
734 EXPECT_EQ(ui::ET_UNKNOWN, v1->last_gesture_event_type_);
735 EXPECT_EQ(ui::ET_UNKNOWN, v2->last_gesture_event_type_);
736 EXPECT_EQ(ui::ET_UNKNOWN, v3->last_gesture_event_type_);
737 EXPECT_EQ(ui::ET_UNKNOWN, v32->last_gesture_event_type_);
738 EXPECT_EQ(ui::ET_UNKNOWN, v4->last_gesture_event_type_);
739 EXPECT_EQ(ui::ET_UNKNOWN, v41->last_gesture_event_type_);
740 GestureEventForTest g3_up(ui::ET_GESTURE_END, 120, 127, 0);
741 root_view->OnGestureEvent(g3_up);
742
743 // Intersects v2 and covers by enough,
744 // Intersects v1 but does not cover by enough
745 gesture_details.set_bounding_box(gfx::Rect(95, 10, 300, 120));
746 GestureEventForTest g4(ui::ET_GESTURE_TAP, 245, 70, 0, gesture_details);
747 root_view->OnGestureEvent(g4);
748 EXPECT_EQ(ui::ET_UNKNOWN, v1->last_gesture_event_type_);
749 EXPECT_EQ(ui::ET_GESTURE_TAP, v2->last_gesture_event_type_);
750 GestureEventForTest g4_up(ui::ET_GESTURE_END, 245, 70, 0);
751 root_view->OnGestureEvent(g4_up);
752 v1->Reset();
753 v2->Reset();
754
755 // Intersects v1 and v2 and covers by enough, closer to v2
756 gesture_details.set_bounding_box(gfx::Rect(20, 20, 400, 100));
757 GestureEventForTest g5(ui::ET_GESTURE_TAP, 220, 70, 0, gesture_details);
758 root_view->OnGestureEvent(g5);
759 EXPECT_EQ(ui::ET_UNKNOWN, v1->last_gesture_event_type_);
760 EXPECT_EQ(ui::ET_GESTURE_TAP, v2->last_gesture_event_type_);
761 GestureEventForTest g5_up(ui::ET_GESTURE_END, 220, 70, 0);
762 root_view->OnGestureEvent(g5_up);
763 v1->Reset();
764 v2->Reset();
765
766 // Covers all of v3 up to left side of v32
767 gesture_details.set_bounding_box(gfx::Rect(0, 200, 110, 100));
768 GestureEventForTest g6(ui::ET_GESTURE_TAP, 55, 250, 0, gesture_details);
769 root_view->OnGestureEvent(g6);
770 EXPECT_EQ(ui::ET_UNKNOWN, v31->last_gesture_event_type_);
771 EXPECT_EQ(ui::ET_UNKNOWN, v32->last_gesture_event_type_);
772 EXPECT_EQ(ui::ET_GESTURE_TAP, v3->last_gesture_event_type_);
773 GestureEventForTest g6_up(ui::ET_GESTURE_END, 55, 250, 0);
774 root_view->OnGestureEvent(g6_up);
775 v31->Reset();
776 v32->Reset();
777 v3->Reset();
778
779 // Covers all of v3
780 gesture_details.set_bounding_box(gfx::Rect(0, 200, 150, 100));
781 GestureEventForTest g7(ui::ET_GESTURE_TAP, 75, 250, 0, gesture_details);
782 root_view->OnGestureEvent(g7);
783 EXPECT_EQ(ui::ET_UNKNOWN, v31->last_gesture_event_type_);
784 EXPECT_EQ(ui::ET_UNKNOWN, v32->last_gesture_event_type_);
785 EXPECT_EQ(ui::ET_GESTURE_TAP, v3->last_gesture_event_type_);
786 GestureEventForTest g7_up(ui::ET_GESTURE_END, 75, 250, 0);
787 root_view->OnGestureEvent(g7_up);
788 v31->Reset();
789 v32->Reset();
790 v3->Reset();
791
792 // Covers right half of v3
793 gesture_details.set_bounding_box(gfx::Rect(75, 200, 75, 100));
794 GestureEventForTest g8(ui::ET_GESTURE_TAP, 112, 250, 0, gesture_details);
795 root_view->OnGestureEvent(g8);
796 EXPECT_EQ(ui::ET_UNKNOWN, v31->last_gesture_event_type_);
797 EXPECT_EQ(ui::ET_GESTURE_TAP, v32->last_gesture_event_type_);
798 EXPECT_EQ(ui::ET_UNKNOWN, v3->last_gesture_event_type_);
799 GestureEventForTest g8_up(ui::ET_GESTURE_END, 112, 250, 0);
800 root_view->OnGestureEvent(g8_up);
801 v31->Reset();
802 v32->Reset();
803 v3->Reset();
804
805 // Covers v31 and v32 by enough, but closer to v32
806 gesture_details.set_bounding_box(gfx::Rect(30, 225, 180, 115));
807 GestureEventForTest g9(ui::ET_GESTURE_TAP, 120, 282, 0, gesture_details);
808 root_view->OnGestureEvent(g9);
809 EXPECT_EQ(ui::ET_UNKNOWN, v31->last_gesture_event_type_);
810 EXPECT_EQ(ui::ET_GESTURE_TAP, v32->last_gesture_event_type_);
811 EXPECT_EQ(ui::ET_UNKNOWN, v3->last_gesture_event_type_);
812 GestureEventForTest g9_up(ui::ET_GESTURE_END, 120, 282, 0);
813 root_view->OnGestureEvent(g9_up);
814 v31->Reset();
815 v32->Reset();
816 v3->Reset();
817
818 // Covers all of v41
819 gesture_details.set_bounding_box(gfx::Rect(310, 210, 80, 80));
820 GestureEventForTest g10(ui::ET_GESTURE_TAP, 350, 250, 0, gesture_details);
821 root_view->OnGestureEvent(g10);
822 EXPECT_EQ(ui::ET_UNKNOWN, v4->last_gesture_event_type_);
823 EXPECT_EQ(ui::ET_GESTURE_TAP, v41->last_gesture_event_type_);
824 EXPECT_EQ(ui::ET_UNKNOWN, v411->last_gesture_event_type_);
825 GestureEventForTest g10_up(ui::ET_GESTURE_END, 350, 250, 0);
826 root_view->OnGestureEvent(g10_up);
827 v4->Reset();
828 v41->Reset();
829 v411->Reset();
830
831 // Covers all of v411
832 gesture_details.set_bounding_box(gfx::Rect(370, 275, 10, 5));
833 GestureEventForTest g11(ui::ET_GESTURE_TAP, 375, 277, 0, gesture_details);
834 root_view->OnGestureEvent(g11);
835 EXPECT_EQ(ui::ET_UNKNOWN, v4->last_gesture_event_type_);
836 EXPECT_EQ(ui::ET_GESTURE_TAP, v41->last_gesture_event_type_);
837 EXPECT_EQ(ui::ET_UNKNOWN, v411->last_gesture_event_type_);
838 GestureEventForTest g11_up(ui::ET_GESTURE_END, 375, 277, 0);
839 root_view->OnGestureEvent(g11_up);
840 v4->Reset();
841 v41->Reset();
842 v411->Reset();
843
844 // Intersects v41 and v411 but covers neither by enough
845 gesture_details.set_bounding_box(gfx::Rect(368, 272, 5, 8));
846 GestureEventForTest g12(ui::ET_GESTURE_TAP, 370, 276, 0, gesture_details);
847 root_view->OnGestureEvent(g12);
848 EXPECT_EQ(ui::ET_UNKNOWN, v4->last_gesture_event_type_);
849 EXPECT_EQ(ui::ET_GESTURE_TAP, v41->last_gesture_event_type_);
850 EXPECT_EQ(ui::ET_UNKNOWN, v411->last_gesture_event_type_);
851 GestureEventForTest g12_up(ui::ET_GESTURE_END, 370, 276, 0);
852 root_view->OnGestureEvent(g12_up);
853 v4->Reset();
854 v41->Reset();
855 v411->Reset();
856
857 // Center point in v4, intersects v41 but not by enough
858 gesture_details.set_bounding_box(gfx::Rect(285, 185, 40, 40));
859 GestureEventForTest g13(ui::ET_GESTURE_TAP, 305, 205, 0, gesture_details);
860 root_view->OnGestureEvent(g13);
861 EXPECT_EQ(ui::ET_GESTURE_TAP, v4->last_gesture_event_type_);
862 EXPECT_EQ(ui::ET_UNKNOWN, v41->last_gesture_event_type_);
863 EXPECT_EQ(ui::ET_UNKNOWN, v411->last_gesture_event_type_);
864 GestureEventForTest g13_up(ui::ET_GESTURE_END, 305, 205, 0);
865 root_view->OnGestureEvent(g13_up);
866 v4->Reset();
867 v41->Reset();
868 v411->Reset();
869
870 // Intersects v31, v32 (covers by enough), v411 (does not cover
871 // by enough) and is closest to v32
872 gesture_details.set_bounding_box(gfx::Rect(20, 222, 352, 250));
873 GestureEventForTest g14(ui::ET_GESTURE_TAP, 196, 347, 0, gesture_details);
874 root_view->OnGestureEvent(g14);
875 EXPECT_EQ(ui::ET_UNKNOWN, v1->last_gesture_event_type_);
876 EXPECT_EQ(ui::ET_UNKNOWN, v2->last_gesture_event_type_);
877 EXPECT_EQ(ui::ET_UNKNOWN, v3->last_gesture_event_type_);
878 EXPECT_EQ(ui::ET_UNKNOWN, v4->last_gesture_event_type_);
879 EXPECT_EQ(ui::ET_UNKNOWN, v31->last_gesture_event_type_);
880 EXPECT_EQ(ui::ET_GESTURE_TAP, v32->last_gesture_event_type_);
881 EXPECT_EQ(ui::ET_UNKNOWN, v41->last_gesture_event_type_);
882 EXPECT_EQ(ui::ET_UNKNOWN, v411->last_gesture_event_type_);
883 GestureEventForTest g14_up(ui::ET_GESTURE_END, 196, 347, 0);
884 root_view->OnGestureEvent(g14_up);
885 v1->Reset();
886 v2->Reset();
887 v3->Reset();
888 v4->Reset();
889 v31->Reset();
890 v32->Reset();
891 v41->Reset();
892 v411->Reset();
893
894 // Covers all views completely
895 gesture_details.set_bounding_box(gfx::Rect(0, 0, 400, 300));
896 GestureEventForTest g15(ui::ET_GESTURE_TAP, 200, 150, 0, gesture_details);
897 root_view->OnGestureEvent(g15);
898 EXPECT_EQ(ui::ET_UNKNOWN, v1->last_gesture_event_type_);
899 EXPECT_EQ(ui::ET_GESTURE_TAP, v2->last_gesture_event_type_);
900 EXPECT_EQ(ui::ET_UNKNOWN, v3->last_gesture_event_type_);
901 EXPECT_EQ(ui::ET_UNKNOWN, v4->last_gesture_event_type_);
902 EXPECT_EQ(ui::ET_UNKNOWN, v31->last_gesture_event_type_);
903 EXPECT_EQ(ui::ET_UNKNOWN, v32->last_gesture_event_type_);
904 EXPECT_EQ(ui::ET_UNKNOWN, v41->last_gesture_event_type_);
905 EXPECT_EQ(ui::ET_UNKNOWN, v411->last_gesture_event_type_);
906 GestureEventForTest g15_up(ui::ET_GESTURE_END, 200, 150, 0);
907 root_view->OnGestureEvent(g15_up);
908 v1->Reset();
909 v2->Reset();
910 v3->Reset();
911 v4->Reset();
912 v31->Reset();
913 v32->Reset();
914 v41->Reset();
915 v411->Reset();
916
917 // Covers enough of v32, v2, v411 (closest to v411)
918 gesture_details.set_bounding_box(gfx::Rect(120, 15, 375, 450));
919 GestureEventForTest g16(ui::ET_GESTURE_TAP, 307, 240, 0, gesture_details);
920 root_view->OnGestureEvent(g16);
921 EXPECT_EQ(ui::ET_UNKNOWN, v1->last_gesture_event_type_);
922 EXPECT_EQ(ui::ET_UNKNOWN, v2->last_gesture_event_type_);
923 EXPECT_EQ(ui::ET_UNKNOWN, v3->last_gesture_event_type_);
924 EXPECT_EQ(ui::ET_UNKNOWN, v4->last_gesture_event_type_);
925 EXPECT_EQ(ui::ET_UNKNOWN, v31->last_gesture_event_type_);
926 EXPECT_EQ(ui::ET_UNKNOWN, v32->last_gesture_event_type_);
927 EXPECT_EQ(ui::ET_GESTURE_TAP, v41->last_gesture_event_type_);
928 EXPECT_EQ(ui::ET_UNKNOWN, v411->last_gesture_event_type_);
929 GestureEventForTest g16_up(ui::ET_GESTURE_END, 307, 240, 0);
930 root_view->OnGestureEvent(g16_up);
931 v1->Reset();
932 v2->Reset();
933 v3->Reset();
934 v4->Reset();
935 v31->Reset();
936 v32->Reset();
937 v41->Reset();
938 v411->Reset();
939
940 widget->CloseNow();
941 }
942
650 TEST_F(ViewTest, ScrollGestureEvent) { 943 TEST_F(ViewTest, ScrollGestureEvent) {
651 // Views hierarchy for non delivery of GestureEvent. 944 // Views hierarchy for non delivery of GestureEvent.
652 TestView* v1 = new TestViewConsumeGesture(); 945 TestView* v1 = new TestViewConsumeGesture();
653 v1->SetBoundsRect(gfx::Rect(0, 0, 300, 300)); 946 v1->SetBoundsRect(gfx::Rect(0, 0, 300, 300));
654 947
655 TestView* v2 = new TestViewIgnoreScrollGestures(); 948 TestView* v2 = new TestViewIgnoreScrollGestures();
656 v2->SetBoundsRect(gfx::Rect(100, 100, 100, 100)); 949 v2->SetBoundsRect(gfx::Rect(100, 100, 100, 100));
657 950
658 TestView* v3 = new TestViewIgnoreGesture(); 951 TestView* v3 = new TestViewIgnoreGesture();
659 v3->SetBoundsRect(gfx::Rect(0, 0, 100, 100)); 952 v3->SetBoundsRect(gfx::Rect(0, 0, 100, 100));
(...skipping 329 matching lines...) Expand 10 before | Expand all | Expand 10 after
989 1282
990 // Test GetEventHandlerForPoint 1283 // Test GetEventHandlerForPoint
991 EXPECT_EQ(v1, root_view->GetEventHandlerForPoint(v1_centerpoint)); 1284 EXPECT_EQ(v1, root_view->GetEventHandlerForPoint(v1_centerpoint));
992 EXPECT_EQ(v2, root_view->GetEventHandlerForPoint(v2_centerpoint)); 1285 EXPECT_EQ(v2, root_view->GetEventHandlerForPoint(v2_centerpoint));
993 EXPECT_EQ(v1, root_view->GetEventHandlerForPoint(v1_origin)); 1286 EXPECT_EQ(v1, root_view->GetEventHandlerForPoint(v1_origin));
994 EXPECT_EQ(root_view, root_view->GetEventHandlerForPoint(v2_origin)); 1287 EXPECT_EQ(root_view, root_view->GetEventHandlerForPoint(v2_origin));
995 1288
996 widget->CloseNow(); 1289 widget->CloseNow();
997 } 1290 }
998 1291
1292 TEST_F(ViewTest, GetEventHandlerForRect) {
1293 Widget* widget = new Widget;
1294 widget->Init(Widget::InitParams(Widget::InitParams::TYPE_POPUP));
1295 View* root_view = widget->GetRootView();
1296 root_view->SetBoundsRect(gfx::Rect(0, 0, 500, 500));
1297
1298 // Have this hierarchy of views (the coords here are all in root coord):
1299 // v1 (0, 0, 100, 100)
1300 // v2 (150, 0, 250, 100)
1301 // v3 (0, 200, 150, 100)
1302 // v31 (10, 210, 80, 80)
1303 // v32 (110, 210, 30, 80)
1304 // v4 (300, 200, 100, 100)
1305 // v41 (310, 210, 80, 80)
1306 // v411 (370, 275, 10, 5)
1307
1308 // The coordinates used for SetBounds are in parent coordinates
1309
1310 TestView* v1 = new TestView;
1311 v1->SetBounds(0, 0, 100, 100);
1312 root_view->AddChildView(v1);
1313
1314 TestView* v2 = new TestView;
1315 v2->SetBounds(150, 0, 250, 100);
1316 root_view->AddChildView(v2);
1317
1318 TestView* v3 = new TestView;
1319 v3->SetBounds(0, 200, 150, 100);
1320 root_view->AddChildView(v3);
1321
1322 TestView* v4 = new TestView;
1323 v4->SetBounds(300, 200, 100, 100);
1324 root_view->AddChildView(v4);
1325
1326 TestView* v31 = new TestView;
1327 v31->SetBounds(10, 10, 80, 80);
1328 v3->AddChildView(v31);
1329
1330 TestView* v32 = new TestView;
1331 v32->SetBounds(110, 10, 30, 80);
1332 v3->AddChildView(v32);
1333
1334 TestView* v41 = new TestView;
1335 v41->SetBounds(10, 10, 80, 80);
1336 v4->AddChildView(v41);
1337
1338 TestView* v411 = new TestView;
1339 v411->SetBounds(60, 65, 10, 5);
1340 v41->AddChildView(v411);
1341
1342
1343 // Covers v1 by enough
1344 gfx::Rect touch_rect(15, 15, 100, 100);
1345 View* result_view = root_view->GetEventHandlerForRect(touch_rect);
1346 EXPECT_EQ(result_view, v1);
1347
1348 // Intersects v1 but does not cover by enough
1349 touch_rect.SetRect(80, 90, 20, 20);
1350 result_view = root_view->GetEventHandlerForRect(touch_rect);
1351 EXPECT_FALSE(result_view);
1352
1353 // Intersects nothing
1354 touch_rect.SetRect(105, 105, 30, 45);
1355 result_view = root_view->GetEventHandlerForRect(touch_rect);
1356 EXPECT_FALSE(result_view);
1357
1358 // Intersects v2 and covers by enough,
1359 // Intersects v1 but does not cover by enough
1360 touch_rect.SetRect(95, 10, 300, 120);
1361 result_view = root_view->GetEventHandlerForRect(touch_rect);
1362 EXPECT_EQ(result_view, v2);
1363
1364 // Intersects v1 and v2 and covers by enough, closer to v2
1365 touch_rect.SetRect(20, 20, 400, 100);
1366 result_view = root_view->GetEventHandlerForRect(touch_rect);
1367 EXPECT_EQ(result_view, v2);
1368
1369 // Covers all of v3 up to left side of v32
1370 touch_rect.SetRect(0, 200, 110, 100);
1371 result_view = root_view->GetEventHandlerForRect(touch_rect);
1372 EXPECT_EQ(result_view, v31);
1373
1374 // Covers all of v3
1375 touch_rect.SetRect(0, 200, 150, 100);
1376 result_view = root_view->GetEventHandlerForRect(touch_rect);
1377 EXPECT_EQ(result_view, v31);
1378
1379 // Covers right half of v3
1380 touch_rect.SetRect(75, 200, 75, 100);
1381 result_view = root_view->GetEventHandlerForRect(touch_rect);
1382 EXPECT_EQ(result_view, v32);
1383
1384 // Covers v31 and v32 by enough, but closer to v32
1385 touch_rect.SetRect(30, 225, 180, 115);
1386 result_view = root_view->GetEventHandlerForRect(touch_rect);
1387 EXPECT_EQ(result_view, v32);
1388
1389 // Covers all of v41
1390 touch_rect.SetRect(310, 210, 80, 80);
1391 result_view = root_view->GetEventHandlerForRect(touch_rect);
1392 EXPECT_EQ(result_view, v411);
1393
1394 // Covers all of v411
1395 touch_rect.SetRect(370, 275, 10, 5);
1396 result_view = root_view->GetEventHandlerForRect(touch_rect);
1397 EXPECT_EQ(result_view, v411);
1398
1399 // Intersects v41 and v411 but covers neither by enough
1400 touch_rect.SetRect(368, 272, 5, 8);
1401 result_view = root_view->GetEventHandlerForRect(touch_rect);
1402 EXPECT_FALSE(result_view);
1403
1404 // Covers enough of v41 but not enough of v411
1405 touch_rect.SetRect(315, 212, 62, 64);
1406 result_view = root_view->GetEventHandlerForRect(touch_rect);
1407 EXPECT_FALSE(result_view);
1408
1409 // Intersects v31, v32 (covers by enough), v4111 (does not cover
1410 // by enough) and is closest to v32
1411 touch_rect.SetRect(20, 222, 352, 250);
1412 result_view = root_view->GetEventHandlerForRect(touch_rect);
1413 EXPECT_EQ(result_view, v32);
1414
1415 // Covers all views completely
1416 touch_rect.SetRect(0, 0, 400, 300);
1417 result_view = root_view->GetEventHandlerForRect(touch_rect);
1418 EXPECT_EQ(result_view, v2);
1419
1420 // Covers enough of v32, v2, v411 (closest to v411)
1421 touch_rect.SetRect(120, 15, 375, 450);
1422 result_view = root_view->GetEventHandlerForRect(touch_rect);
1423 EXPECT_EQ(result_view, v411);
1424
1425 widget->CloseNow();
1426 }
1427
999 TEST_F(ViewTest, NotifyEnterExitOnChild) { 1428 TEST_F(ViewTest, NotifyEnterExitOnChild) {
1000 Widget* widget = new Widget; 1429 Widget* widget = new Widget;
1001 widget->Init(Widget::InitParams(Widget::InitParams::TYPE_POPUP)); 1430 widget->Init(Widget::InitParams(Widget::InitParams::TYPE_POPUP));
1002 View* root_view = widget->GetRootView(); 1431 View* root_view = widget->GetRootView();
1003 root_view->SetBoundsRect(gfx::Rect(0, 0, 500, 500)); 1432 root_view->SetBoundsRect(gfx::Rect(0, 0, 500, 500));
1004 1433
1005 // Have this hierarchy of views (the coords here are in root coord): 1434 // Have this hierarchy of views (the coords here are in root coord):
1006 // v1 (0, 0, 100, 100) 1435 // v1 (0, 0, 100, 100)
1007 // - v11 (0, 0, 20, 30) 1436 // - v11 (0, 0, 20, 30)
1008 // - v111 (5, 5, 5, 15) 1437 // - v111 (5, 5, 5, 15)
(...skipping 2328 matching lines...) Expand 10 before | Expand all | Expand 10 after
3337 // Set to non default value. 3766 // Set to non default value.
3338 v->layer()->set_scale_content(false); 3767 v->layer()->set_scale_content(false);
3339 scoped_ptr<ui::Layer> old_layer(v->RecreateLayer()); 3768 scoped_ptr<ui::Layer> old_layer(v->RecreateLayer());
3340 ui::Layer* new_layer = v->layer(); 3769 ui::Layer* new_layer = v->layer();
3341 EXPECT_EQ(false, new_layer->scale_content()); 3770 EXPECT_EQ(false, new_layer->scale_content());
3342 } 3771 }
3343 3772
3344 #endif // USE_AURA 3773 #endif // USE_AURA
3345 3774
3346 } // namespace views 3775 } // namespace views
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698