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