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 "ui/aura/window.h" | 5 #include "ui/aura/window.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 #include <utility> | 8 #include <utility> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 473 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
484 EXPECT_FALSE(w1.HitTest(gfx::Point(-1, -1))); | 484 EXPECT_FALSE(w1.HitTest(gfx::Point(-1, -1))); |
485 | 485 |
486 // We can expand the bounds slightly to track events outside our border. | 486 // We can expand the bounds slightly to track events outside our border. |
487 w1.SetHitTestBoundsOverrideOuter(gfx::Insets(-1, -1, -1, -1), | 487 w1.SetHitTestBoundsOverrideOuter(gfx::Insets(-1, -1, -1, -1), |
488 gfx::Insets(-5, -5, -5, -5)); | 488 gfx::Insets(-5, -5, -5, -5)); |
489 EXPECT_TRUE(w1.HitTest(gfx::Point(-1, -1))); | 489 EXPECT_TRUE(w1.HitTest(gfx::Point(-1, -1))); |
490 EXPECT_FALSE(w1.HitTest(gfx::Point(-2, -2))); | 490 EXPECT_FALSE(w1.HitTest(gfx::Point(-2, -2))); |
491 | 491 |
492 ui::TouchEvent pressed( | 492 ui::TouchEvent pressed( |
493 ui::ET_TOUCH_PRESSED, gfx::Point(50, 50), 0, getTime()); | 493 ui::ET_TOUCH_PRESSED, gfx::Point(50, 50), 0, getTime()); |
494 dispatcher()->AsRootWindowHostDelegate()->OnHostTouchEvent(&pressed); | 494 dispatcher()->AsWindowTreeHostDelegate()->OnHostTouchEvent(&pressed); |
495 EXPECT_TRUE(w1.HitTest(gfx::Point(-2, -2))); | 495 EXPECT_TRUE(w1.HitTest(gfx::Point(-2, -2))); |
496 EXPECT_TRUE(w1.HitTest(gfx::Point(-5, -5))); | 496 EXPECT_TRUE(w1.HitTest(gfx::Point(-5, -5))); |
497 EXPECT_FALSE(w1.HitTest(gfx::Point(-5, -6))); | 497 EXPECT_FALSE(w1.HitTest(gfx::Point(-5, -6))); |
498 ui::TouchEvent released( | 498 ui::TouchEvent released( |
499 ui::ET_TOUCH_RELEASED, gfx::Point(50, 50), 0, getTime()); | 499 ui::ET_TOUCH_RELEASED, gfx::Point(50, 50), 0, getTime()); |
500 dispatcher()->AsRootWindowHostDelegate()->OnHostTouchEvent(&released); | 500 dispatcher()->AsWindowTreeHostDelegate()->OnHostTouchEvent(&released); |
501 EXPECT_FALSE(w1.HitTest(gfx::Point(-2, -2))); | 501 EXPECT_FALSE(w1.HitTest(gfx::Point(-2, -2))); |
502 | 502 |
503 // TODO(beng): clip Window to parent. | 503 // TODO(beng): clip Window to parent. |
504 } | 504 } |
505 | 505 |
506 TEST_F(WindowTest, HitTestMask) { | 506 TEST_F(WindowTest, HitTestMask) { |
507 MaskedWindowDelegate d1(gfx::Rect(5, 6, 20, 30)); | 507 MaskedWindowDelegate d1(gfx::Rect(5, 6, 20, 30)); |
508 Window w1(&d1); | 508 Window w1(&d1); |
509 w1.Init(ui::LAYER_NOT_DRAWN); | 509 w1.Init(ui::LAYER_NOT_DRAWN); |
510 w1.SetBounds(gfx::Rect(10, 20, 50, 60)); | 510 w1.SetBounds(gfx::Rect(10, 20, 50, 60)); |
(...skipping 330 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
841 EventGenerator generator(root_window(), gfx::Point(50, 50)); | 841 EventGenerator generator(root_window(), gfx::Point(50, 50)); |
842 generator.PressLeftButton(); | 842 generator.PressLeftButton(); |
843 EXPECT_EQ(1, delegate.mouse_event_count()); | 843 EXPECT_EQ(1, delegate.mouse_event_count()); |
844 generator.ReleaseLeftButton(); | 844 generator.ReleaseLeftButton(); |
845 | 845 |
846 EXPECT_EQ(2, delegate.mouse_event_count()); | 846 EXPECT_EQ(2, delegate.mouse_event_count()); |
847 delegate.ResetCounts(); | 847 delegate.ResetCounts(); |
848 | 848 |
849 ui::TouchEvent touchev( | 849 ui::TouchEvent touchev( |
850 ui::ET_TOUCH_PRESSED, gfx::Point(50, 50), 0, getTime()); | 850 ui::ET_TOUCH_PRESSED, gfx::Point(50, 50), 0, getTime()); |
851 dispatcher()->AsRootWindowHostDelegate()->OnHostTouchEvent(&touchev); | 851 dispatcher()->AsWindowTreeHostDelegate()->OnHostTouchEvent(&touchev); |
852 EXPECT_EQ(1, delegate.touch_event_count()); | 852 EXPECT_EQ(1, delegate.touch_event_count()); |
853 delegate.ResetCounts(); | 853 delegate.ResetCounts(); |
854 | 854 |
855 window->ReleaseCapture(); | 855 window->ReleaseCapture(); |
856 EXPECT_FALSE(window->HasCapture()); | 856 EXPECT_FALSE(window->HasCapture()); |
857 EXPECT_EQ(1, delegate.capture_lost_count()); | 857 EXPECT_EQ(1, delegate.capture_lost_count()); |
858 EXPECT_EQ(1, delegate.capture_changed_event_count()); | 858 EXPECT_EQ(1, delegate.capture_changed_event_count()); |
859 EXPECT_EQ(1, delegate.mouse_event_count()); | 859 EXPECT_EQ(1, delegate.mouse_event_count()); |
860 EXPECT_EQ(0, delegate.touch_event_count()); | 860 EXPECT_EQ(0, delegate.touch_event_count()); |
861 | 861 |
862 generator.PressLeftButton(); | 862 generator.PressLeftButton(); |
863 EXPECT_EQ(1, delegate.mouse_event_count()); | 863 EXPECT_EQ(1, delegate.mouse_event_count()); |
864 | 864 |
865 ui::TouchEvent touchev2( | 865 ui::TouchEvent touchev2( |
866 ui::ET_TOUCH_PRESSED, gfx::Point(250, 250), 1, getTime()); | 866 ui::ET_TOUCH_PRESSED, gfx::Point(250, 250), 1, getTime()); |
867 dispatcher()->AsRootWindowHostDelegate()->OnHostTouchEvent(&touchev2); | 867 dispatcher()->AsWindowTreeHostDelegate()->OnHostTouchEvent(&touchev2); |
868 EXPECT_EQ(0, delegate.touch_event_count()); | 868 EXPECT_EQ(0, delegate.touch_event_count()); |
869 | 869 |
870 // Removing the capture window from parent should reset the capture window | 870 // Removing the capture window from parent should reset the capture window |
871 // in the root window. | 871 // in the root window. |
872 window->SetCapture(); | 872 window->SetCapture(); |
873 EXPECT_EQ(window.get(), aura::client::GetCaptureWindow(root_window())); | 873 EXPECT_EQ(window.get(), aura::client::GetCaptureWindow(root_window())); |
874 window->parent()->RemoveChild(window.get()); | 874 window->parent()->RemoveChild(window.get()); |
875 EXPECT_FALSE(window->HasCapture()); | 875 EXPECT_FALSE(window->HasCapture()); |
876 EXPECT_EQ(NULL, aura::client::GetCaptureWindow(root_window())); | 876 EXPECT_EQ(NULL, aura::client::GetCaptureWindow(root_window())); |
877 } | 877 } |
878 | 878 |
879 TEST_F(WindowTest, TouchCaptureCancelsOtherTouches) { | 879 TEST_F(WindowTest, TouchCaptureCancelsOtherTouches) { |
880 CaptureWindowDelegateImpl delegate1; | 880 CaptureWindowDelegateImpl delegate1; |
881 scoped_ptr<Window> w1(CreateTestWindowWithDelegate( | 881 scoped_ptr<Window> w1(CreateTestWindowWithDelegate( |
882 &delegate1, 0, gfx::Rect(0, 0, 50, 50), root_window())); | 882 &delegate1, 0, gfx::Rect(0, 0, 50, 50), root_window())); |
883 CaptureWindowDelegateImpl delegate2; | 883 CaptureWindowDelegateImpl delegate2; |
884 scoped_ptr<Window> w2(CreateTestWindowWithDelegate( | 884 scoped_ptr<Window> w2(CreateTestWindowWithDelegate( |
885 &delegate2, 0, gfx::Rect(50, 50, 50, 50), root_window())); | 885 &delegate2, 0, gfx::Rect(50, 50, 50, 50), root_window())); |
886 | 886 |
887 // Press on w1. | 887 // Press on w1. |
888 ui::TouchEvent press( | 888 ui::TouchEvent press( |
889 ui::ET_TOUCH_PRESSED, gfx::Point(10, 10), 0, getTime()); | 889 ui::ET_TOUCH_PRESSED, gfx::Point(10, 10), 0, getTime()); |
890 dispatcher()->AsRootWindowHostDelegate()->OnHostTouchEvent(&press); | 890 dispatcher()->AsWindowTreeHostDelegate()->OnHostTouchEvent(&press); |
891 // We will get both GESTURE_BEGIN and GESTURE_TAP_DOWN. | 891 // We will get both GESTURE_BEGIN and GESTURE_TAP_DOWN. |
892 EXPECT_EQ(2, delegate1.gesture_event_count()); | 892 EXPECT_EQ(2, delegate1.gesture_event_count()); |
893 delegate1.ResetCounts(); | 893 delegate1.ResetCounts(); |
894 | 894 |
895 // Capturing to w2 should cause the touch to be canceled. | 895 // Capturing to w2 should cause the touch to be canceled. |
896 w2->SetCapture(); | 896 w2->SetCapture(); |
897 EXPECT_EQ(1, delegate1.touch_event_count()); | 897 EXPECT_EQ(1, delegate1.touch_event_count()); |
898 EXPECT_EQ(0, delegate2.touch_event_count()); | 898 EXPECT_EQ(0, delegate2.touch_event_count()); |
899 delegate1.ResetCounts(); | 899 delegate1.ResetCounts(); |
900 delegate2.ResetCounts(); | 900 delegate2.ResetCounts(); |
901 | 901 |
902 // Events now go to w2. | 902 // Events now go to w2. |
903 ui::TouchEvent move(ui::ET_TOUCH_MOVED, gfx::Point(10, 20), 0, getTime()); | 903 ui::TouchEvent move(ui::ET_TOUCH_MOVED, gfx::Point(10, 20), 0, getTime()); |
904 dispatcher()->AsRootWindowHostDelegate()->OnHostTouchEvent(&move); | 904 dispatcher()->AsWindowTreeHostDelegate()->OnHostTouchEvent(&move); |
905 EXPECT_EQ(0, delegate1.gesture_event_count()); | 905 EXPECT_EQ(0, delegate1.gesture_event_count()); |
906 EXPECT_EQ(0, delegate1.touch_event_count()); | 906 EXPECT_EQ(0, delegate1.touch_event_count()); |
907 EXPECT_EQ(0, delegate2.gesture_event_count()); | 907 EXPECT_EQ(0, delegate2.gesture_event_count()); |
908 EXPECT_EQ(1, delegate2.touch_event_count()); | 908 EXPECT_EQ(1, delegate2.touch_event_count()); |
909 | 909 |
910 ui::TouchEvent release( | 910 ui::TouchEvent release( |
911 ui::ET_TOUCH_RELEASED, gfx::Point(10, 20), 0, getTime()); | 911 ui::ET_TOUCH_RELEASED, gfx::Point(10, 20), 0, getTime()); |
912 dispatcher()->AsRootWindowHostDelegate()->OnHostTouchEvent(&release); | 912 dispatcher()->AsWindowTreeHostDelegate()->OnHostTouchEvent(&release); |
913 EXPECT_EQ(0, delegate1.gesture_event_count()); | 913 EXPECT_EQ(0, delegate1.gesture_event_count()); |
914 EXPECT_EQ(0, delegate2.gesture_event_count()); | 914 EXPECT_EQ(0, delegate2.gesture_event_count()); |
915 | 915 |
916 // A new press is captured by w2. | 916 // A new press is captured by w2. |
917 ui::TouchEvent press2( | 917 ui::TouchEvent press2( |
918 ui::ET_TOUCH_PRESSED, gfx::Point(10, 10), 0, getTime()); | 918 ui::ET_TOUCH_PRESSED, gfx::Point(10, 10), 0, getTime()); |
919 dispatcher()->AsRootWindowHostDelegate()->OnHostTouchEvent(&press2); | 919 dispatcher()->AsWindowTreeHostDelegate()->OnHostTouchEvent(&press2); |
920 EXPECT_EQ(0, delegate1.gesture_event_count()); | 920 EXPECT_EQ(0, delegate1.gesture_event_count()); |
921 // We will get both GESTURE_BEGIN and GESTURE_TAP_DOWN. | 921 // We will get both GESTURE_BEGIN and GESTURE_TAP_DOWN. |
922 EXPECT_EQ(2, delegate2.gesture_event_count()); | 922 EXPECT_EQ(2, delegate2.gesture_event_count()); |
923 delegate1.ResetCounts(); | 923 delegate1.ResetCounts(); |
924 delegate2.ResetCounts(); | 924 delegate2.ResetCounts(); |
925 | 925 |
926 // And releasing capture changes nothing. | 926 // And releasing capture changes nothing. |
927 w2->ReleaseCapture(); | 927 w2->ReleaseCapture(); |
928 EXPECT_EQ(0, delegate1.gesture_event_count()); | 928 EXPECT_EQ(0, delegate1.gesture_event_count()); |
929 EXPECT_EQ(0, delegate1.touch_event_count()); | 929 EXPECT_EQ(0, delegate1.touch_event_count()); |
930 EXPECT_EQ(0, delegate2.gesture_event_count()); | 930 EXPECT_EQ(0, delegate2.gesture_event_count()); |
931 EXPECT_EQ(0, delegate2.touch_event_count()); | 931 EXPECT_EQ(0, delegate2.touch_event_count()); |
932 } | 932 } |
933 | 933 |
934 TEST_F(WindowTest, TouchCaptureDoesntCancelCapturedTouches) { | 934 TEST_F(WindowTest, TouchCaptureDoesntCancelCapturedTouches) { |
935 CaptureWindowDelegateImpl delegate; | 935 CaptureWindowDelegateImpl delegate; |
936 scoped_ptr<Window> window(CreateTestWindowWithDelegate( | 936 scoped_ptr<Window> window(CreateTestWindowWithDelegate( |
937 &delegate, 0, gfx::Rect(0, 0, 50, 50), root_window())); | 937 &delegate, 0, gfx::Rect(0, 0, 50, 50), root_window())); |
938 | 938 |
939 ui::TouchEvent press( | 939 ui::TouchEvent press( |
940 ui::ET_TOUCH_PRESSED, gfx::Point(10, 10), 0, getTime()); | 940 ui::ET_TOUCH_PRESSED, gfx::Point(10, 10), 0, getTime()); |
941 dispatcher()->AsRootWindowHostDelegate()->OnHostTouchEvent(&press); | 941 dispatcher()->AsWindowTreeHostDelegate()->OnHostTouchEvent(&press); |
942 | 942 |
943 // We will get both GESTURE_BEGIN and GESTURE_TAP_DOWN. | 943 // We will get both GESTURE_BEGIN and GESTURE_TAP_DOWN. |
944 EXPECT_EQ(2, delegate.gesture_event_count()); | 944 EXPECT_EQ(2, delegate.gesture_event_count()); |
945 EXPECT_EQ(1, delegate.touch_event_count()); | 945 EXPECT_EQ(1, delegate.touch_event_count()); |
946 delegate.ResetCounts(); | 946 delegate.ResetCounts(); |
947 | 947 |
948 window->SetCapture(); | 948 window->SetCapture(); |
949 EXPECT_EQ(0, delegate.gesture_event_count()); | 949 EXPECT_EQ(0, delegate.gesture_event_count()); |
950 EXPECT_EQ(0, delegate.touch_event_count()); | 950 EXPECT_EQ(0, delegate.touch_event_count()); |
951 delegate.ResetCounts(); | 951 delegate.ResetCounts(); |
952 | 952 |
953 // On move We will get TOUCH_MOVED, GESTURE_TAP_CANCEL, | 953 // On move We will get TOUCH_MOVED, GESTURE_TAP_CANCEL, |
954 // GESTURE_SCROLL_START and GESTURE_SCROLL_UPDATE. | 954 // GESTURE_SCROLL_START and GESTURE_SCROLL_UPDATE. |
955 ui::TouchEvent move(ui::ET_TOUCH_MOVED, gfx::Point(10, 20), 0, getTime()); | 955 ui::TouchEvent move(ui::ET_TOUCH_MOVED, gfx::Point(10, 20), 0, getTime()); |
956 dispatcher()->AsRootWindowHostDelegate()->OnHostTouchEvent(&move); | 956 dispatcher()->AsWindowTreeHostDelegate()->OnHostTouchEvent(&move); |
957 EXPECT_EQ(1, delegate.touch_event_count()); | 957 EXPECT_EQ(1, delegate.touch_event_count()); |
958 EXPECT_EQ(3, delegate.gesture_event_count()); | 958 EXPECT_EQ(3, delegate.gesture_event_count()); |
959 delegate.ResetCounts(); | 959 delegate.ResetCounts(); |
960 | 960 |
961 // Release capture shouldn't change anything. | 961 // Release capture shouldn't change anything. |
962 window->ReleaseCapture(); | 962 window->ReleaseCapture(); |
963 EXPECT_EQ(0, delegate.touch_event_count()); | 963 EXPECT_EQ(0, delegate.touch_event_count()); |
964 EXPECT_EQ(0, delegate.gesture_event_count()); | 964 EXPECT_EQ(0, delegate.gesture_event_count()); |
965 delegate.ResetCounts(); | 965 delegate.ResetCounts(); |
966 | 966 |
967 // On move we still get TOUCH_MOVED and GESTURE_SCROLL_UPDATE. | 967 // On move we still get TOUCH_MOVED and GESTURE_SCROLL_UPDATE. |
968 ui::TouchEvent move2(ui::ET_TOUCH_MOVED, gfx::Point(10, 30), 0, getTime()); | 968 ui::TouchEvent move2(ui::ET_TOUCH_MOVED, gfx::Point(10, 30), 0, getTime()); |
969 dispatcher()->AsRootWindowHostDelegate()->OnHostTouchEvent(&move2); | 969 dispatcher()->AsWindowTreeHostDelegate()->OnHostTouchEvent(&move2); |
970 EXPECT_EQ(1, delegate.touch_event_count()); | 970 EXPECT_EQ(1, delegate.touch_event_count()); |
971 EXPECT_EQ(1, delegate.gesture_event_count()); | 971 EXPECT_EQ(1, delegate.gesture_event_count()); |
972 delegate.ResetCounts(); | 972 delegate.ResetCounts(); |
973 | 973 |
974 // And on release we get TOUCH_RELEASED, GESTURE_SCROLL_END, GESTURE_END | 974 // And on release we get TOUCH_RELEASED, GESTURE_SCROLL_END, GESTURE_END |
975 ui::TouchEvent release( | 975 ui::TouchEvent release( |
976 ui::ET_TOUCH_RELEASED, gfx::Point(10, 20), 0, getTime()); | 976 ui::ET_TOUCH_RELEASED, gfx::Point(10, 20), 0, getTime()); |
977 dispatcher()->AsRootWindowHostDelegate()->OnHostTouchEvent(&release); | 977 dispatcher()->AsWindowTreeHostDelegate()->OnHostTouchEvent(&release); |
978 EXPECT_EQ(1, delegate.touch_event_count()); | 978 EXPECT_EQ(1, delegate.touch_event_count()); |
979 EXPECT_EQ(2, delegate.gesture_event_count()); | 979 EXPECT_EQ(2, delegate.gesture_event_count()); |
980 } | 980 } |
981 | 981 |
982 | 982 |
983 // Assertions around SetCapture() and touch/gestures. | 983 // Assertions around SetCapture() and touch/gestures. |
984 TEST_F(WindowTest, TransferCaptureTouchEvents) { | 984 TEST_F(WindowTest, TransferCaptureTouchEvents) { |
985 // Touch on |w1|. | 985 // Touch on |w1|. |
986 CaptureWindowDelegateImpl d1; | 986 CaptureWindowDelegateImpl d1; |
987 scoped_ptr<Window> w1(CreateTestWindowWithDelegate( | 987 scoped_ptr<Window> w1(CreateTestWindowWithDelegate( |
988 &d1, 0, gfx::Rect(0, 0, 20, 20), root_window())); | 988 &d1, 0, gfx::Rect(0, 0, 20, 20), root_window())); |
989 ui::TouchEvent p1(ui::ET_TOUCH_PRESSED, gfx::Point(10, 10), 0, getTime()); | 989 ui::TouchEvent p1(ui::ET_TOUCH_PRESSED, gfx::Point(10, 10), 0, getTime()); |
990 dispatcher()->AsRootWindowHostDelegate()->OnHostTouchEvent(&p1); | 990 dispatcher()->AsWindowTreeHostDelegate()->OnHostTouchEvent(&p1); |
991 // We will get both GESTURE_BEGIN and GESTURE_TAP_DOWN. | 991 // We will get both GESTURE_BEGIN and GESTURE_TAP_DOWN. |
992 EXPECT_EQ(1, d1.touch_event_count()); | 992 EXPECT_EQ(1, d1.touch_event_count()); |
993 EXPECT_EQ(2, d1.gesture_event_count()); | 993 EXPECT_EQ(2, d1.gesture_event_count()); |
994 d1.ResetCounts(); | 994 d1.ResetCounts(); |
995 | 995 |
996 // Touch on |w2| with a different id. | 996 // Touch on |w2| with a different id. |
997 CaptureWindowDelegateImpl d2; | 997 CaptureWindowDelegateImpl d2; |
998 scoped_ptr<Window> w2(CreateTestWindowWithDelegate( | 998 scoped_ptr<Window> w2(CreateTestWindowWithDelegate( |
999 &d2, 0, gfx::Rect(40, 0, 40, 20), root_window())); | 999 &d2, 0, gfx::Rect(40, 0, 40, 20), root_window())); |
1000 ui::TouchEvent p2(ui::ET_TOUCH_PRESSED, gfx::Point(41, 10), 1, getTime()); | 1000 ui::TouchEvent p2(ui::ET_TOUCH_PRESSED, gfx::Point(41, 10), 1, getTime()); |
1001 dispatcher()->AsRootWindowHostDelegate()->OnHostTouchEvent(&p2); | 1001 dispatcher()->AsWindowTreeHostDelegate()->OnHostTouchEvent(&p2); |
1002 EXPECT_EQ(0, d1.touch_event_count()); | 1002 EXPECT_EQ(0, d1.touch_event_count()); |
1003 EXPECT_EQ(0, d1.gesture_event_count()); | 1003 EXPECT_EQ(0, d1.gesture_event_count()); |
1004 // We will get both GESTURE_BEGIN and GESTURE_TAP_DOWN for new target window. | 1004 // We will get both GESTURE_BEGIN and GESTURE_TAP_DOWN for new target window. |
1005 EXPECT_EQ(1, d2.touch_event_count()); | 1005 EXPECT_EQ(1, d2.touch_event_count()); |
1006 EXPECT_EQ(2, d2.gesture_event_count()); | 1006 EXPECT_EQ(2, d2.gesture_event_count()); |
1007 d1.ResetCounts(); | 1007 d1.ResetCounts(); |
1008 d2.ResetCounts(); | 1008 d2.ResetCounts(); |
1009 | 1009 |
1010 // Set capture on |w2|, this should send a cancel (TAP_CANCEL, END) to |w1| | 1010 // Set capture on |w2|, this should send a cancel (TAP_CANCEL, END) to |w1| |
1011 // but not |w2|. | 1011 // but not |w2|. |
(...skipping 15 matching lines...) Expand all Loading... |
1027 EXPECT_EQ(0, d1.touch_event_count()); | 1027 EXPECT_EQ(0, d1.touch_event_count()); |
1028 EXPECT_EQ(0, d1.gesture_event_count()); | 1028 EXPECT_EQ(0, d1.gesture_event_count()); |
1029 EXPECT_EQ(0, d2.touch_event_count()); | 1029 EXPECT_EQ(0, d2.touch_event_count()); |
1030 EXPECT_EQ(0, d2.gesture_event_count()); | 1030 EXPECT_EQ(0, d2.gesture_event_count()); |
1031 EXPECT_EQ(0, d3.touch_event_count()); | 1031 EXPECT_EQ(0, d3.touch_event_count()); |
1032 EXPECT_EQ(0, d3.gesture_event_count()); | 1032 EXPECT_EQ(0, d3.gesture_event_count()); |
1033 | 1033 |
1034 // Move touch id originally associated with |w2|. Since capture was transfered | 1034 // Move touch id originally associated with |w2|. Since capture was transfered |
1035 // from 2 to 3 only |w3| should get the event. | 1035 // from 2 to 3 only |w3| should get the event. |
1036 ui::TouchEvent m3(ui::ET_TOUCH_MOVED, gfx::Point(110, 105), 1, getTime()); | 1036 ui::TouchEvent m3(ui::ET_TOUCH_MOVED, gfx::Point(110, 105), 1, getTime()); |
1037 dispatcher()->AsRootWindowHostDelegate()->OnHostTouchEvent(&m3); | 1037 dispatcher()->AsWindowTreeHostDelegate()->OnHostTouchEvent(&m3); |
1038 EXPECT_EQ(0, d1.touch_event_count()); | 1038 EXPECT_EQ(0, d1.touch_event_count()); |
1039 EXPECT_EQ(0, d1.gesture_event_count()); | 1039 EXPECT_EQ(0, d1.gesture_event_count()); |
1040 EXPECT_EQ(0, d2.touch_event_count()); | 1040 EXPECT_EQ(0, d2.touch_event_count()); |
1041 EXPECT_EQ(0, d2.gesture_event_count()); | 1041 EXPECT_EQ(0, d2.gesture_event_count()); |
1042 // |w3| gets a TOUCH_MOVE, TAP_CANCEL and two scroll related events. | 1042 // |w3| gets a TOUCH_MOVE, TAP_CANCEL and two scroll related events. |
1043 EXPECT_EQ(1, d3.touch_event_count()); | 1043 EXPECT_EQ(1, d3.touch_event_count()); |
1044 EXPECT_EQ(3, d3.gesture_event_count()); | 1044 EXPECT_EQ(3, d3.gesture_event_count()); |
1045 d1.ResetCounts(); | 1045 d1.ResetCounts(); |
1046 d2.ResetCounts(); | 1046 d2.ResetCounts(); |
1047 d3.ResetCounts(); | 1047 d3.ResetCounts(); |
1048 | 1048 |
1049 // When we release capture, no touches are canceled. | 1049 // When we release capture, no touches are canceled. |
1050 w3->ReleaseCapture(); | 1050 w3->ReleaseCapture(); |
1051 EXPECT_EQ(0, d1.touch_event_count()); | 1051 EXPECT_EQ(0, d1.touch_event_count()); |
1052 EXPECT_EQ(0, d1.gesture_event_count()); | 1052 EXPECT_EQ(0, d1.gesture_event_count()); |
1053 EXPECT_EQ(0, d2.touch_event_count()); | 1053 EXPECT_EQ(0, d2.touch_event_count()); |
1054 EXPECT_EQ(0, d2.gesture_event_count()); | 1054 EXPECT_EQ(0, d2.gesture_event_count()); |
1055 EXPECT_EQ(0, d3.touch_event_count()); | 1055 EXPECT_EQ(0, d3.touch_event_count()); |
1056 EXPECT_EQ(0, d3.gesture_event_count()); | 1056 EXPECT_EQ(0, d3.gesture_event_count()); |
1057 | 1057 |
1058 // And when we move the touch again, |w3| still gets the events. | 1058 // And when we move the touch again, |w3| still gets the events. |
1059 ui::TouchEvent m4(ui::ET_TOUCH_MOVED, gfx::Point(120, 105), 1, getTime()); | 1059 ui::TouchEvent m4(ui::ET_TOUCH_MOVED, gfx::Point(120, 105), 1, getTime()); |
1060 dispatcher()->AsRootWindowHostDelegate()->OnHostTouchEvent(&m4); | 1060 dispatcher()->AsWindowTreeHostDelegate()->OnHostTouchEvent(&m4); |
1061 EXPECT_EQ(0, d1.touch_event_count()); | 1061 EXPECT_EQ(0, d1.touch_event_count()); |
1062 EXPECT_EQ(0, d1.gesture_event_count()); | 1062 EXPECT_EQ(0, d1.gesture_event_count()); |
1063 EXPECT_EQ(0, d2.touch_event_count()); | 1063 EXPECT_EQ(0, d2.touch_event_count()); |
1064 EXPECT_EQ(0, d2.gesture_event_count()); | 1064 EXPECT_EQ(0, d2.gesture_event_count()); |
1065 EXPECT_EQ(1, d3.touch_event_count()); | 1065 EXPECT_EQ(1, d3.touch_event_count()); |
1066 EXPECT_EQ(1, d3.gesture_event_count()); | 1066 EXPECT_EQ(1, d3.gesture_event_count()); |
1067 d1.ResetCounts(); | 1067 d1.ResetCounts(); |
1068 d2.ResetCounts(); | 1068 d2.ResetCounts(); |
1069 d3.ResetCounts(); | 1069 d3.ResetCounts(); |
1070 } | 1070 } |
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1201 EXPECT_FALSE(d2.exited()); | 1201 EXPECT_FALSE(d2.exited()); |
1202 | 1202 |
1203 generator.MoveMouseToCenterOf(w2.get()); | 1203 generator.MoveMouseToCenterOf(w2.get()); |
1204 EXPECT_TRUE(d1.entered()); | 1204 EXPECT_TRUE(d1.entered()); |
1205 EXPECT_TRUE(d1.exited()); | 1205 EXPECT_TRUE(d1.exited()); |
1206 EXPECT_TRUE(d2.entered()); | 1206 EXPECT_TRUE(d2.entered()); |
1207 EXPECT_FALSE(d2.exited()); | 1207 EXPECT_FALSE(d2.exited()); |
1208 } | 1208 } |
1209 | 1209 |
1210 // Verifies that the WindowDelegate receives MouseExit from ET_MOUSE_EXITED. | 1210 // Verifies that the WindowDelegate receives MouseExit from ET_MOUSE_EXITED. |
1211 TEST_F(WindowTest, RootWindowHostExit) { | 1211 TEST_F(WindowTest, WindowTreeHostExit) { |
1212 MouseEnterExitWindowDelegate d1; | 1212 MouseEnterExitWindowDelegate d1; |
1213 scoped_ptr<Window> w1( | 1213 scoped_ptr<Window> w1( |
1214 CreateTestWindowWithDelegate(&d1, 1, gfx::Rect(10, 10, 50, 50), | 1214 CreateTestWindowWithDelegate(&d1, 1, gfx::Rect(10, 10, 50, 50), |
1215 root_window())); | 1215 root_window())); |
1216 | 1216 |
1217 test::EventGenerator generator(root_window()); | 1217 test::EventGenerator generator(root_window()); |
1218 generator.MoveMouseToCenterOf(w1.get()); | 1218 generator.MoveMouseToCenterOf(w1.get()); |
1219 EXPECT_TRUE(d1.entered()); | 1219 EXPECT_TRUE(d1.entered()); |
1220 EXPECT_FALSE(d1.exited()); | 1220 EXPECT_FALSE(d1.exited()); |
1221 d1.ResetExpectations(); | 1221 d1.ResetExpectations(); |
1222 | 1222 |
1223 ui::MouseEvent exit_event( | 1223 ui::MouseEvent exit_event( |
1224 ui::ET_MOUSE_EXITED, gfx::Point(), gfx::Point(), 0, 0); | 1224 ui::ET_MOUSE_EXITED, gfx::Point(), gfx::Point(), 0, 0); |
1225 dispatcher()->AsRootWindowHostDelegate()->OnHostMouseEvent(&exit_event); | 1225 dispatcher()->AsWindowTreeHostDelegate()->OnHostMouseEvent(&exit_event); |
1226 EXPECT_FALSE(d1.entered()); | 1226 EXPECT_FALSE(d1.entered()); |
1227 EXPECT_TRUE(d1.exited()); | 1227 EXPECT_TRUE(d1.exited()); |
1228 } | 1228 } |
1229 | 1229 |
1230 // Verifies that the WindowDelegate receives MouseExit and MouseEnter events for | 1230 // Verifies that the WindowDelegate receives MouseExit and MouseEnter events for |
1231 // mouse transitions from window to window, even if the entered window sets | 1231 // mouse transitions from window to window, even if the entered window sets |
1232 // and releases capture. | 1232 // and releases capture. |
1233 TEST_F(WindowTest, MouseEnterExitWithClick) { | 1233 TEST_F(WindowTest, MouseEnterExitWithClick) { |
1234 MouseEnterExitWindowDelegate d1; | 1234 MouseEnterExitWindowDelegate d1; |
1235 scoped_ptr<Window> w1( | 1235 scoped_ptr<Window> w1( |
(...skipping 336 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1572 gfx::Rect(0, 0, 20, 20), root_window())); | 1572 gfx::Rect(0, 0, 20, 20), root_window())); |
1573 | 1573 |
1574 // Rotate the root-window clock-wise 90 degrees. | 1574 // Rotate the root-window clock-wise 90 degrees. |
1575 gfx::Transform transform; | 1575 gfx::Transform transform; |
1576 transform.Translate(size.height(), 0.0); | 1576 transform.Translate(size.height(), 0.0); |
1577 transform.Rotate(90.0); | 1577 transform.Rotate(90.0); |
1578 dispatcher()->host()->SetTransform(transform); | 1578 dispatcher()->host()->SetTransform(transform); |
1579 | 1579 |
1580 ui::TouchEvent press( | 1580 ui::TouchEvent press( |
1581 ui::ET_TOUCH_PRESSED, gfx::Point(size.height() - 10, 10), 0, getTime()); | 1581 ui::ET_TOUCH_PRESSED, gfx::Point(size.height() - 10, 10), 0, getTime()); |
1582 dispatcher()->AsRootWindowHostDelegate()->OnHostTouchEvent(&press); | 1582 dispatcher()->AsWindowTreeHostDelegate()->OnHostTouchEvent(&press); |
1583 EXPECT_EQ(gfx::Point(10, 10).ToString(), delegate->position().ToString()); | 1583 EXPECT_EQ(gfx::Point(10, 10).ToString(), delegate->position().ToString()); |
1584 } | 1584 } |
1585 | 1585 |
1586 // Various assertions for transient children. | 1586 // Various assertions for transient children. |
1587 TEST_F(WindowTest, TransientChildren) { | 1587 TEST_F(WindowTest, TransientChildren) { |
1588 scoped_ptr<Window> parent(CreateTestWindowWithId(0, root_window())); | 1588 scoped_ptr<Window> parent(CreateTestWindowWithId(0, root_window())); |
1589 scoped_ptr<Window> w1(CreateTestWindowWithId(1, parent.get())); | 1589 scoped_ptr<Window> w1(CreateTestWindowWithId(1, parent.get())); |
1590 scoped_ptr<Window> w3(CreateTestWindowWithId(3, parent.get())); | 1590 scoped_ptr<Window> w3(CreateTestWindowWithId(3, parent.get())); |
1591 Window* w2 = CreateTestWindowWithId(2, parent.get()); | 1591 Window* w2 = CreateTestWindowWithId(2, parent.get()); |
1592 w1->AddTransientChild(w2); // w2 is now owned by w1. | 1592 w1->AddTransientChild(w2); // w2 is now owned by w1. |
(...skipping 2115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3708 BuildRootLayerTreeDescription(*root.layer())) | 3708 BuildRootLayerTreeDescription(*root.layer())) |
3709 << "layer tree doesn't match at " << i; | 3709 << "layer tree doesn't match at " << i; |
3710 EXPECT_EQ(data[i].expected_description, | 3710 EXPECT_EQ(data[i].expected_description, |
3711 BuildRootWindowTreeDescription(root)) | 3711 BuildRootWindowTreeDescription(root)) |
3712 << "window tree doesn't match at " << i; | 3712 << "window tree doesn't match at " << i; |
3713 } | 3713 } |
3714 } | 3714 } |
3715 | 3715 |
3716 } // namespace test | 3716 } // namespace test |
3717 } // namespace aura | 3717 } // namespace aura |
OLD | NEW |