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