| 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 "base/command_line.h" | 5 #include "base/command_line.h" |
| 6 #include "base/memory/scoped_vector.h" | 6 #include "base/memory/scoped_vector.h" |
| 7 #include "base/run_loop.h" | 7 #include "base/run_loop.h" |
| 8 #include "base/strings/string_number_conversions.h" | 8 #include "base/strings/string_number_conversions.h" |
| 9 #include "base/timer/timer.h" | 9 #include "base/timer/timer.h" |
| 10 #include "testing/gtest/include/gtest/gtest.h" | 10 #include "testing/gtest/include/gtest/gtest.h" |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 89 swipe_down_(false), | 89 swipe_down_(false), |
| 90 scroll_x_(0), | 90 scroll_x_(0), |
| 91 scroll_y_(0), | 91 scroll_y_(0), |
| 92 scroll_velocity_x_(0), | 92 scroll_velocity_x_(0), |
| 93 scroll_velocity_y_(0), | 93 scroll_velocity_y_(0), |
| 94 velocity_x_(0), | 94 velocity_x_(0), |
| 95 velocity_y_(0), | 95 velocity_y_(0), |
| 96 scroll_x_hint_(0), | 96 scroll_x_hint_(0), |
| 97 scroll_y_hint_(0), | 97 scroll_y_hint_(0), |
| 98 tap_count_(0), | 98 tap_count_(0), |
| 99 wait_until_event_(ui::ET_UNKNOWN) { | 99 flags_(0), |
| 100 } | 100 wait_until_event_(ui::ET_UNKNOWN) {} |
| 101 | 101 |
| 102 virtual ~GestureEventConsumeDelegate() {} | 102 virtual ~GestureEventConsumeDelegate() {} |
| 103 | 103 |
| 104 void Reset() { | 104 void Reset() { |
| 105 events_.clear(); | 105 events_.clear(); |
| 106 tap_ = false; | 106 tap_ = false; |
| 107 tap_down_ = false; | 107 tap_down_ = false; |
| 108 tap_cancel_ = false; | 108 tap_cancel_ = false; |
| 109 begin_ = false; | 109 begin_ = false; |
| 110 end_ = false; | 110 end_ = false; |
| (...skipping 19 matching lines...) Expand all Loading... |
| 130 scroll_x_ = 0; | 130 scroll_x_ = 0; |
| 131 scroll_y_ = 0; | 131 scroll_y_ = 0; |
| 132 scroll_velocity_x_ = 0; | 132 scroll_velocity_x_ = 0; |
| 133 scroll_velocity_y_ = 0; | 133 scroll_velocity_y_ = 0; |
| 134 velocity_x_ = 0; | 134 velocity_x_ = 0; |
| 135 velocity_y_ = 0; | 135 velocity_y_ = 0; |
| 136 scroll_x_hint_ = 0; | 136 scroll_x_hint_ = 0; |
| 137 scroll_y_hint_ = 0; | 137 scroll_y_hint_ = 0; |
| 138 tap_count_ = 0; | 138 tap_count_ = 0; |
| 139 scale_ = 0; | 139 scale_ = 0; |
| 140 flags_ = 0; |
| 140 } | 141 } |
| 141 | 142 |
| 142 const std::vector<ui::EventType>& events() const { return events_; }; | 143 const std::vector<ui::EventType>& events() const { return events_; }; |
| 143 | 144 |
| 144 bool tap() const { return tap_; } | 145 bool tap() const { return tap_; } |
| 145 bool tap_down() const { return tap_down_; } | 146 bool tap_down() const { return tap_down_; } |
| 146 bool tap_cancel() const { return tap_cancel_; } | 147 bool tap_cancel() const { return tap_cancel_; } |
| 147 bool begin() const { return begin_; } | 148 bool begin() const { return begin_; } |
| 148 bool end() const { return end_; } | 149 bool end() const { return end_; } |
| 149 bool scroll_begin() const { return scroll_begin_; } | 150 bool scroll_begin() const { return scroll_begin_; } |
| (...skipping 28 matching lines...) Expand all Loading... |
| 178 float scroll_y() const { return scroll_y_; } | 179 float scroll_y() const { return scroll_y_; } |
| 179 float scroll_velocity_x() const { return scroll_velocity_x_; } | 180 float scroll_velocity_x() const { return scroll_velocity_x_; } |
| 180 float scroll_velocity_y() const { return scroll_velocity_y_; } | 181 float scroll_velocity_y() const { return scroll_velocity_y_; } |
| 181 float velocity_x() const { return velocity_x_; } | 182 float velocity_x() const { return velocity_x_; } |
| 182 float velocity_y() const { return velocity_y_; } | 183 float velocity_y() const { return velocity_y_; } |
| 183 float scroll_x_hint() const { return scroll_x_hint_; } | 184 float scroll_x_hint() const { return scroll_x_hint_; } |
| 184 float scroll_y_hint() const { return scroll_y_hint_; } | 185 float scroll_y_hint() const { return scroll_y_hint_; } |
| 185 float scale() const { return scale_; } | 186 float scale() const { return scale_; } |
| 186 const gfx::Rect& bounding_box() const { return bounding_box_; } | 187 const gfx::Rect& bounding_box() const { return bounding_box_; } |
| 187 int tap_count() const { return tap_count_; } | 188 int tap_count() const { return tap_count_; } |
| 189 int flags() const { return flags_; } |
| 188 | 190 |
| 189 void WaitUntilReceivedGesture(ui::EventType type) { | 191 void WaitUntilReceivedGesture(ui::EventType type) { |
| 190 wait_until_event_ = type; | 192 wait_until_event_ = type; |
| 191 run_loop_.reset(new base::RunLoop()); | 193 run_loop_.reset(new base::RunLoop()); |
| 192 run_loop_->Run(); | 194 run_loop_->Run(); |
| 193 } | 195 } |
| 194 | 196 |
| 195 virtual void OnGestureEvent(ui::GestureEvent* gesture) OVERRIDE { | 197 virtual void OnGestureEvent(ui::GestureEvent* gesture) OVERRIDE { |
| 196 events_.push_back(gesture->type()); | 198 events_.push_back(gesture->type()); |
| 197 bounding_box_ = gesture->details().bounding_box(); | 199 bounding_box_ = gesture->details().bounding_box(); |
| 200 flags_ = gesture->flags(); |
| 198 switch (gesture->type()) { | 201 switch (gesture->type()) { |
| 199 case ui::ET_GESTURE_TAP: | 202 case ui::ET_GESTURE_TAP: |
| 200 tap_location_ = gesture->location(); | 203 tap_location_ = gesture->location(); |
| 201 tap_count_ = gesture->details().tap_count(); | 204 tap_count_ = gesture->details().tap_count(); |
| 202 tap_ = true; | 205 tap_ = true; |
| 203 break; | 206 break; |
| 204 case ui::ET_GESTURE_TAP_DOWN: | 207 case ui::ET_GESTURE_TAP_DOWN: |
| 205 tap_down_ = true; | 208 tap_down_ = true; |
| 206 break; | 209 break; |
| 207 case ui::ET_GESTURE_TAP_CANCEL: | 210 case ui::ET_GESTURE_TAP_CANCEL: |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 258 break; | 261 break; |
| 259 case ui::ET_GESTURE_SHOW_PRESS: | 262 case ui::ET_GESTURE_SHOW_PRESS: |
| 260 show_press_ = true; | 263 show_press_ = true; |
| 261 break; | 264 break; |
| 262 case ui::ET_GESTURE_MULTIFINGER_SWIPE: | 265 case ui::ET_GESTURE_MULTIFINGER_SWIPE: |
| 263 swipe_left_ = gesture->details().swipe_left(); | 266 swipe_left_ = gesture->details().swipe_left(); |
| 264 swipe_right_ = gesture->details().swipe_right(); | 267 swipe_right_ = gesture->details().swipe_right(); |
| 265 swipe_up_ = gesture->details().swipe_up(); | 268 swipe_up_ = gesture->details().swipe_up(); |
| 266 swipe_down_ = gesture->details().swipe_down(); | 269 swipe_down_ = gesture->details().swipe_down(); |
| 267 break; | 270 break; |
| 271 case ui::ET_SCROLL_FLING_CANCEL: |
| 272 // Only used in unified gesture detection. |
| 273 break; |
| 268 default: | 274 default: |
| 269 NOTREACHED(); | 275 NOTREACHED(); |
| 270 } | 276 } |
| 271 if (wait_until_event_ == gesture->type() && run_loop_) { | 277 if (wait_until_event_ == gesture->type() && run_loop_) { |
| 272 run_loop_->Quit(); | 278 run_loop_->Quit(); |
| 273 wait_until_event_ = ui::ET_UNKNOWN; | 279 wait_until_event_ = ui::ET_UNKNOWN; |
| 274 } | 280 } |
| 275 gesture->StopPropagation(); | 281 gesture->StopPropagation(); |
| 276 } | 282 } |
| 277 | 283 |
| (...skipping 30 matching lines...) Expand all Loading... |
| 308 float scroll_y_; | 314 float scroll_y_; |
| 309 float scroll_velocity_x_; | 315 float scroll_velocity_x_; |
| 310 float scroll_velocity_y_; | 316 float scroll_velocity_y_; |
| 311 float velocity_x_; | 317 float velocity_x_; |
| 312 float velocity_y_; | 318 float velocity_y_; |
| 313 float scroll_x_hint_; | 319 float scroll_x_hint_; |
| 314 float scroll_y_hint_; | 320 float scroll_y_hint_; |
| 315 float scale_; | 321 float scale_; |
| 316 gfx::Rect bounding_box_; | 322 gfx::Rect bounding_box_; |
| 317 int tap_count_; | 323 int tap_count_; |
| 324 int flags_; |
| 318 | 325 |
| 319 ui::EventType wait_until_event_; | 326 ui::EventType wait_until_event_; |
| 320 | 327 |
| 321 DISALLOW_COPY_AND_ASSIGN(GestureEventConsumeDelegate); | 328 DISALLOW_COPY_AND_ASSIGN(GestureEventConsumeDelegate); |
| 322 }; | 329 }; |
| 323 | 330 |
| 324 class QueueTouchEventDelegate : public GestureEventConsumeDelegate { | 331 class QueueTouchEventDelegate : public GestureEventConsumeDelegate { |
| 325 public: | 332 public: |
| 326 explicit QueueTouchEventDelegate(WindowEventDispatcher* dispatcher) | 333 explicit QueueTouchEventDelegate(WindowEventDispatcher* dispatcher) |
| 327 : window_(NULL), | 334 : window_(NULL), |
| (...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 521 scoped_ptr<ui::GestureRecognizer> new_gr_; | 528 scoped_ptr<ui::GestureRecognizer> new_gr_; |
| 522 | 529 |
| 523 DISALLOW_COPY_AND_ASSIGN(ScopedGestureRecognizerSetter); | 530 DISALLOW_COPY_AND_ASSIGN(ScopedGestureRecognizerSetter); |
| 524 }; | 531 }; |
| 525 | 532 |
| 526 class TimedEvents { | 533 class TimedEvents { |
| 527 private: | 534 private: |
| 528 int simulated_now_; | 535 int simulated_now_; |
| 529 | 536 |
| 530 public: | 537 public: |
| 531 TimedEvents() : simulated_now_(0) { | 538 // Use a non-zero start time to pass DCHECKs which ensure events have had a |
| 539 // time assigned. |
| 540 TimedEvents() : simulated_now_(1) { |
| 532 } | 541 } |
| 533 | 542 |
| 534 base::TimeDelta Now() { | 543 base::TimeDelta Now() { |
| 535 base::TimeDelta t = base::TimeDelta::FromMilliseconds(simulated_now_); | 544 base::TimeDelta t = base::TimeDelta::FromMilliseconds(simulated_now_); |
| 536 simulated_now_++; | 545 simulated_now_++; |
| 537 return t; | 546 return t; |
| 538 } | 547 } |
| 539 | 548 |
| 540 base::TimeDelta LeapForward(int time_in_millis) { | 549 base::TimeDelta LeapForward(int time_in_millis) { |
| 541 simulated_now_ += time_in_millis; | 550 simulated_now_ += time_in_millis; |
| (...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 659 target->RemovePreTargetHandler(this); | 668 target->RemovePreTargetHandler(this); |
| 660 target->parent()->RemoveChild(target); | 669 target->parent()->RemoveChild(target); |
| 661 } | 670 } |
| 662 } | 671 } |
| 663 | 672 |
| 664 DISALLOW_COPY_AND_ASSIGN(RemoveOnTouchCancelHandler); | 673 DISALLOW_COPY_AND_ASSIGN(RemoveOnTouchCancelHandler); |
| 665 }; | 674 }; |
| 666 | 675 |
| 667 } // namespace | 676 } // namespace |
| 668 | 677 |
| 669 class GestureRecognizerTest : public AuraTestBase { | 678 class GestureRecognizerTest : public AuraTestBase, |
| 679 public ::testing::WithParamInterface<bool> { |
| 670 public: | 680 public: |
| 671 GestureRecognizerTest() {} | 681 GestureRecognizerTest() {} |
| 672 | 682 |
| 683 bool UsingUnifiedGR() { |
| 684 return GetParam(); |
| 685 } |
| 686 |
| 673 virtual void SetUp() OVERRIDE { | 687 virtual void SetUp() OVERRIDE { |
| 674 CommandLine::ForCurrentProcess()->AppendSwitch( | 688 // TODO(tdresser): Once unified GR has landed, only run these tests once. |
| 675 switches::kEnableScrollPrediction); | 689 if (UsingUnifiedGR()) { |
| 690 // TODO(tdresser): use unified GR once it's available. |
| 691 // CommandLine::ForCurrentProcess()->AppendSwitch( |
| 692 // switches::kUseUnifiedGestureDetector); |
| 693 } |
| 694 |
| 676 AuraTestBase::SetUp(); | 695 AuraTestBase::SetUp(); |
| 677 } | 696 } |
| 678 | 697 |
| 679 DISALLOW_COPY_AND_ASSIGN(GestureRecognizerTest); | 698 DISALLOW_COPY_AND_ASSIGN(GestureRecognizerTest); |
| 680 }; | 699 }; |
| 681 | 700 |
| 682 // Check that appropriate touch events generate tap gesture events. | 701 // Check that appropriate touch events generate tap gesture events. |
| 683 TEST_F(GestureRecognizerTest, GestureEventTap) { | 702 TEST_P(GestureRecognizerTest, GestureEventTap) { |
| 684 scoped_ptr<GestureEventConsumeDelegate> delegate( | 703 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 685 new GestureEventConsumeDelegate()); | 704 new GestureEventConsumeDelegate()); |
| 686 TimedEvents tes; | 705 TimedEvents tes; |
| 687 const int kWindowWidth = 123; | 706 const int kWindowWidth = 123; |
| 688 const int kWindowHeight = 45; | 707 const int kWindowHeight = 45; |
| 689 const int kTouchId = 2; | 708 const int kTouchId = 2; |
| 690 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); | 709 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); |
| 691 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 710 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 692 delegate.get(), -1234, bounds, root_window())); | 711 delegate.get(), -1234, bounds, root_window())); |
| 693 | 712 |
| (...skipping 30 matching lines...) Expand all Loading... |
| 724 EXPECT_TRUE(delegate->end()); | 743 EXPECT_TRUE(delegate->end()); |
| 725 EXPECT_FALSE(delegate->scroll_begin()); | 744 EXPECT_FALSE(delegate->scroll_begin()); |
| 726 EXPECT_FALSE(delegate->scroll_update()); | 745 EXPECT_FALSE(delegate->scroll_update()); |
| 727 EXPECT_FALSE(delegate->scroll_end()); | 746 EXPECT_FALSE(delegate->scroll_end()); |
| 728 | 747 |
| 729 EXPECT_EQ(1, delegate->tap_count()); | 748 EXPECT_EQ(1, delegate->tap_count()); |
| 730 } | 749 } |
| 731 | 750 |
| 732 // Check that appropriate touch events generate tap gesture events | 751 // Check that appropriate touch events generate tap gesture events |
| 733 // when information about the touch radii are provided. | 752 // when information about the touch radii are provided. |
| 734 TEST_F(GestureRecognizerTest, GestureEventTapRegion) { | 753 TEST_P(GestureRecognizerTest, GestureEventTapRegion) { |
| 735 scoped_ptr<GestureEventConsumeDelegate> delegate( | 754 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 736 new GestureEventConsumeDelegate()); | 755 new GestureEventConsumeDelegate()); |
| 737 TimedEvents tes; | 756 TimedEvents tes; |
| 738 const int kWindowWidth = 800; | 757 const int kWindowWidth = 800; |
| 739 const int kWindowHeight = 600; | 758 const int kWindowHeight = 600; |
| 740 const int kTouchId = 2; | 759 const int kTouchId = 2; |
| 741 gfx::Rect bounds(0, 0, kWindowWidth, kWindowHeight); | 760 gfx::Rect bounds(0, 0, kWindowWidth, kWindowHeight); |
| 742 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 761 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 743 delegate.get(), -1234, bounds, root_window())); | 762 delegate.get(), -1234, bounds, root_window())); |
| 744 | 763 |
| (...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 964 EXPECT_EQ(1, delegate->tap_count()); | 983 EXPECT_EQ(1, delegate->tap_count()); |
| 965 gfx::Point actual_point(delegate->tap_location()); | 984 gfx::Point actual_point(delegate->tap_location()); |
| 966 EXPECT_EQ(33, delegate->bounding_box().width()); | 985 EXPECT_EQ(33, delegate->bounding_box().width()); |
| 967 EXPECT_EQ(32, delegate->bounding_box().height()); | 986 EXPECT_EQ(32, delegate->bounding_box().height()); |
| 968 EXPECT_EQ(397, actual_point.x()); | 987 EXPECT_EQ(397, actual_point.x()); |
| 969 EXPECT_EQ(149, actual_point.y()); | 988 EXPECT_EQ(149, actual_point.y()); |
| 970 } | 989 } |
| 971 } | 990 } |
| 972 | 991 |
| 973 // Check that appropriate touch events generate scroll gesture events. | 992 // Check that appropriate touch events generate scroll gesture events. |
| 974 TEST_F(GestureRecognizerTest, GestureEventScroll) { | 993 TEST_P(GestureRecognizerTest, GestureEventScroll) { |
| 975 // We'll start by moving the touch point by (10.5, 10.5). We want 5 dips of | 994 // We'll start by moving the touch point by (10.5, 10.5). We want 5 dips of |
| 976 // that distance to be consumed by the slop, so we set the slop radius to | 995 // that distance to be consumed by the slop, so we set the slop radius to |
| 977 // sqrt(5 * 5 + 5 * 5). | 996 // sqrt(5 * 5 + 5 * 5). |
| 978 ui::GestureConfiguration::set_max_touch_move_in_pixels_for_click( | 997 ui::GestureConfiguration::set_max_touch_move_in_pixels_for_click( |
| 979 sqrt(static_cast<double>(5 * 5 + 5 * 5))); | 998 sqrt(static_cast<double>(5 * 5 + 5 * 5))); |
| 980 scoped_ptr<GestureEventConsumeDelegate> delegate( | 999 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 981 new GestureEventConsumeDelegate()); | 1000 new GestureEventConsumeDelegate()); |
| 982 TimedEvents tes; | 1001 TimedEvents tes; |
| 983 const int kWindowWidth = 123; | 1002 const int kWindowWidth = 123; |
| 984 const int kWindowHeight = 45; | 1003 const int kWindowHeight = 45; |
| (...skipping 23 matching lines...) Expand all Loading... |
| 1008 // The slop consumed 5 dips | 1027 // The slop consumed 5 dips |
| 1009 EXPECT_FLOAT_EQ(5.5, delegate->scroll_x()); | 1028 EXPECT_FLOAT_EQ(5.5, delegate->scroll_x()); |
| 1010 EXPECT_FLOAT_EQ(5.5, delegate->scroll_y()); | 1029 EXPECT_FLOAT_EQ(5.5, delegate->scroll_y()); |
| 1011 EXPECT_EQ(gfx::Point(1, 1).ToString(), | 1030 EXPECT_EQ(gfx::Point(1, 1).ToString(), |
| 1012 delegate->scroll_begin_position().ToString()); | 1031 delegate->scroll_begin_position().ToString()); |
| 1013 | 1032 |
| 1014 // When scrolling with a single finger, the bounding box of the gesture should | 1033 // When scrolling with a single finger, the bounding box of the gesture should |
| 1015 // be empty, since it's a single point and the radius for testing is zero. | 1034 // be empty, since it's a single point and the radius for testing is zero. |
| 1016 EXPECT_TRUE(delegate->bounding_box().IsEmpty()); | 1035 EXPECT_TRUE(delegate->bounding_box().IsEmpty()); |
| 1017 | 1036 |
| 1018 // Move some more to generate a few more scroll updates. | 1037 // Move some more to generate a few more scroll updates. Make sure that we get |
| 1019 tes.SendScrollEvent(event_processor(), 91, 192, kTouchId, delegate.get()); | 1038 // out of the snap channel for the unified GR. |
| 1039 tes.SendScrollEvent(event_processor(), 20, 120, kTouchId, delegate.get()); |
| 1020 EXPECT_1_EVENT(delegate->events(), ui::ET_GESTURE_SCROLL_UPDATE); | 1040 EXPECT_1_EVENT(delegate->events(), ui::ET_GESTURE_SCROLL_UPDATE); |
| 1021 EXPECT_FLOAT_EQ(-20.5, delegate->scroll_x()); | 1041 EXPECT_FLOAT_EQ(-91.5, delegate->scroll_x()); |
| 1022 EXPECT_FLOAT_EQ(-19.5, delegate->scroll_y()); | 1042 EXPECT_FLOAT_EQ(-91.5, delegate->scroll_y()); |
| 1023 EXPECT_TRUE(delegate->bounding_box().IsEmpty()); | 1043 EXPECT_TRUE(delegate->bounding_box().IsEmpty()); |
| 1024 | 1044 |
| 1025 tes.SendScrollEvent(event_processor(), 121, 196, kTouchId, delegate.get()); | 1045 tes.SendScrollEvent(event_processor(), 50, 124, kTouchId, delegate.get()); |
| 1026 EXPECT_1_EVENT(delegate->events(), ui::ET_GESTURE_SCROLL_UPDATE); | 1046 EXPECT_1_EVENT(delegate->events(), ui::ET_GESTURE_SCROLL_UPDATE); |
| 1027 EXPECT_EQ(30, delegate->scroll_x()); | 1047 EXPECT_EQ(30, delegate->scroll_x()); |
| 1028 EXPECT_EQ(4, delegate->scroll_y()); | 1048 EXPECT_EQ(4, delegate->scroll_y()); |
| 1029 EXPECT_TRUE(delegate->bounding_box().IsEmpty()); | 1049 EXPECT_TRUE(delegate->bounding_box().IsEmpty()); |
| 1030 | 1050 |
| 1031 // Release the touch. This should end the scroll. | 1051 // Release the touch. This should end the scroll. |
| 1032 delegate->Reset(); | 1052 delegate->Reset(); |
| 1033 ui::TouchEvent release(ui::ET_TOUCH_RELEASED, gfx::Point(101, 201), | 1053 ui::TouchEvent release(ui::ET_TOUCH_RELEASED, gfx::Point(101, 201), |
| 1034 kTouchId, | 1054 kTouchId, |
| 1035 tes.LeapForward(50)); | 1055 tes.LeapForward(50)); |
| 1036 DispatchEventUsingWindowDispatcher(&release); | 1056 DispatchEventUsingWindowDispatcher(&release); |
| 1037 EXPECT_2_EVENTS(delegate->events(), | 1057 EXPECT_2_EVENTS(delegate->events(), |
| 1038 ui::ET_SCROLL_FLING_START, | 1058 ui::ET_SCROLL_FLING_START, |
| 1039 ui::ET_GESTURE_END); | 1059 ui::ET_GESTURE_END); |
| 1040 EXPECT_TRUE(delegate->bounding_box().IsEmpty()); | 1060 EXPECT_TRUE(delegate->bounding_box().IsEmpty()); |
| 1041 } | 1061 } |
| 1042 | 1062 |
| 1043 // Check that predicted scroll update positions are correct. | 1063 // Check that predicted scroll update positions are correct. |
| 1044 TEST_F(GestureRecognizerTest, GestureEventScrollPrediction) { | 1064 TEST_P(GestureRecognizerTest, GestureEventScrollPrediction) { |
| 1045 const double prediction_interval = 0.03; | 1065 const double prediction_interval = 0.03; |
| 1046 ui::GestureConfiguration::set_scroll_prediction_seconds(prediction_interval); | 1066 ui::GestureConfiguration::set_scroll_prediction_seconds(prediction_interval); |
| 1047 // We'll start by moving the touch point by (5, 5). We want all of that | 1067 // We'll start by moving the touch point by (5, 5). We want all of that |
| 1048 // distance to be consumed by the slop, so we set the slop radius to | 1068 // distance to be consumed by the slop, so we set the slop radius to |
| 1049 // sqrt(5 * 5 + 5 * 5). | 1069 // sqrt(5 * 5 + 5 * 5). |
| 1050 ui::GestureConfiguration::set_max_touch_move_in_pixels_for_click( | 1070 ui::GestureConfiguration::set_max_touch_move_in_pixels_for_click( |
| 1051 sqrt(static_cast<double>(5 * 5 + 5 * 5))); | 1071 sqrt(static_cast<double>(5 * 5 + 5 * 5))); |
| 1052 | 1072 |
| 1053 scoped_ptr<GestureEventConsumeDelegate> delegate( | 1073 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 1054 new GestureEventConsumeDelegate()); | 1074 new GestureEventConsumeDelegate()); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 1066 gfx::Vector2dF total_scroll; | 1086 gfx::Vector2dF total_scroll; |
| 1067 ui::TouchEvent press(ui::ET_TOUCH_PRESSED, gfx::Point(96, 196), | 1087 ui::TouchEvent press(ui::ET_TOUCH_PRESSED, gfx::Point(96, 196), |
| 1068 kTouchId, tes.Now()); | 1088 kTouchId, tes.Now()); |
| 1069 DispatchEventUsingWindowDispatcher(&press); | 1089 DispatchEventUsingWindowDispatcher(&press); |
| 1070 EXPECT_2_EVENTS(delegate->events(), | 1090 EXPECT_2_EVENTS(delegate->events(), |
| 1071 ui::ET_GESTURE_BEGIN, | 1091 ui::ET_GESTURE_BEGIN, |
| 1072 ui::ET_GESTURE_TAP_DOWN); | 1092 ui::ET_GESTURE_TAP_DOWN); |
| 1073 delegate->Reset(); | 1093 delegate->Reset(); |
| 1074 | 1094 |
| 1075 // Get rid of touch slop. | 1095 // Get rid of touch slop. |
| 1076 ui::TouchEvent move(ui::ET_TOUCH_MOVED, gfx::Point(101, 201), | 1096 ui::TouchEvent move(ui::ET_TOUCH_MOVED, gfx::Point(111, 211), |
| 1077 kTouchId, tes.Now()); | 1097 kTouchId, tes.Now()); |
| 1078 DispatchEventUsingWindowDispatcher(&move); | 1098 DispatchEventUsingWindowDispatcher(&move); |
| 1079 EXPECT_3_EVENTS(delegate->events(), | 1099 EXPECT_3_EVENTS(delegate->events(), |
| 1080 ui::ET_GESTURE_TAP_CANCEL, | 1100 ui::ET_GESTURE_TAP_CANCEL, |
| 1081 ui::ET_GESTURE_SCROLL_BEGIN, | 1101 ui::ET_GESTURE_SCROLL_BEGIN, |
| 1082 ui::ET_GESTURE_SCROLL_UPDATE); | 1102 ui::ET_GESTURE_SCROLL_UPDATE); |
| 1083 total_scroll.set_x(total_scroll.x() + delegate->scroll_x()); | 1103 total_scroll.set_x(total_scroll.x() + delegate->scroll_x()); |
| 1084 total_scroll.set_y(total_scroll.y() + delegate->scroll_y()); | 1104 total_scroll.set_y(total_scroll.y() + delegate->scroll_y()); |
| 1085 | 1105 |
| 1086 // Move the touch-point enough so that it is considered as a scroll. This | 1106 // Move the touch-point enough so that it is considered as a scroll. This |
| (...skipping 22 matching lines...) Expand all Loading... |
| 1109 | 1129 |
| 1110 // Release the touch. This should end the scroll. | 1130 // Release the touch. This should end the scroll. |
| 1111 delegate->Reset(); | 1131 delegate->Reset(); |
| 1112 ui::TouchEvent release(ui::ET_TOUCH_RELEASED, gfx::Point(101, 201), | 1132 ui::TouchEvent release(ui::ET_TOUCH_RELEASED, gfx::Point(101, 201), |
| 1113 kTouchId, | 1133 kTouchId, |
| 1114 tes.LeapForward(50)); | 1134 tes.LeapForward(50)); |
| 1115 DispatchEventUsingWindowDispatcher(&release); | 1135 DispatchEventUsingWindowDispatcher(&release); |
| 1116 } | 1136 } |
| 1117 | 1137 |
| 1118 // Check that the bounding box during a scroll event is correct. | 1138 // Check that the bounding box during a scroll event is correct. |
| 1119 TEST_F(GestureRecognizerTest, GestureEventScrollBoundingBox) { | 1139 TEST_P(GestureRecognizerTest, GestureEventScrollBoundingBox) { |
| 1120 TimedEvents tes; | 1140 TimedEvents tes; |
| 1121 for (int radius = 1; radius <= 10; ++radius) { | 1141 for (int radius = 1; radius <= 10; ++radius) { |
| 1122 ui::GestureConfiguration::set_default_radius(radius); | 1142 ui::GestureConfiguration::set_default_radius(radius); |
| 1123 scoped_ptr<GestureEventConsumeDelegate> delegate( | 1143 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 1124 new GestureEventConsumeDelegate()); | 1144 new GestureEventConsumeDelegate()); |
| 1125 const int kWindowWidth = 123; | 1145 const int kWindowWidth = 123; |
| 1126 const int kWindowHeight = 45; | 1146 const int kWindowHeight = 45; |
| 1127 const int kTouchId = 5; | 1147 const int kTouchId = 5; |
| 1128 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); | 1148 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); |
| 1129 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 1149 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1166 kPositionY + kScrollAmount - radius, | 1186 kPositionY + kScrollAmount - radius, |
| 1167 radius * 2, | 1187 radius * 2, |
| 1168 radius * 2).ToString(), | 1188 radius * 2).ToString(), |
| 1169 delegate->bounding_box().ToString()); | 1189 delegate->bounding_box().ToString()); |
| 1170 } | 1190 } |
| 1171 ui::GestureConfiguration::set_default_radius(0); | 1191 ui::GestureConfiguration::set_default_radius(0); |
| 1172 } | 1192 } |
| 1173 | 1193 |
| 1174 // Check Scroll End Events report correct velocities | 1194 // Check Scroll End Events report correct velocities |
| 1175 // if the user was on a horizontal rail | 1195 // if the user was on a horizontal rail |
| 1176 TEST_F(GestureRecognizerTest, GestureEventHorizontalRailFling) { | 1196 TEST_P(GestureRecognizerTest, GestureEventHorizontalRailFling) { |
| 1177 scoped_ptr<GestureEventConsumeDelegate> delegate( | 1197 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 1178 new GestureEventConsumeDelegate()); | 1198 new GestureEventConsumeDelegate()); |
| 1179 TimedEvents tes; | 1199 TimedEvents tes; |
| 1180 const int kTouchId = 7; | 1200 const int kTouchId = 7; |
| 1181 gfx::Rect bounds(0, 0, 1000, 1000); | 1201 gfx::Rect bounds(0, 0, 1000, 1000); |
| 1182 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 1202 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 1183 delegate.get(), -1234, bounds, root_window())); | 1203 delegate.get(), -1234, bounds, root_window())); |
| 1184 | 1204 |
| 1185 ui::TouchEvent press(ui::ET_TOUCH_PRESSED, gfx::Point(0, 0), | 1205 ui::TouchEvent press(ui::ET_TOUCH_PRESSED, gfx::Point(0, 0), |
| 1186 kTouchId, tes.Now()); | 1206 kTouchId, tes.Now()); |
| 1187 DispatchEventUsingWindowDispatcher(&press); | 1207 DispatchEventUsingWindowDispatcher(&press); |
| 1188 | 1208 |
| 1189 // Get rid of touch slop. | 1209 // Get rid of touch slop. |
| 1190 ui::TouchEvent move(ui::ET_TOUCH_MOVED, gfx::Point(5, 0), | 1210 ui::TouchEvent move(ui::ET_TOUCH_MOVED, gfx::Point(10, 0), |
| 1191 kTouchId, tes.Now()); | 1211 kTouchId, tes.Now()); |
| 1192 DispatchEventUsingWindowDispatcher(&move); | 1212 DispatchEventUsingWindowDispatcher(&move); |
| 1193 delegate->Reset(); | 1213 delegate->Reset(); |
| 1194 | 1214 |
| 1195 | 1215 |
| 1196 // Move the touch-point horizontally enough that it is considered a | 1216 // Move the touch-point horizontally enough that it is considered a |
| 1197 // horizontal scroll. | 1217 // horizontal scroll. |
| 1198 tes.SendScrollEvent(event_processor(), 25, 1, kTouchId, delegate.get()); | 1218 tes.SendScrollEvent(event_processor(), 30, 1, kTouchId, delegate.get()); |
| 1199 EXPECT_EQ(0, delegate->scroll_y()); | 1219 EXPECT_FLOAT_EQ(0, delegate->scroll_y()); |
| 1200 EXPECT_EQ(20, delegate->scroll_x()); | 1220 EXPECT_FLOAT_EQ(20, delegate->scroll_x()); |
| 1201 | 1221 |
| 1202 // Get a high x velocity, while still staying on the rail | 1222 // Get a high x velocity, while still staying on the rail |
| 1203 tes.SendScrollEvents(event_processor(), 1, 1, | 1223 tes.SendScrollEvents(event_processor(), 1, 1, |
| 1204 100, 10, kTouchId, 1, | 1224 100, 10, kTouchId, 1, |
| 1205 ui::GestureConfiguration::points_buffered_for_velocity(), | 1225 ui::GestureConfiguration::points_buffered_for_velocity(), |
| 1206 delegate.get()); | 1226 delegate.get()); |
| 1207 | 1227 |
| 1208 delegate->Reset(); | 1228 delegate->Reset(); |
| 1209 ui::TouchEvent release(ui::ET_TOUCH_RELEASED, gfx::Point(101, 201), | 1229 ui::TouchEvent release(ui::ET_TOUCH_RELEASED, gfx::Point(101, 201), |
| 1210 kTouchId, tes.Now()); | 1230 kTouchId, tes.Now()); |
| 1211 DispatchEventUsingWindowDispatcher(&release); | 1231 DispatchEventUsingWindowDispatcher(&release); |
| 1212 | 1232 |
| 1213 EXPECT_TRUE(delegate->fling()); | 1233 EXPECT_TRUE(delegate->fling()); |
| 1214 EXPECT_FALSE(delegate->scroll_end()); | 1234 EXPECT_FALSE(delegate->scroll_end()); |
| 1215 EXPECT_GT(delegate->velocity_x(), 0); | 1235 EXPECT_GT(delegate->velocity_x(), 0); |
| 1216 EXPECT_EQ(0, delegate->velocity_y()); | 1236 EXPECT_EQ(0, delegate->velocity_y()); |
| 1217 } | 1237 } |
| 1218 | 1238 |
| 1219 // Check Scroll End Events report correct velocities | 1239 // Check Scroll End Events report correct velocities |
| 1220 // if the user was on a vertical rail | 1240 // if the user was on a vertical rail |
| 1221 TEST_F(GestureRecognizerTest, GestureEventVerticalRailFling) { | 1241 TEST_P(GestureRecognizerTest, GestureEventVerticalRailFling) { |
| 1222 scoped_ptr<GestureEventConsumeDelegate> delegate( | 1242 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 1223 new GestureEventConsumeDelegate()); | 1243 new GestureEventConsumeDelegate()); |
| 1224 TimedEvents tes; | 1244 TimedEvents tes; |
| 1225 const int kTouchId = 7; | 1245 const int kTouchId = 7; |
| 1226 gfx::Rect bounds(0, 0, 1000, 1000); | 1246 gfx::Rect bounds(0, 0, 1000, 1000); |
| 1227 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 1247 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 1228 delegate.get(), -1234, bounds, root_window())); | 1248 delegate.get(), -1234, bounds, root_window())); |
| 1229 | 1249 |
| 1230 ui::TouchEvent press(ui::ET_TOUCH_PRESSED, gfx::Point(0, 0), | 1250 ui::TouchEvent press(ui::ET_TOUCH_PRESSED, gfx::Point(0, 0), |
| 1231 kTouchId, tes.Now()); | 1251 kTouchId, tes.Now()); |
| 1232 DispatchEventUsingWindowDispatcher(&press); | 1252 DispatchEventUsingWindowDispatcher(&press); |
| 1233 | 1253 |
| 1234 // Get rid of touch slop. | 1254 // Get rid of touch slop. |
| 1235 ui::TouchEvent move(ui::ET_TOUCH_MOVED, gfx::Point(0, 5), | 1255 ui::TouchEvent move(ui::ET_TOUCH_MOVED, gfx::Point(0, 10), |
| 1236 kTouchId, tes.Now()); | 1256 kTouchId, tes.Now()); |
| 1237 DispatchEventUsingWindowDispatcher(&move); | 1257 DispatchEventUsingWindowDispatcher(&move); |
| 1238 delegate->Reset(); | 1258 delegate->Reset(); |
| 1239 | 1259 |
| 1240 // Move the touch-point vertically enough that it is considered a | 1260 // Move the touch-point vertically enough that it is considered a |
| 1241 // vertical scroll. | 1261 // vertical scroll. |
| 1242 tes.SendScrollEvent(event_processor(), 1, 25, kTouchId, delegate.get()); | 1262 tes.SendScrollEvent(event_processor(), 1, 30, kTouchId, delegate.get()); |
| 1243 EXPECT_EQ(20, delegate->scroll_y()); | 1263 EXPECT_EQ(20, delegate->scroll_y()); |
| 1244 EXPECT_EQ(0, delegate->scroll_x()); | 1264 EXPECT_EQ(0, delegate->scroll_x()); |
| 1245 EXPECT_EQ(0, delegate->scroll_velocity_x()); | 1265 EXPECT_EQ(0, delegate->scroll_velocity_x()); |
| 1246 | 1266 |
| 1247 // Get a high y velocity, while still staying on the rail | 1267 // Get a high y velocity, while still staying on the rail |
| 1248 tes.SendScrollEvents(event_processor(), 1, 6, | 1268 tes.SendScrollEvents(event_processor(), 1, 6, |
| 1249 10, 100, kTouchId, 1, | 1269 10, 100, kTouchId, 1, |
| 1250 ui::GestureConfiguration::points_buffered_for_velocity(), | 1270 ui::GestureConfiguration::points_buffered_for_velocity(), |
| 1251 delegate.get()); | 1271 delegate.get()); |
| 1252 EXPECT_EQ(0, delegate->scroll_velocity_x()); | 1272 EXPECT_EQ(0, delegate->scroll_velocity_x()); |
| 1253 | 1273 |
| 1254 delegate->Reset(); | 1274 delegate->Reset(); |
| 1255 ui::TouchEvent release(ui::ET_TOUCH_RELEASED, gfx::Point(101, 206), | 1275 ui::TouchEvent release(ui::ET_TOUCH_RELEASED, gfx::Point(101, 206), |
| 1256 kTouchId, tes.Now()); | 1276 kTouchId, tes.Now()); |
| 1257 DispatchEventUsingWindowDispatcher(&release); | 1277 DispatchEventUsingWindowDispatcher(&release); |
| 1258 | 1278 |
| 1259 EXPECT_TRUE(delegate->fling()); | 1279 EXPECT_TRUE(delegate->fling()); |
| 1260 EXPECT_FALSE(delegate->scroll_end()); | 1280 EXPECT_FALSE(delegate->scroll_end()); |
| 1261 EXPECT_EQ(0, delegate->velocity_x()); | 1281 EXPECT_EQ(0, delegate->velocity_x()); |
| 1262 EXPECT_GT(delegate->velocity_y(), 0); | 1282 EXPECT_GT(delegate->velocity_y(), 0); |
| 1263 } | 1283 } |
| 1264 | 1284 |
| 1265 // Check Scroll End Events reports zero velocities | 1285 // Check Scroll End Events report non-zero velocities if the user is not on a |
| 1266 // if the user is not on a rail | 1286 // rail |
| 1267 TEST_F(GestureRecognizerTest, GestureEventNonRailFling) { | 1287 TEST_P(GestureRecognizerTest, GestureEventNonRailFling) { |
| 1268 ui::GestureConfiguration::set_max_touch_move_in_pixels_for_click(0); | 1288 ui::GestureConfiguration::set_max_touch_move_in_pixels_for_click(0); |
| 1269 scoped_ptr<GestureEventConsumeDelegate> delegate( | 1289 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 1270 new GestureEventConsumeDelegate()); | 1290 new GestureEventConsumeDelegate()); |
| 1271 TimedEvents tes; | 1291 TimedEvents tes; |
| 1272 const int kTouchId = 7; | 1292 const int kTouchId = 7; |
| 1273 gfx::Rect bounds(0, 0, 1000, 1000); | 1293 gfx::Rect bounds(0, 0, 1000, 1000); |
| 1274 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 1294 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 1275 delegate.get(), -1234, bounds, root_window())); | 1295 delegate.get(), -1234, bounds, root_window())); |
| 1276 | 1296 |
| 1277 ui::TouchEvent press(ui::ET_TOUCH_PRESSED, gfx::Point(0, 0), | 1297 ui::TouchEvent press(ui::ET_TOUCH_PRESSED, gfx::Point(0, 0), |
| 1278 kTouchId, tes.Now()); | 1298 kTouchId, tes.Now()); |
| 1279 DispatchEventUsingWindowDispatcher(&press); | 1299 DispatchEventUsingWindowDispatcher(&press); |
| 1280 | 1300 |
| 1281 // Move the touch-point such that a non-rail scroll begins | 1301 // Move the touch-point such that a non-rail scroll begins, and we're outside |
| 1282 tes.SendScrollEvent(event_processor(), 20, 20, kTouchId, delegate.get()); | 1302 // the snap channel for the unified GR. |
| 1283 EXPECT_EQ(20, delegate->scroll_y()); | 1303 tes.SendScrollEvent(event_processor(), 50, 50, kTouchId, delegate.get()); |
| 1284 EXPECT_EQ(20, delegate->scroll_x()); | 1304 EXPECT_EQ(50, delegate->scroll_y()); |
| 1305 EXPECT_EQ(50, delegate->scroll_x()); |
| 1285 | 1306 |
| 1286 tes.SendScrollEvents(event_processor(), 1, 1, | 1307 tes.SendScrollEvents(event_processor(), 1, 1, |
| 1287 10, 100, kTouchId, 1, | 1308 10, 100, kTouchId, 1, |
| 1288 ui::GestureConfiguration::points_buffered_for_velocity(), | 1309 ui::GestureConfiguration::points_buffered_for_velocity(), |
| 1289 delegate.get()); | 1310 delegate.get()); |
| 1290 | 1311 |
| 1291 delegate->Reset(); | 1312 delegate->Reset(); |
| 1292 ui::TouchEvent release(ui::ET_TOUCH_RELEASED, gfx::Point(101, 201), | 1313 ui::TouchEvent release(ui::ET_TOUCH_RELEASED, gfx::Point(101, 201), |
| 1293 kTouchId, tes.Now()); | 1314 kTouchId, tes.Now()); |
| 1294 DispatchEventUsingWindowDispatcher(&release); | 1315 DispatchEventUsingWindowDispatcher(&release); |
| 1295 | 1316 |
| 1296 EXPECT_TRUE(delegate->fling()); | 1317 EXPECT_TRUE(delegate->fling()); |
| 1297 EXPECT_FALSE(delegate->scroll_end()); | 1318 EXPECT_FALSE(delegate->scroll_end()); |
| 1298 EXPECT_GT(delegate->velocity_x(), 0); | 1319 EXPECT_GT(delegate->velocity_x(), 0); |
| 1299 EXPECT_GT(delegate->velocity_y(), 0); | 1320 EXPECT_GT(delegate->velocity_y(), 0); |
| 1300 } | 1321 } |
| 1301 | 1322 |
| 1302 // Check that appropriate touch events generate long press events | 1323 // Check that appropriate touch events generate long press events |
| 1303 TEST_F(GestureRecognizerTest, GestureEventLongPress) { | 1324 TEST_P(GestureRecognizerTest, GestureEventLongPress) { |
| 1304 scoped_ptr<GestureEventConsumeDelegate> delegate( | 1325 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 1305 new GestureEventConsumeDelegate()); | 1326 new GestureEventConsumeDelegate()); |
| 1306 TimedEvents tes; | |
| 1307 const int kWindowWidth = 123; | 1327 const int kWindowWidth = 123; |
| 1308 const int kWindowHeight = 45; | 1328 const int kWindowHeight = 45; |
| 1309 const int kTouchId = 2; | 1329 const int kTouchId = 2; |
| 1310 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); | 1330 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); |
| 1311 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 1331 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 1312 delegate.get(), -1234, bounds, root_window())); | 1332 delegate.get(), -1234, bounds, root_window())); |
| 1313 | 1333 |
| 1314 delegate->Reset(); | 1334 delegate->Reset(); |
| 1315 | 1335 |
| 1316 TimerTestGestureRecognizer* gesture_recognizer = | 1336 TimerTestGestureRecognizer* gesture_recognizer = |
| 1317 new TimerTestGestureRecognizer(); | 1337 new TimerTestGestureRecognizer(); |
| 1318 | 1338 |
| 1319 ScopedGestureRecognizerSetter gr_setter(gesture_recognizer); | 1339 ScopedGestureRecognizerSetter gr_setter(gesture_recognizer); |
| 1320 | 1340 |
| 1321 ui::TouchEvent press1(ui::ET_TOUCH_PRESSED, gfx::Point(101, 201), | 1341 ui::TouchEvent press1(ui::ET_TOUCH_PRESSED, |
| 1322 kTouchId, tes.Now()); | 1342 gfx::Point(101, 201), |
| 1343 kTouchId, |
| 1344 ui::EventTimeForNow()); |
| 1323 DispatchEventUsingWindowDispatcher(&press1); | 1345 DispatchEventUsingWindowDispatcher(&press1); |
| 1324 EXPECT_TRUE(delegate->tap_down()); | 1346 EXPECT_TRUE(delegate->tap_down()); |
| 1325 EXPECT_TRUE(delegate->begin()); | 1347 EXPECT_TRUE(delegate->begin()); |
| 1326 EXPECT_FALSE(delegate->tap_cancel()); | 1348 EXPECT_FALSE(delegate->tap_cancel()); |
| 1327 | 1349 |
| 1328 // We haven't pressed long enough for a long press to occur | 1350 // We haven't pressed long enough for a long press to occur |
| 1329 EXPECT_FALSE(delegate->long_press()); | 1351 EXPECT_FALSE(delegate->long_press()); |
| 1330 | 1352 |
| 1331 // Wait until the timer runs out | 1353 // Wait until the timer runs out |
| 1332 delegate->WaitUntilReceivedGesture(ui::ET_GESTURE_LONG_PRESS); | 1354 delegate->WaitUntilReceivedGesture(ui::ET_GESTURE_LONG_PRESS); |
| 1333 EXPECT_TRUE(delegate->long_press()); | 1355 EXPECT_TRUE(delegate->long_press()); |
| 1334 EXPECT_FALSE(delegate->tap_cancel()); | 1356 EXPECT_FALSE(delegate->tap_cancel()); |
| 1335 | 1357 |
| 1336 delegate->Reset(); | 1358 delegate->Reset(); |
| 1337 ui::TouchEvent release1(ui::ET_TOUCH_RELEASED, gfx::Point(101, 201), | 1359 ui::TouchEvent release1(ui::ET_TOUCH_RELEASED, |
| 1338 kTouchId, tes.Now()); | 1360 gfx::Point(101, 201), |
| 1361 kTouchId, |
| 1362 ui::EventTimeForNow()); |
| 1339 DispatchEventUsingWindowDispatcher(&release1); | 1363 DispatchEventUsingWindowDispatcher(&release1); |
| 1340 EXPECT_FALSE(delegate->long_press()); | 1364 EXPECT_FALSE(delegate->long_press()); |
| 1341 | 1365 |
| 1342 // Note the tap down isn't cancelled until the release | 1366 // Note the tap cancel isn't dispatched until the release |
| 1343 EXPECT_TRUE(delegate->tap_cancel()); | 1367 EXPECT_TRUE(delegate->tap_cancel()); |
| 1368 EXPECT_FALSE(delegate->tap()); |
| 1344 } | 1369 } |
| 1345 | 1370 |
| 1346 // Check that scrolling cancels a long press | 1371 // Check that scrolling cancels a long press |
| 1347 TEST_F(GestureRecognizerTest, GestureEventLongPressCancelledByScroll) { | 1372 TEST_P(GestureRecognizerTest, GestureEventLongPressCancelledByScroll) { |
| 1348 scoped_ptr<GestureEventConsumeDelegate> delegate( | 1373 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 1349 new GestureEventConsumeDelegate()); | 1374 new GestureEventConsumeDelegate()); |
| 1350 TimedEvents tes; | 1375 TimedEvents tes; |
| 1351 ui::GestureConfiguration::set_long_press_time_in_seconds(.01); | 1376 ui::GestureConfiguration::set_long_press_time_in_seconds(.01); |
| 1352 const int kWindowWidth = 123; | 1377 const int kWindowWidth = 123; |
| 1353 const int kWindowHeight = 45; | 1378 const int kWindowHeight = 45; |
| 1354 const int kTouchId = 6; | 1379 const int kTouchId = 6; |
| 1355 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); | 1380 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); |
| 1356 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 1381 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 1357 delegate.get(), -1234, bounds, root_window())); | 1382 delegate.get(), -1234, bounds, root_window())); |
| (...skipping 26 matching lines...) Expand all Loading... |
| 1384 | 1409 |
| 1385 delegate->Reset(); | 1410 delegate->Reset(); |
| 1386 ui::TouchEvent release1(ui::ET_TOUCH_RELEASED, gfx::Point(101, 201), | 1411 ui::TouchEvent release1(ui::ET_TOUCH_RELEASED, gfx::Point(101, 201), |
| 1387 kTouchId, tes.LeapForward(10)); | 1412 kTouchId, tes.LeapForward(10)); |
| 1388 DispatchEventUsingWindowDispatcher(&release1); | 1413 DispatchEventUsingWindowDispatcher(&release1); |
| 1389 EXPECT_FALSE(delegate->long_press()); | 1414 EXPECT_FALSE(delegate->long_press()); |
| 1390 EXPECT_FALSE(delegate->tap_cancel()); | 1415 EXPECT_FALSE(delegate->tap_cancel()); |
| 1391 } | 1416 } |
| 1392 | 1417 |
| 1393 // Check that appropriate touch events generate long tap events | 1418 // Check that appropriate touch events generate long tap events |
| 1394 TEST_F(GestureRecognizerTest, GestureEventLongTap) { | 1419 TEST_P(GestureRecognizerTest, GestureEventLongTap) { |
| 1395 scoped_ptr<GestureEventConsumeDelegate> delegate( | 1420 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 1396 new GestureEventConsumeDelegate()); | 1421 new GestureEventConsumeDelegate()); |
| 1397 TimedEvents tes; | |
| 1398 const int kWindowWidth = 123; | 1422 const int kWindowWidth = 123; |
| 1399 const int kWindowHeight = 45; | 1423 const int kWindowHeight = 45; |
| 1400 const int kTouchId = 2; | 1424 const int kTouchId = 2; |
| 1401 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); | 1425 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); |
| 1402 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 1426 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 1403 delegate.get(), -1234, bounds, root_window())); | 1427 delegate.get(), -1234, bounds, root_window())); |
| 1404 | 1428 |
| 1405 delegate->Reset(); | 1429 delegate->Reset(); |
| 1406 | 1430 |
| 1407 TimerTestGestureRecognizer* gesture_recognizer = | 1431 TimerTestGestureRecognizer* gesture_recognizer = |
| 1408 new TimerTestGestureRecognizer(); | 1432 new TimerTestGestureRecognizer(); |
| 1409 | 1433 |
| 1410 ScopedGestureRecognizerSetter gr_setter(gesture_recognizer); | 1434 ScopedGestureRecognizerSetter gr_setter(gesture_recognizer); |
| 1411 | 1435 |
| 1412 ui::TouchEvent press1(ui::ET_TOUCH_PRESSED, gfx::Point(101, 201), | 1436 ui::TouchEvent press1(ui::ET_TOUCH_PRESSED, |
| 1413 kTouchId, tes.Now()); | 1437 gfx::Point(101, 201), |
| 1438 kTouchId, |
| 1439 ui::EventTimeForNow()); |
| 1414 DispatchEventUsingWindowDispatcher(&press1); | 1440 DispatchEventUsingWindowDispatcher(&press1); |
| 1415 EXPECT_TRUE(delegate->tap_down()); | 1441 EXPECT_TRUE(delegate->tap_down()); |
| 1416 EXPECT_TRUE(delegate->begin()); | 1442 EXPECT_TRUE(delegate->begin()); |
| 1417 EXPECT_FALSE(delegate->tap_cancel()); | 1443 EXPECT_FALSE(delegate->tap_cancel()); |
| 1418 | 1444 |
| 1419 // We haven't pressed long enough for a long press to occur | 1445 // We haven't pressed long enough for a long press to occur |
| 1420 EXPECT_FALSE(delegate->long_press()); | 1446 EXPECT_FALSE(delegate->long_press()); |
| 1421 | 1447 |
| 1422 // Wait until the timer runs out | 1448 // Wait until the timer runs out |
| 1423 delegate->WaitUntilReceivedGesture(ui::ET_GESTURE_LONG_PRESS); | 1449 delegate->WaitUntilReceivedGesture(ui::ET_GESTURE_LONG_PRESS); |
| 1424 EXPECT_TRUE(delegate->long_press()); | 1450 EXPECT_TRUE(delegate->long_press()); |
| 1425 EXPECT_FALSE(delegate->tap_cancel()); | 1451 EXPECT_FALSE(delegate->tap_cancel()); |
| 1426 | 1452 |
| 1427 delegate->Reset(); | 1453 delegate->Reset(); |
| 1428 ui::TouchEvent release1(ui::ET_TOUCH_RELEASED, gfx::Point(101, 201), | 1454 ui::TouchEvent release1(ui::ET_TOUCH_RELEASED, |
| 1429 kTouchId, tes.Now()); | 1455 gfx::Point(101, 201), |
| 1456 kTouchId, |
| 1457 ui::EventTimeForNow()); |
| 1430 DispatchEventUsingWindowDispatcher(&release1); | 1458 DispatchEventUsingWindowDispatcher(&release1); |
| 1431 EXPECT_FALSE(delegate->long_press()); | 1459 EXPECT_FALSE(delegate->long_press()); |
| 1432 EXPECT_TRUE(delegate->long_tap()); | 1460 EXPECT_TRUE(delegate->long_tap()); |
| 1433 | 1461 |
| 1434 // Note the tap down isn't cancelled until the release | 1462 // Note the tap cancel isn't dispatched until the release |
| 1435 EXPECT_TRUE(delegate->tap_cancel()); | 1463 EXPECT_TRUE(delegate->tap_cancel()); |
| 1464 EXPECT_FALSE(delegate->tap()); |
| 1436 } | 1465 } |
| 1437 | 1466 |
| 1438 // Check that second tap cancels a long press | 1467 // Check that second tap cancels a long press |
| 1439 TEST_F(GestureRecognizerTest, GestureEventLongPressCancelledBySecondTap) { | 1468 TEST_P(GestureRecognizerTest, GestureEventLongPressCancelledBySecondTap) { |
| 1469 // TODO(tdresser): enable this test with unified GR once two finger tap is |
| 1470 // supported. See crbug.com/354396. |
| 1471 if (UsingUnifiedGR()) |
| 1472 return; |
| 1473 |
| 1440 scoped_ptr<GestureEventConsumeDelegate> delegate( | 1474 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 1441 new GestureEventConsumeDelegate()); | 1475 new GestureEventConsumeDelegate()); |
| 1442 TimedEvents tes; | 1476 TimedEvents tes; |
| 1443 ui::GestureConfiguration::set_long_press_time_in_seconds(.01); | 1477 ui::GestureConfiguration::set_long_press_time_in_seconds(.01); |
| 1444 const int kWindowWidth = 300; | 1478 const int kWindowWidth = 300; |
| 1445 const int kWindowHeight = 400; | 1479 const int kWindowHeight = 400; |
| 1446 const int kTouchId1 = 8; | 1480 const int kTouchId1 = 8; |
| 1447 const int kTouchId2 = 2; | 1481 const int kTouchId2 = 2; |
| 1448 gfx::Rect bounds(5, 5, kWindowWidth, kWindowHeight); | 1482 gfx::Rect bounds(5, 5, kWindowWidth, kWindowHeight); |
| 1449 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 1483 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1486 ui::TouchEvent release1(ui::ET_TOUCH_RELEASED, gfx::Point(101, 201), | 1520 ui::TouchEvent release1(ui::ET_TOUCH_RELEASED, gfx::Point(101, 201), |
| 1487 kTouchId1, tes.Now()); | 1521 kTouchId1, tes.Now()); |
| 1488 DispatchEventUsingWindowDispatcher(&release1); | 1522 DispatchEventUsingWindowDispatcher(&release1); |
| 1489 EXPECT_FALSE(delegate->long_press()); | 1523 EXPECT_FALSE(delegate->long_press()); |
| 1490 EXPECT_TRUE(delegate->two_finger_tap()); | 1524 EXPECT_TRUE(delegate->two_finger_tap()); |
| 1491 EXPECT_FALSE(delegate->tap_cancel()); | 1525 EXPECT_FALSE(delegate->tap_cancel()); |
| 1492 } | 1526 } |
| 1493 | 1527 |
| 1494 // Check that horizontal scroll gestures cause scrolls on horizontal rails. | 1528 // Check that horizontal scroll gestures cause scrolls on horizontal rails. |
| 1495 // Also tests that horizontal rails can be broken. | 1529 // Also tests that horizontal rails can be broken. |
| 1496 TEST_F(GestureRecognizerTest, GestureEventHorizontalRailScroll) { | 1530 TEST_P(GestureRecognizerTest, GestureEventHorizontalRailScroll) { |
| 1497 scoped_ptr<GestureEventConsumeDelegate> delegate( | 1531 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 1498 new GestureEventConsumeDelegate()); | 1532 new GestureEventConsumeDelegate()); |
| 1499 TimedEvents tes; | 1533 TimedEvents tes; |
| 1500 const int kTouchId = 7; | 1534 const int kTouchId = 7; |
| 1501 gfx::Rect bounds(0, 0, 1000, 1000); | 1535 gfx::Rect bounds(0, 0, 1000, 1000); |
| 1502 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 1536 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 1503 delegate.get(), -1234, bounds, root_window())); | 1537 delegate.get(), -1234, bounds, root_window())); |
| 1504 | 1538 |
| 1505 ui::TouchEvent press(ui::ET_TOUCH_PRESSED, gfx::Point(0, 0), | 1539 ui::TouchEvent press(ui::ET_TOUCH_PRESSED, gfx::Point(0, 0), |
| 1506 kTouchId, tes.Now()); | 1540 kTouchId, tes.Now()); |
| 1507 DispatchEventUsingWindowDispatcher(&press); | 1541 DispatchEventUsingWindowDispatcher(&press); |
| 1508 | 1542 |
| 1509 // Get rid of touch slop. | 1543 // Get rid of touch slop. |
| 1510 ui::TouchEvent move(ui::ET_TOUCH_MOVED, gfx::Point(5, 0), | 1544 ui::TouchEvent move(ui::ET_TOUCH_MOVED, gfx::Point(5, 0), |
| 1511 kTouchId, tes.Now()); | 1545 kTouchId, tes.Now()); |
| 1512 | 1546 |
| 1513 DispatchEventUsingWindowDispatcher(&move); | 1547 DispatchEventUsingWindowDispatcher(&move); |
| 1514 delegate->Reset(); | 1548 delegate->Reset(); |
| 1515 | 1549 |
| 1516 // Move the touch-point horizontally enough that it is considered a | 1550 // Move the touch-point horizontally enough that it is considered a |
| 1517 // horizontal scroll. | 1551 // horizontal scroll. |
| 1518 tes.SendScrollEvent(event_processor(), 25, 1, kTouchId, delegate.get()); | 1552 tes.SendScrollEvent(event_processor(), 25, 0, kTouchId, delegate.get()); |
| 1519 EXPECT_EQ(0, delegate->scroll_y()); | 1553 EXPECT_EQ(0, delegate->scroll_y()); |
| 1520 EXPECT_EQ(20, delegate->scroll_x()); | 1554 EXPECT_EQ(20, delegate->scroll_x()); |
| 1521 | 1555 |
| 1522 tes.SendScrollEvent(event_processor(), 30, 6, kTouchId, delegate.get()); | 1556 tes.SendScrollEvent(event_processor(), 30, 6, kTouchId, delegate.get()); |
| 1523 EXPECT_TRUE(delegate->scroll_update()); | 1557 EXPECT_TRUE(delegate->scroll_update()); |
| 1524 EXPECT_EQ(5, delegate->scroll_x()); | 1558 EXPECT_EQ(5, delegate->scroll_x()); |
| 1525 // y shouldn't change, as we're on a horizontal rail. | 1559 // y shouldn't change, as we're on a horizontal rail. |
| 1526 EXPECT_EQ(0, delegate->scroll_y()); | 1560 EXPECT_EQ(0, delegate->scroll_y()); |
| 1527 | 1561 |
| 1528 // Send enough information that a velocity can be calculated for the gesture, | 1562 // Send enough information that a velocity can be calculated for the gesture, |
| 1529 // and we can break the rail | 1563 // and we can break the rail |
| 1530 tes.SendScrollEvents(event_processor(), 1, 1, | 1564 tes.SendScrollEvents(event_processor(), 1, 1, |
| 1531 6, 100, kTouchId, 1, | 1565 6, 100, kTouchId, 1, |
| 1532 ui::GestureConfiguration::points_buffered_for_velocity(), | 1566 ui::GestureConfiguration::points_buffered_for_velocity(), |
| 1533 delegate.get()); | 1567 delegate.get()); |
| 1534 | 1568 |
| 1535 tes.SendScrollEvent(event_processor(), 5, 0, kTouchId, delegate.get()); | 1569 tes.SendScrollEvent(event_processor(), 5, 0, kTouchId, delegate.get()); |
| 1536 tes.SendScrollEvent(event_processor(), 10, 5, kTouchId, delegate.get()); | 1570 tes.SendScrollEvent(event_processor(), 10, 5, kTouchId, delegate.get()); |
| 1537 | 1571 |
| 1538 // The rail should be broken | 1572 // The rail should be broken |
| 1539 EXPECT_TRUE(delegate->scroll_update()); | 1573 EXPECT_TRUE(delegate->scroll_update()); |
| 1540 EXPECT_EQ(5, delegate->scroll_x()); | 1574 EXPECT_EQ(5, delegate->scroll_x()); |
| 1541 EXPECT_EQ(5, delegate->scroll_y()); | 1575 EXPECT_EQ(5, delegate->scroll_y()); |
| 1542 } | 1576 } |
| 1543 | 1577 |
| 1544 // Check that vertical scroll gestures cause scrolls on vertical rails. | 1578 // Check that vertical scroll gestures cause scrolls on vertical rails. |
| 1545 // Also tests that vertical rails can be broken. | 1579 // Also tests that vertical rails can be broken. |
| 1546 TEST_F(GestureRecognizerTest, GestureEventVerticalRailScroll) { | 1580 TEST_P(GestureRecognizerTest, GestureEventVerticalRailScroll) { |
| 1547 scoped_ptr<GestureEventConsumeDelegate> delegate( | 1581 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 1548 new GestureEventConsumeDelegate()); | 1582 new GestureEventConsumeDelegate()); |
| 1549 TimedEvents tes; | 1583 TimedEvents tes; |
| 1550 const int kTouchId = 7; | 1584 const int kTouchId = 7; |
| 1551 gfx::Rect bounds(0, 0, 1000, 1000); | 1585 gfx::Rect bounds(0, 0, 1000, 1000); |
| 1552 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 1586 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 1553 delegate.get(), -1234, bounds, root_window())); | 1587 delegate.get(), -1234, bounds, root_window())); |
| 1554 | 1588 |
| 1555 ui::TouchEvent press(ui::ET_TOUCH_PRESSED, gfx::Point(0, 0), | 1589 ui::TouchEvent press(ui::ET_TOUCH_PRESSED, gfx::Point(0, 0), |
| 1556 kTouchId, tes.Now()); | 1590 kTouchId, tes.Now()); |
| 1557 DispatchEventUsingWindowDispatcher(&press); | 1591 DispatchEventUsingWindowDispatcher(&press); |
| 1558 | 1592 |
| 1559 // Get rid of touch slop. | 1593 // Get rid of touch slop. |
| 1560 ui::TouchEvent move(ui::ET_TOUCH_MOVED, gfx::Point(0, 5), | 1594 ui::TouchEvent move(ui::ET_TOUCH_MOVED, gfx::Point(0, 5), |
| 1561 kTouchId, tes.Now()); | 1595 kTouchId, tes.Now()); |
| 1562 DispatchEventUsingWindowDispatcher(&move); | 1596 DispatchEventUsingWindowDispatcher(&move); |
| 1563 delegate->Reset(); | 1597 delegate->Reset(); |
| 1564 | 1598 |
| 1565 // Move the touch-point vertically enough that it is considered a | 1599 // Move the touch-point vertically enough that it is considered a |
| 1566 // vertical scroll. | 1600 // vertical scroll. |
| 1567 tes.SendScrollEvent(event_processor(), 1, 25, kTouchId, delegate.get()); | 1601 tes.SendScrollEvent(event_processor(), 0, 25, kTouchId, delegate.get()); |
| 1568 EXPECT_EQ(0, delegate->scroll_x()); | 1602 EXPECT_EQ(0, delegate->scroll_x()); |
| 1569 EXPECT_EQ(20, delegate->scroll_y()); | 1603 EXPECT_EQ(20, delegate->scroll_y()); |
| 1570 | 1604 |
| 1571 tes.SendScrollEvent(event_processor(), 6, 30, kTouchId, delegate.get()); | 1605 tes.SendScrollEvent(event_processor(), 6, 30, kTouchId, delegate.get()); |
| 1572 EXPECT_TRUE(delegate->scroll_update()); | 1606 EXPECT_TRUE(delegate->scroll_update()); |
| 1573 EXPECT_EQ(5, delegate->scroll_y()); | 1607 EXPECT_EQ(5, delegate->scroll_y()); |
| 1574 // x shouldn't change, as we're on a vertical rail. | 1608 // x shouldn't change, as we're on a vertical rail. |
| 1575 EXPECT_EQ(0, delegate->scroll_x()); | 1609 EXPECT_EQ(0, delegate->scroll_x()); |
| 1576 EXPECT_EQ(0, delegate->scroll_velocity_x()); | 1610 EXPECT_EQ(0, delegate->scroll_velocity_x()); |
| 1577 | 1611 |
| 1578 // Send enough information that a velocity can be calculated for the gesture, | 1612 // Send enough information that a velocity can be calculated for the gesture, |
| 1579 // and we can break the rail | 1613 // and we can break the rail |
| 1580 tes.SendScrollEvents(event_processor(), 1, 6, | 1614 tes.SendScrollEvents(event_processor(), 1, 6, |
| 1581 100, 1, kTouchId, 1, | 1615 100, 1, kTouchId, 1, |
| 1582 ui::GestureConfiguration::points_buffered_for_velocity(), | 1616 ui::GestureConfiguration::points_buffered_for_velocity(), |
| 1583 delegate.get()); | 1617 delegate.get()); |
| 1584 | 1618 |
| 1585 tes.SendScrollEvent(event_processor(), 0, 5, kTouchId, delegate.get()); | 1619 tes.SendScrollEvent(event_processor(), 0, 5, kTouchId, delegate.get()); |
| 1586 tes.SendScrollEvent(event_processor(), 5, 10, kTouchId, delegate.get()); | 1620 tes.SendScrollEvent(event_processor(), 5, 10, kTouchId, delegate.get()); |
| 1587 | 1621 |
| 1588 // The rail should be broken | 1622 // The rail should be broken |
| 1589 EXPECT_TRUE(delegate->scroll_update()); | 1623 EXPECT_TRUE(delegate->scroll_update()); |
| 1590 EXPECT_EQ(5, delegate->scroll_x()); | 1624 EXPECT_EQ(5, delegate->scroll_x()); |
| 1591 EXPECT_EQ(5, delegate->scroll_y()); | 1625 EXPECT_EQ(5, delegate->scroll_y()); |
| 1592 } | 1626 } |
| 1593 | 1627 |
| 1594 TEST_F(GestureRecognizerTest, GestureTapFollowedByScroll) { | 1628 TEST_P(GestureRecognizerTest, GestureTapFollowedByScroll) { |
| 1595 // We'll start by moving the touch point by (5, 5). We want all of that | 1629 // We'll start by moving the touch point by (5, 5). We want all of that |
| 1596 // distance to be consumed by the slop, so we set the slop radius to | 1630 // distance to be consumed by the slop, so we set the slop radius to |
| 1597 // sqrt(5 * 5 + 5 * 5). | 1631 // sqrt(5 * 5 + 5 * 5). |
| 1598 ui::GestureConfiguration::set_max_touch_move_in_pixels_for_click( | 1632 ui::GestureConfiguration::set_max_touch_move_in_pixels_for_click( |
| 1599 sqrt(static_cast<double>(5 * 5 + 5 * 5))); | 1633 sqrt(static_cast<double>(5 * 5 + 5 * 5))); |
| 1600 | 1634 |
| 1601 // First, tap. Then, do a scroll using the same touch-id. | 1635 // First, tap. Then, do a scroll using the same touch-id. |
| 1602 scoped_ptr<GestureEventConsumeDelegate> delegate( | 1636 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 1603 new GestureEventConsumeDelegate()); | 1637 new GestureEventConsumeDelegate()); |
| 1604 TimedEvents tes; | 1638 TimedEvents tes; |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1640 kTouchId, tes.LeapForward(1000)); | 1674 kTouchId, tes.LeapForward(1000)); |
| 1641 DispatchEventUsingWindowDispatcher(&press1); | 1675 DispatchEventUsingWindowDispatcher(&press1); |
| 1642 EXPECT_FALSE(delegate->tap()); | 1676 EXPECT_FALSE(delegate->tap()); |
| 1643 EXPECT_TRUE(delegate->tap_down()); | 1677 EXPECT_TRUE(delegate->tap_down()); |
| 1644 EXPECT_FALSE(delegate->tap_cancel()); | 1678 EXPECT_FALSE(delegate->tap_cancel()); |
| 1645 EXPECT_FALSE(delegate->scroll_begin()); | 1679 EXPECT_FALSE(delegate->scroll_begin()); |
| 1646 EXPECT_FALSE(delegate->scroll_update()); | 1680 EXPECT_FALSE(delegate->scroll_update()); |
| 1647 EXPECT_FALSE(delegate->scroll_end()); | 1681 EXPECT_FALSE(delegate->scroll_end()); |
| 1648 | 1682 |
| 1649 // Get rid of touch slop. | 1683 // Get rid of touch slop. |
| 1650 ui::TouchEvent move_remove_slop(ui::ET_TOUCH_MOVED, gfx::Point(106, 206), | 1684 ui::TouchEvent move_remove_slop(ui::ET_TOUCH_MOVED, gfx::Point(116, 216), |
| 1651 kTouchId, tes.Now()); | 1685 kTouchId, tes.Now()); |
| 1652 DispatchEventUsingWindowDispatcher(&move_remove_slop); | 1686 DispatchEventUsingWindowDispatcher(&move_remove_slop); |
| 1653 EXPECT_TRUE(delegate->tap_cancel()); | 1687 EXPECT_TRUE(delegate->tap_cancel()); |
| 1654 EXPECT_TRUE(delegate->scroll_begin()); | 1688 EXPECT_TRUE(delegate->scroll_begin()); |
| 1655 EXPECT_FALSE(delegate->scroll_update()); | 1689 EXPECT_TRUE(delegate->scroll_update()); |
| 1656 EXPECT_EQ(5, delegate->scroll_x_hint()); | 1690 EXPECT_EQ(15, delegate->scroll_x_hint()); |
| 1657 EXPECT_EQ(5, delegate->scroll_y_hint()); | 1691 EXPECT_EQ(15, delegate->scroll_y_hint()); |
| 1658 | 1692 |
| 1659 delegate->Reset(); | 1693 delegate->Reset(); |
| 1660 | 1694 |
| 1661 // Move the touch-point enough so that it is considered as a scroll. This | 1695 // Move the touch-point enough so that it is considered as a scroll. This |
| 1662 // should generate both SCROLL_BEGIN and SCROLL_UPDATE gestures. | 1696 // should generate both SCROLL_BEGIN and SCROLL_UPDATE gestures. |
| 1663 // The first movement is diagonal, to ensure that we have a free scroll, | 1697 // The first movement is diagonal, to ensure that we have a free scroll, |
| 1664 // and not a rail scroll. | 1698 // and not a rail scroll. |
| 1665 delegate->Reset(); | 1699 delegate->Reset(); |
| 1666 ui::TouchEvent move(ui::ET_TOUCH_MOVED, gfx::Point(135, 235), | 1700 ui::TouchEvent move(ui::ET_TOUCH_MOVED, gfx::Point(135, 235), |
| 1667 kTouchId, tes.Now()); | 1701 kTouchId, tes.Now()); |
| 1668 DispatchEventUsingWindowDispatcher(&move); | 1702 DispatchEventUsingWindowDispatcher(&move); |
| 1669 EXPECT_FALSE(delegate->tap()); | 1703 EXPECT_FALSE(delegate->tap()); |
| 1670 EXPECT_FALSE(delegate->tap_down()); | 1704 EXPECT_FALSE(delegate->tap_down()); |
| 1671 EXPECT_FALSE(delegate->tap_cancel()); | 1705 EXPECT_FALSE(delegate->tap_cancel()); |
| 1672 EXPECT_FALSE(delegate->scroll_begin()); | 1706 EXPECT_FALSE(delegate->scroll_begin()); |
| 1673 EXPECT_TRUE(delegate->scroll_update()); | 1707 EXPECT_TRUE(delegate->scroll_update()); |
| 1674 EXPECT_FALSE(delegate->scroll_end()); | 1708 EXPECT_FALSE(delegate->scroll_end()); |
| 1675 EXPECT_EQ(29, delegate->scroll_x()); | 1709 EXPECT_EQ(19, delegate->scroll_x()); |
| 1676 EXPECT_EQ(29, delegate->scroll_y()); | 1710 EXPECT_EQ(19, delegate->scroll_y()); |
| 1677 | 1711 |
| 1678 // Move some more to generate a few more scroll updates. | 1712 // Move some more to generate a few more scroll updates. |
| 1679 delegate->Reset(); | 1713 delegate->Reset(); |
| 1680 ui::TouchEvent move1(ui::ET_TOUCH_MOVED, gfx::Point(115, 216), | 1714 ui::TouchEvent move1(ui::ET_TOUCH_MOVED, gfx::Point(115, 216), |
| 1681 kTouchId, tes.Now()); | 1715 kTouchId, tes.Now()); |
| 1682 DispatchEventUsingWindowDispatcher(&move1); | 1716 DispatchEventUsingWindowDispatcher(&move1); |
| 1683 EXPECT_FALSE(delegate->tap()); | 1717 EXPECT_FALSE(delegate->tap()); |
| 1684 EXPECT_FALSE(delegate->tap_down()); | 1718 EXPECT_FALSE(delegate->tap_down()); |
| 1685 EXPECT_FALSE(delegate->tap_cancel()); | 1719 EXPECT_FALSE(delegate->tap_cancel()); |
| 1686 EXPECT_FALSE(delegate->scroll_begin()); | 1720 EXPECT_FALSE(delegate->scroll_begin()); |
| (...skipping 24 matching lines...) Expand all Loading... |
| 1711 DispatchEventUsingWindowDispatcher(&release1); | 1745 DispatchEventUsingWindowDispatcher(&release1); |
| 1712 EXPECT_FALSE(delegate->tap()); | 1746 EXPECT_FALSE(delegate->tap()); |
| 1713 EXPECT_FALSE(delegate->tap_down()); | 1747 EXPECT_FALSE(delegate->tap_down()); |
| 1714 EXPECT_FALSE(delegate->tap_cancel()); | 1748 EXPECT_FALSE(delegate->tap_cancel()); |
| 1715 EXPECT_FALSE(delegate->scroll_begin()); | 1749 EXPECT_FALSE(delegate->scroll_begin()); |
| 1716 EXPECT_FALSE(delegate->scroll_update()); | 1750 EXPECT_FALSE(delegate->scroll_update()); |
| 1717 EXPECT_FALSE(delegate->scroll_end()); | 1751 EXPECT_FALSE(delegate->scroll_end()); |
| 1718 EXPECT_TRUE(delegate->fling()); | 1752 EXPECT_TRUE(delegate->fling()); |
| 1719 } | 1753 } |
| 1720 | 1754 |
| 1721 TEST_F(GestureRecognizerTest, AsynchronousGestureRecognition) { | 1755 TEST_P(GestureRecognizerTest, AsynchronousGestureRecognition) { |
| 1756 // TODO(tdresser): enable this test with unified GR once two finger tap is |
| 1757 // supported. See crbug.com/354396. |
| 1758 if (UsingUnifiedGR()) |
| 1759 return; |
| 1722 scoped_ptr<QueueTouchEventDelegate> queued_delegate( | 1760 scoped_ptr<QueueTouchEventDelegate> queued_delegate( |
| 1723 new QueueTouchEventDelegate(host()->dispatcher())); | 1761 new QueueTouchEventDelegate(host()->dispatcher())); |
| 1724 const int kWindowWidth = 123; | 1762 const int kWindowWidth = 123; |
| 1725 const int kWindowHeight = 45; | 1763 const int kWindowHeight = 45; |
| 1726 const int kTouchId1 = 6; | 1764 const int kTouchId1 = 6; |
| 1727 const int kTouchId2 = 4; | 1765 const int kTouchId2 = 4; |
| 1728 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); | 1766 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); |
| 1729 scoped_ptr<aura::Window> queue(CreateTestWindowWithDelegate( | 1767 scoped_ptr<aura::Window> queue(CreateTestWindowWithDelegate( |
| 1730 queued_delegate.get(), -1234, bounds, root_window())); | 1768 queued_delegate.get(), -1234, bounds, root_window())); |
| 1731 | 1769 |
| (...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1903 EXPECT_FALSE(queued_delegate->end()); | 1941 EXPECT_FALSE(queued_delegate->end()); |
| 1904 EXPECT_TRUE(queued_delegate->scroll_begin()); | 1942 EXPECT_TRUE(queued_delegate->scroll_begin()); |
| 1905 EXPECT_FALSE(queued_delegate->scroll_update()); | 1943 EXPECT_FALSE(queued_delegate->scroll_update()); |
| 1906 EXPECT_FALSE(queued_delegate->scroll_end()); | 1944 EXPECT_FALSE(queued_delegate->scroll_end()); |
| 1907 EXPECT_TRUE(queued_delegate->pinch_begin()); | 1945 EXPECT_TRUE(queued_delegate->pinch_begin()); |
| 1908 EXPECT_FALSE(queued_delegate->pinch_update()); | 1946 EXPECT_FALSE(queued_delegate->pinch_update()); |
| 1909 EXPECT_FALSE(queued_delegate->pinch_end()); | 1947 EXPECT_FALSE(queued_delegate->pinch_end()); |
| 1910 } | 1948 } |
| 1911 | 1949 |
| 1912 // Check that appropriate touch events generate pinch gesture events. | 1950 // Check that appropriate touch events generate pinch gesture events. |
| 1913 TEST_F(GestureRecognizerTest, GestureEventPinchFromScroll) { | 1951 TEST_P(GestureRecognizerTest, GestureEventPinchFromScroll) { |
| 1952 // Disabled for unified GR due to differences in when pinch begin is sent. The |
| 1953 // Aura GR sends it earlier than is necessary. |
| 1954 if (UsingUnifiedGR()) |
| 1955 return; |
| 1956 |
| 1914 scoped_ptr<GestureEventConsumeDelegate> delegate( | 1957 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 1915 new GestureEventConsumeDelegate()); | 1958 new GestureEventConsumeDelegate()); |
| 1916 TimedEvents tes; | 1959 TimedEvents tes; |
| 1917 const int kWindowWidth = 300; | 1960 const int kWindowWidth = 300; |
| 1918 const int kWindowHeight = 400; | 1961 const int kWindowHeight = 400; |
| 1919 const int kTouchId1 = 5; | 1962 const int kTouchId1 = 5; |
| 1920 const int kTouchId2 = 3; | 1963 const int kTouchId2 = 3; |
| 1921 gfx::Rect bounds(5, 5, kWindowWidth, kWindowHeight); | 1964 gfx::Rect bounds(5, 5, kWindowWidth, kWindowHeight); |
| 1922 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 1965 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 1923 delegate.get(), -1234, bounds, root_window())); | 1966 delegate.get(), -1234, bounds, root_window())); |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1988 | 2031 |
| 1989 // Move the second finger. This should still generate a scroll. | 2032 // Move the second finger. This should still generate a scroll. |
| 1990 delegate->Reset(); | 2033 delegate->Reset(); |
| 1991 ui::TouchEvent move5(ui::ET_TOUCH_MOVED, gfx::Point(25, 10), | 2034 ui::TouchEvent move5(ui::ET_TOUCH_MOVED, gfx::Point(25, 10), |
| 1992 kTouchId2, tes.Now()); | 2035 kTouchId2, tes.Now()); |
| 1993 DispatchEventUsingWindowDispatcher(&move5); | 2036 DispatchEventUsingWindowDispatcher(&move5); |
| 1994 EXPECT_1_EVENT(delegate->events(), ui::ET_GESTURE_SCROLL_UPDATE); | 2037 EXPECT_1_EVENT(delegate->events(), ui::ET_GESTURE_SCROLL_UPDATE); |
| 1995 EXPECT_TRUE(delegate->bounding_box().IsEmpty()); | 2038 EXPECT_TRUE(delegate->bounding_box().IsEmpty()); |
| 1996 } | 2039 } |
| 1997 | 2040 |
| 1998 TEST_F(GestureRecognizerTest, GestureEventPinchFromScrollFromPinch) { | 2041 TEST_P(GestureRecognizerTest, GestureEventPinchFromScrollFromPinch) { |
| 1999 scoped_ptr<GestureEventConsumeDelegate> delegate( | 2042 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 2000 new GestureEventConsumeDelegate()); | 2043 new GestureEventConsumeDelegate()); |
| 2001 TimedEvents tes; | 2044 TimedEvents tes; |
| 2002 const int kWindowWidth = 300; | 2045 const int kWindowWidth = 300; |
| 2003 const int kWindowHeight = 400; | 2046 const int kWindowHeight = 400; |
| 2004 const int kTouchId1 = 5; | 2047 const int kTouchId1 = 5; |
| 2005 const int kTouchId2 = 3; | 2048 const int kTouchId2 = 3; |
| 2006 gfx::Rect bounds(5, 5, kWindowWidth, kWindowHeight); | 2049 gfx::Rect bounds(5, 5, kWindowWidth, kWindowHeight); |
| 2007 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 2050 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 2008 delegate.get(), -1234, bounds, root_window())); | 2051 delegate.get(), -1234, bounds, root_window())); |
| (...skipping 27 matching lines...) Expand all Loading... |
| 2036 tes.SendScrollEvent(event_processor(), 130, 230, kTouchId2, delegate.get()); | 2079 tes.SendScrollEvent(event_processor(), 130, 230, kTouchId2, delegate.get()); |
| 2037 EXPECT_TRUE(delegate->scroll_update()); | 2080 EXPECT_TRUE(delegate->scroll_update()); |
| 2038 | 2081 |
| 2039 // Pinch again | 2082 // Pinch again |
| 2040 delegate->Reset(); | 2083 delegate->Reset(); |
| 2041 ui::TouchEvent press3(ui::ET_TOUCH_PRESSED, gfx::Point(10, 10), | 2084 ui::TouchEvent press3(ui::ET_TOUCH_PRESSED, gfx::Point(10, 10), |
| 2042 kTouchId1, tes.Now()); | 2085 kTouchId1, tes.Now()); |
| 2043 DispatchEventUsingWindowDispatcher(&press3); | 2086 DispatchEventUsingWindowDispatcher(&press3); |
| 2044 // Now the touch points are close. So we will go into two finger tap. | 2087 // Now the touch points are close. So we will go into two finger tap. |
| 2045 // Move the touch-point enough to break two-finger-tap and enter pinch. | 2088 // Move the touch-point enough to break two-finger-tap and enter pinch. |
| 2046 ui::TouchEvent move2(ui::ET_TOUCH_MOVED, gfx::Point(101, 202), | 2089 ui::TouchEvent move2(ui::ET_TOUCH_MOVED, gfx::Point(101, 50), |
| 2047 kTouchId1, tes.Now()); | 2090 kTouchId1, tes.Now()); |
| 2048 DispatchEventUsingWindowDispatcher(&move2); | 2091 DispatchEventUsingWindowDispatcher(&move2); |
| 2049 EXPECT_TRUE(delegate->pinch_begin()); | 2092 EXPECT_TRUE(delegate->pinch_begin()); |
| 2050 | 2093 |
| 2051 tes.SendScrollEvent(event_processor(), 130, 230, kTouchId1, delegate.get()); | 2094 tes.SendScrollEvent(event_processor(), 350, 350, kTouchId1, delegate.get()); |
| 2052 EXPECT_TRUE(delegate->pinch_update()); | 2095 EXPECT_TRUE(delegate->pinch_update()); |
| 2053 } | 2096 } |
| 2054 | 2097 |
| 2055 TEST_F(GestureRecognizerTest, GestureEventPinchFromTap) { | 2098 TEST_P(GestureRecognizerTest, GestureEventPinchFromTap) { |
| 2099 // TODO(tdresser): enable this test with unified GR once two finger tap. |
| 2100 if (UsingUnifiedGR()) |
| 2101 return; |
| 2102 |
| 2056 scoped_ptr<GestureEventConsumeDelegate> delegate( | 2103 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 2057 new GestureEventConsumeDelegate()); | 2104 new GestureEventConsumeDelegate()); |
| 2058 TimedEvents tes; | 2105 TimedEvents tes; |
| 2059 const int kWindowWidth = 300; | 2106 const int kWindowWidth = 300; |
| 2060 const int kWindowHeight = 400; | 2107 const int kWindowHeight = 400; |
| 2061 const int kTouchId1 = 3; | 2108 const int kTouchId1 = 3; |
| 2062 const int kTouchId2 = 5; | 2109 const int kTouchId2 = 5; |
| 2063 gfx::Rect bounds(5, 5, kWindowWidth, kWindowHeight); | 2110 gfx::Rect bounds(5, 5, kWindowWidth, kWindowHeight); |
| 2064 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 2111 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 2065 delegate.get(), -1234, bounds, root_window())); | 2112 delegate.get(), -1234, bounds, root_window())); |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2119 | 2166 |
| 2120 // Move the second finger. This should still generate a scroll. | 2167 // Move the second finger. This should still generate a scroll. |
| 2121 delegate->Reset(); | 2168 delegate->Reset(); |
| 2122 ui::TouchEvent move5(ui::ET_TOUCH_MOVED, gfx::Point(25, 10), | 2169 ui::TouchEvent move5(ui::ET_TOUCH_MOVED, gfx::Point(25, 10), |
| 2123 kTouchId2, tes.Now()); | 2170 kTouchId2, tes.Now()); |
| 2124 DispatchEventUsingWindowDispatcher(&move5); | 2171 DispatchEventUsingWindowDispatcher(&move5); |
| 2125 EXPECT_1_EVENT(delegate->events(), ui::ET_GESTURE_SCROLL_UPDATE); | 2172 EXPECT_1_EVENT(delegate->events(), ui::ET_GESTURE_SCROLL_UPDATE); |
| 2126 EXPECT_TRUE(delegate->bounding_box().IsEmpty()); | 2173 EXPECT_TRUE(delegate->bounding_box().IsEmpty()); |
| 2127 } | 2174 } |
| 2128 | 2175 |
| 2129 TEST_F(GestureRecognizerTest, GestureEventIgnoresDisconnectedEvents) { | 2176 TEST_P(GestureRecognizerTest, GestureEventIgnoresDisconnectedEvents) { |
| 2130 scoped_ptr<GestureEventConsumeDelegate> delegate( | 2177 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 2131 new GestureEventConsumeDelegate()); | 2178 new GestureEventConsumeDelegate()); |
| 2132 TimedEvents tes; | 2179 TimedEvents tes; |
| 2133 | 2180 |
| 2134 ui::TouchEvent release1(ui::ET_TOUCH_RELEASED, gfx::Point(101, 201), | 2181 ui::TouchEvent release1(ui::ET_TOUCH_RELEASED, gfx::Point(101, 201), |
| 2135 6, tes.Now()); | 2182 6, tes.Now()); |
| 2136 DispatchEventUsingWindowDispatcher(&release1); | 2183 DispatchEventUsingWindowDispatcher(&release1); |
| 2137 EXPECT_FALSE(delegate->tap()); | 2184 EXPECT_FALSE(delegate->tap()); |
| 2138 EXPECT_FALSE(delegate->tap_down()); | 2185 EXPECT_FALSE(delegate->tap_down()); |
| 2139 } | 2186 } |
| 2140 | 2187 |
| 2141 // Check that a touch is locked to the window of the closest current touch | 2188 // Check that a touch is locked to the window of the closest current touch |
| 2142 // within max_separation_for_gesture_touches_in_pixels | 2189 // within max_separation_for_gesture_touches_in_pixels |
| 2143 TEST_F(GestureRecognizerTest, GestureEventTouchLockSelectsCorrectWindow) { | 2190 TEST_P(GestureRecognizerTest, GestureEventTouchLockSelectsCorrectWindow) { |
| 2144 ui::GestureRecognizer* gesture_recognizer = new ui::GestureRecognizerImpl(); | 2191 ui::GestureRecognizer* gesture_recognizer = new ui::GestureRecognizerImpl(); |
| 2145 TimedEvents tes; | 2192 TimedEvents tes; |
| 2146 ScopedGestureRecognizerSetter gr_setter(gesture_recognizer); | 2193 ScopedGestureRecognizerSetter gr_setter(gesture_recognizer); |
| 2147 | 2194 |
| 2148 ui::GestureConsumer* target; | 2195 ui::GestureConsumer* target; |
| 2149 const int kNumWindows = 4; | 2196 const int kNumWindows = 4; |
| 2150 | 2197 |
| 2151 scoped_ptr<GestureEventConsumeDelegate*[]> delegates( | 2198 scoped_ptr<GestureEventConsumeDelegate*[]> delegates( |
| 2152 new GestureEventConsumeDelegate*[kNumWindows]); | 2199 new GestureEventConsumeDelegate*[kNumWindows]); |
| 2153 | 2200 |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2219 | 2266 |
| 2220 for (int i = 0; i < kNumWindows; ++i) { | 2267 for (int i = 0; i < kNumWindows; ++i) { |
| 2221 // Delete windows before deleting delegates. | 2268 // Delete windows before deleting delegates. |
| 2222 delete windows[i]; | 2269 delete windows[i]; |
| 2223 delete delegates[i]; | 2270 delete delegates[i]; |
| 2224 } | 2271 } |
| 2225 } | 2272 } |
| 2226 | 2273 |
| 2227 // Check that a touch's target will not be effected by a touch on a different | 2274 // Check that a touch's target will not be effected by a touch on a different |
| 2228 // screen. | 2275 // screen. |
| 2229 TEST_F(GestureRecognizerTest, GestureEventTouchLockIgnoresOtherScreens) { | 2276 TEST_P(GestureRecognizerTest, GestureEventTouchLockIgnoresOtherScreens) { |
| 2230 scoped_ptr<GestureEventConsumeDelegate> delegate( | 2277 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 2231 new GestureEventConsumeDelegate()); | 2278 new GestureEventConsumeDelegate()); |
| 2232 gfx::Rect bounds(0, 0, 10, 10); | 2279 gfx::Rect bounds(0, 0, 10, 10); |
| 2233 scoped_ptr<aura::Window> window( | 2280 scoped_ptr<aura::Window> window( |
| 2234 CreateTestWindowWithDelegate(delegate.get(), 0, bounds, root_window())); | 2281 CreateTestWindowWithDelegate(delegate.get(), 0, bounds, root_window())); |
| 2235 | 2282 |
| 2236 const int kTouchId1 = 8; | 2283 const int kTouchId1 = 8; |
| 2237 const int kTouchId2 = 2; | 2284 const int kTouchId2 = 2; |
| 2238 TimedEvents tes; | 2285 TimedEvents tes; |
| 2239 | 2286 |
| 2240 ui::TouchEvent press1(ui::ET_TOUCH_PRESSED, gfx::Point(5, 5), | 2287 ui::TouchEvent press1(ui::ET_TOUCH_PRESSED, gfx::Point(5, 5), |
| 2241 kTouchId1, tes.Now()); | 2288 kTouchId1, tes.Now()); |
| 2242 press1.set_source_device_id(1); | 2289 press1.set_source_device_id(1); |
| 2243 DispatchEventUsingWindowDispatcher(&press1); | 2290 DispatchEventUsingWindowDispatcher(&press1); |
| 2244 | 2291 |
| 2245 ui::TouchEvent press2(ui::ET_TOUCH_PRESSED, gfx::Point(20, 20), | 2292 ui::TouchEvent press2(ui::ET_TOUCH_PRESSED, gfx::Point(20, 20), |
| 2246 kTouchId2, tes.Now()); | 2293 kTouchId2, tes.Now()); |
| 2247 press2.set_source_device_id(2); | 2294 press2.set_source_device_id(2); |
| 2248 DispatchEventUsingWindowDispatcher(&press2); | 2295 DispatchEventUsingWindowDispatcher(&press2); |
| 2249 | 2296 |
| 2250 // The second press should not have been locked to the same target as the | 2297 // The second press should not have been locked to the same target as the |
| 2251 // first, as they occured on different displays. | 2298 // first, as they occured on different displays. |
| 2252 EXPECT_NE( | 2299 EXPECT_NE( |
| 2253 ui::GestureRecognizer::Get()->GetTouchLockedTarget(press1), | 2300 ui::GestureRecognizer::Get()->GetTouchLockedTarget(press1), |
| 2254 ui::GestureRecognizer::Get()->GetTouchLockedTarget(press2)); | 2301 ui::GestureRecognizer::Get()->GetTouchLockedTarget(press2)); |
| 2255 } | 2302 } |
| 2256 | 2303 |
| 2257 // Check that touch events outside the root window are still handled | 2304 // Check that touch events outside the root window are still handled |
| 2258 // by the root window's gesture sequence. | 2305 // by the root window's gesture sequence. |
| 2259 TEST_F(GestureRecognizerTest, GestureEventOutsideRootWindowTap) { | 2306 TEST_P(GestureRecognizerTest, GestureEventOutsideRootWindowTap) { |
| 2307 // TODO(tdresser): write a version of this test for the unified GR. |
| 2308 if (UsingUnifiedGR()) |
| 2309 return; |
| 2310 |
| 2260 TestGestureRecognizer* gesture_recognizer = | 2311 TestGestureRecognizer* gesture_recognizer = |
| 2261 new TestGestureRecognizer(); | 2312 new TestGestureRecognizer(); |
| 2262 TimedEvents tes; | 2313 TimedEvents tes; |
| 2263 ScopedGestureRecognizerSetter gr_setter(gesture_recognizer); | 2314 ScopedGestureRecognizerSetter gr_setter(gesture_recognizer); |
| 2264 | 2315 |
| 2265 scoped_ptr<aura::Window> window(CreateTestWindowWithBounds( | 2316 scoped_ptr<aura::Window> window(CreateTestWindowWithBounds( |
| 2266 gfx::Rect(-100, -100, 2000, 2000), root_window())); | 2317 gfx::Rect(-100, -100, 2000, 2000), root_window())); |
| 2267 | 2318 |
| 2268 ui::GestureSequence* window_gesture_sequence = | 2319 ui::GestureSequence* window_gesture_sequence = |
| 2269 gesture_recognizer->GetGestureSequenceForTesting(window.get()); | 2320 gesture_recognizer->GetGestureSequenceForTesting(window.get()); |
| 2270 | 2321 |
| 2271 ui::GestureSequence* root_window_gesture_sequence = | 2322 ui::GestureSequence* root_window_gesture_sequence = |
| 2272 gesture_recognizer->GetGestureSequenceForTesting(root_window()); | 2323 gesture_recognizer->GetGestureSequenceForTesting(root_window()); |
| 2273 | 2324 |
| 2274 gfx::Point pos1(-10, -10); | 2325 gfx::Point pos1(-10, -10); |
| 2275 ui::TouchEvent press1(ui::ET_TOUCH_PRESSED, pos1, 0, tes.Now()); | 2326 ui::TouchEvent press1(ui::ET_TOUCH_PRESSED, pos1, 0, tes.Now()); |
| 2276 DispatchEventUsingWindowDispatcher(&press1); | 2327 DispatchEventUsingWindowDispatcher(&press1); |
| 2277 | 2328 |
| 2278 gfx::Point pos2(1000, 1000); | 2329 gfx::Point pos2(1000, 1000); |
| 2279 ui::TouchEvent press2(ui::ET_TOUCH_PRESSED, pos2, 1, tes.Now()); | 2330 ui::TouchEvent press2(ui::ET_TOUCH_PRESSED, pos2, 1, tes.Now()); |
| 2280 DispatchEventUsingWindowDispatcher(&press2); | 2331 DispatchEventUsingWindowDispatcher(&press2); |
| 2281 | 2332 |
| 2282 // As these presses were outside the root window, they should be | 2333 // As these presses were outside the root window, they should be |
| 2283 // associated with the root window. | 2334 // associated with the root window. |
| 2284 EXPECT_EQ(0, window_gesture_sequence->point_count()); | 2335 EXPECT_EQ(0, window_gesture_sequence->point_count()); |
| 2285 EXPECT_EQ(2, root_window_gesture_sequence->point_count()); | 2336 EXPECT_EQ(2, root_window_gesture_sequence->point_count()); |
| 2286 } | 2337 } |
| 2287 | 2338 |
| 2288 TEST_F(GestureRecognizerTest, NoTapWithPreventDefaultedRelease) { | 2339 TEST_P(GestureRecognizerTest, NoTapWithPreventDefaultedRelease) { |
| 2289 scoped_ptr<QueueTouchEventDelegate> delegate( | 2340 scoped_ptr<QueueTouchEventDelegate> delegate( |
| 2290 new QueueTouchEventDelegate(host()->dispatcher())); | 2341 new QueueTouchEventDelegate(host()->dispatcher())); |
| 2291 TimedEvents tes; | 2342 TimedEvents tes; |
| 2292 const int kTouchId = 2; | 2343 const int kTouchId = 2; |
| 2293 gfx::Rect bounds(100, 200, 100, 100); | 2344 gfx::Rect bounds(100, 200, 100, 100); |
| 2294 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 2345 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 2295 delegate.get(), -1234, bounds, root_window())); | 2346 delegate.get(), -1234, bounds, root_window())); |
| 2296 delegate->set_window(window.get()); | 2347 delegate->set_window(window.get()); |
| 2297 | 2348 |
| 2298 delegate->Reset(); | 2349 delegate->Reset(); |
| 2299 ui::TouchEvent press(ui::ET_TOUCH_PRESSED, gfx::Point(101, 201), | 2350 ui::TouchEvent press(ui::ET_TOUCH_PRESSED, gfx::Point(101, 201), |
| 2300 kTouchId, tes.Now()); | 2351 kTouchId, tes.Now()); |
| 2301 DispatchEventUsingWindowDispatcher(&press); | 2352 DispatchEventUsingWindowDispatcher(&press); |
| 2302 ui::TouchEvent release(ui::ET_TOUCH_RELEASED, gfx::Point(101, 201), | 2353 ui::TouchEvent release(ui::ET_TOUCH_RELEASED, gfx::Point(101, 201), |
| 2303 kTouchId, tes.LeapForward(50)); | 2354 kTouchId, tes.LeapForward(50)); |
| 2304 DispatchEventUsingWindowDispatcher(&release); | 2355 DispatchEventUsingWindowDispatcher(&release); |
| 2305 | 2356 |
| 2306 delegate->Reset(); | 2357 delegate->Reset(); |
| 2307 delegate->ReceivedAck(); | 2358 delegate->ReceivedAck(); |
| 2308 EXPECT_TRUE(delegate->tap_down()); | 2359 EXPECT_TRUE(delegate->tap_down()); |
| 2309 delegate->Reset(); | 2360 delegate->Reset(); |
| 2310 delegate->ReceivedAckPreventDefaulted(); | 2361 delegate->ReceivedAckPreventDefaulted(); |
| 2311 EXPECT_FALSE(delegate->tap()); | 2362 EXPECT_FALSE(delegate->tap()); |
| 2312 EXPECT_TRUE(delegate->tap_cancel()); | 2363 EXPECT_TRUE(delegate->tap_cancel()); |
| 2313 } | 2364 } |
| 2314 | 2365 |
| 2315 TEST_F(GestureRecognizerTest, PinchScrollWithPreventDefaultedRelease) { | 2366 TEST_P(GestureRecognizerTest, PinchScrollWithPreventDefaultedRelease) { |
| 2367 // Disabled for unified GR due to differences in when pinch begin is sent. The |
| 2368 // Aura GR sends it earlier than is necessary. |
| 2369 if (UsingUnifiedGR()) |
| 2370 return; |
| 2371 |
| 2316 scoped_ptr<QueueTouchEventDelegate> delegate( | 2372 scoped_ptr<QueueTouchEventDelegate> delegate( |
| 2317 new QueueTouchEventDelegate(host()->dispatcher())); | 2373 new QueueTouchEventDelegate(host()->dispatcher())); |
| 2318 TimedEvents tes; | 2374 TimedEvents tes; |
| 2319 const int kTouchId1 = 7; | 2375 const int kTouchId1 = 7; |
| 2320 const int kTouchId2 = 5; | 2376 const int kTouchId2 = 5; |
| 2321 gfx::Rect bounds(10, 20, 100, 100); | 2377 gfx::Rect bounds(10, 20, 100, 100); |
| 2322 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 2378 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 2323 delegate.get(), -1234, bounds, root_window())); | 2379 delegate.get(), -1234, bounds, root_window())); |
| 2324 delegate->set_window(window.get()); | 2380 delegate->set_window(window.get()); |
| 2325 | 2381 |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2399 delegate->ReceivedAckPreventDefaulted(); | 2455 delegate->ReceivedAckPreventDefaulted(); |
| 2400 EXPECT_TRUE(delegate->pinch_end()); | 2456 EXPECT_TRUE(delegate->pinch_end()); |
| 2401 EXPECT_TRUE(delegate->end()); | 2457 EXPECT_TRUE(delegate->end()); |
| 2402 | 2458 |
| 2403 delegate->Reset(); | 2459 delegate->Reset(); |
| 2404 delegate->ReceivedAckPreventDefaulted(); | 2460 delegate->ReceivedAckPreventDefaulted(); |
| 2405 EXPECT_TRUE(delegate->scroll_end()); | 2461 EXPECT_TRUE(delegate->scroll_end()); |
| 2406 EXPECT_TRUE(delegate->end()); | 2462 EXPECT_TRUE(delegate->end()); |
| 2407 } | 2463 } |
| 2408 | 2464 |
| 2409 TEST_F(GestureRecognizerTest, GestureEndLocation) { | 2465 TEST_P(GestureRecognizerTest, GestureEndLocation) { |
| 2410 GestureEventConsumeDelegate delegate; | 2466 GestureEventConsumeDelegate delegate; |
| 2411 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 2467 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 2412 &delegate, -1234, gfx::Rect(10, 10, 300, 300), root_window())); | 2468 &delegate, -1234, gfx::Rect(10, 10, 300, 300), root_window())); |
| 2413 EventGenerator generator(root_window(), window.get()); | 2469 EventGenerator generator(root_window(), window.get()); |
| 2414 const gfx::Point begin(20, 20); | 2470 const gfx::Point begin(20, 20); |
| 2415 const gfx::Point end(150, 150); | 2471 const gfx::Point end(150, 150); |
| 2416 const gfx::Vector2d window_offset = | 2472 const gfx::Vector2d window_offset = |
| 2417 window->bounds().origin().OffsetFromOrigin(); | 2473 window->bounds().origin().OffsetFromOrigin(); |
| 2418 generator.GestureScrollSequence(begin, end, | 2474 generator.GestureScrollSequence(begin, end, |
| 2419 base::TimeDelta::FromMilliseconds(20), | 2475 base::TimeDelta::FromMilliseconds(20), |
| 2420 10); | 2476 10); |
| 2421 EXPECT_EQ((begin - window_offset).ToString(), | 2477 EXPECT_EQ((begin - window_offset).ToString(), |
| 2422 delegate.scroll_begin_position().ToString()); | 2478 delegate.scroll_begin_position().ToString()); |
| 2423 EXPECT_EQ((end - window_offset).ToString(), | 2479 EXPECT_EQ((end - window_offset).ToString(), |
| 2424 delegate.gesture_end_location().ToString()); | 2480 delegate.gesture_end_location().ToString()); |
| 2425 } | 2481 } |
| 2426 | 2482 |
| 2427 TEST_F(GestureRecognizerTest, CaptureSendsGestureEnd) { | 2483 TEST_P(GestureRecognizerTest, CaptureSendsGestureEnd) { |
| 2428 scoped_ptr<GestureEventConsumeDelegate> delegate( | 2484 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 2429 new GestureEventConsumeDelegate()); | 2485 new GestureEventConsumeDelegate()); |
| 2430 TestGestureRecognizer* gesture_recognizer = | 2486 TestGestureRecognizer* gesture_recognizer = |
| 2431 new TestGestureRecognizer(); | 2487 new TestGestureRecognizer(); |
| 2432 ScopedGestureRecognizerSetter gr_setter(gesture_recognizer); | 2488 ScopedGestureRecognizerSetter gr_setter(gesture_recognizer); |
| 2433 | 2489 |
| 2434 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 2490 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 2435 delegate.get(), -1234, gfx::Rect(10, 10, 300, 300), root_window())); | 2491 delegate.get(), -1234, gfx::Rect(10, 10, 300, 300), root_window())); |
| 2436 EventGenerator generator(root_window()); | 2492 EventGenerator generator(root_window()); |
| 2437 | 2493 |
| 2438 generator.MoveMouseRelativeTo(window.get(), gfx::Point(10, 10)); | 2494 generator.MoveMouseRelativeTo(window.get(), gfx::Point(10, 10)); |
| 2439 generator.PressTouch(); | 2495 generator.PressTouch(); |
| 2440 RunAllPendingInMessageLoop(); | 2496 RunAllPendingInMessageLoop(); |
| 2441 | 2497 |
| 2442 EXPECT_TRUE(delegate->tap_down()); | 2498 EXPECT_TRUE(delegate->tap_down()); |
| 2443 | 2499 |
| 2444 scoped_ptr<aura::Window> capture(CreateTestWindowWithBounds( | 2500 scoped_ptr<aura::Window> capture(CreateTestWindowWithBounds( |
| 2445 gfx::Rect(10, 10, 200, 200), root_window())); | 2501 gfx::Rect(10, 10, 200, 200), root_window())); |
| 2446 capture->SetCapture(); | 2502 capture->SetCapture(); |
| 2447 RunAllPendingInMessageLoop(); | 2503 RunAllPendingInMessageLoop(); |
| 2448 | 2504 |
| 2449 EXPECT_TRUE(delegate->end()); | 2505 EXPECT_TRUE(delegate->end()); |
| 2450 EXPECT_TRUE(delegate->tap_cancel()); | 2506 EXPECT_TRUE(delegate->tap_cancel()); |
| 2451 } | 2507 } |
| 2452 | 2508 |
| 2453 // Check that previous touch actions that are completely finished (either | 2509 // Check that previous touch actions that are completely finished (either |
| 2454 // released or cancelled), do not receive extra synthetic cancels upon change of | 2510 // released or cancelled), do not receive extra synthetic cancels upon change of |
| 2455 // capture. | 2511 // capture. |
| 2456 TEST_F(GestureRecognizerTest, CaptureDoesNotCancelFinishedTouches) { | 2512 TEST_P(GestureRecognizerTest, CaptureDoesNotCancelFinishedTouches) { |
| 2457 scoped_ptr<GestureEventConsumeDelegate> delegate( | 2513 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 2458 new GestureEventConsumeDelegate()); | 2514 new GestureEventConsumeDelegate()); |
| 2459 scoped_ptr<TestEventHandler> handler(new TestEventHandler); | 2515 scoped_ptr<TestEventHandler> handler(new TestEventHandler); |
| 2460 root_window()->AddPreTargetHandler(handler.get()); | 2516 root_window()->AddPreTargetHandler(handler.get()); |
| 2461 | 2517 |
| 2462 // Create a window and set it as the capture window. | 2518 // Create a window and set it as the capture window. |
| 2463 scoped_ptr<aura::Window> window1(CreateTestWindowWithDelegate(delegate.get(), | 2519 scoped_ptr<aura::Window> window1(CreateTestWindowWithDelegate(delegate.get(), |
| 2464 -1234, gfx::Rect(10, 10, 300, 300), root_window())); | 2520 -1234, gfx::Rect(10, 10, 300, 300), root_window())); |
| 2465 window1->SetCapture(); | 2521 window1->SetCapture(); |
| 2466 | 2522 |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2499 gfx::Rect(100, 100, 300, 300), root_window())); | 2555 gfx::Rect(100, 100, 300, 300), root_window())); |
| 2500 window2->SetCapture(); | 2556 window2->SetCapture(); |
| 2501 RunAllPendingInMessageLoop(); | 2557 RunAllPendingInMessageLoop(); |
| 2502 // Check that setting capture does not generate any synthetic touch-cancels | 2558 // Check that setting capture does not generate any synthetic touch-cancels |
| 2503 // for the two previously finished touch actions. | 2559 // for the two previously finished touch actions. |
| 2504 EXPECT_EQ(1, handler->touch_cancelled_count()); | 2560 EXPECT_EQ(1, handler->touch_cancelled_count()); |
| 2505 | 2561 |
| 2506 root_window()->RemovePreTargetHandler(handler.get()); | 2562 root_window()->RemovePreTargetHandler(handler.get()); |
| 2507 } | 2563 } |
| 2508 | 2564 |
| 2509 TEST_F(GestureRecognizerTest, PressDoesNotCrash) { | 2565 // Tests that a press with the same touch id as an existing touch is ignored. |
| 2566 TEST_P(GestureRecognizerTest, PressDoesNotCrash) { |
| 2510 scoped_ptr<GestureEventConsumeDelegate> delegate( | 2567 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 2511 new GestureEventConsumeDelegate()); | 2568 new GestureEventConsumeDelegate()); |
| 2512 TestGestureRecognizer* gesture_recognizer = | 2569 TestGestureRecognizer* gesture_recognizer = |
| 2513 new TestGestureRecognizer(); | 2570 new TestGestureRecognizer(); |
| 2514 ScopedGestureRecognizerSetter gr_setter(gesture_recognizer); | 2571 ScopedGestureRecognizerSetter gr_setter(gesture_recognizer); |
| 2515 TimedEvents tes; | 2572 TimedEvents tes; |
| 2516 | 2573 |
| 2517 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 2574 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 2518 delegate.get(), -1234, gfx::Rect(10, 10, 300, 300), root_window())); | 2575 delegate.get(), -1234, gfx::Rect(10, 10, 300, 300), root_window())); |
| 2519 | 2576 |
| 2520 ui::TouchEvent press(ui::ET_TOUCH_PRESSED, gfx::Point(45, 45), 7, tes.Now()); | 2577 ui::TouchEvent press(ui::ET_TOUCH_PRESSED, gfx::Point(45, 45), 7, tes.Now()); |
| 2521 press.set_radius_x(40); | 2578 press.set_radius_x(40); |
| 2522 DispatchEventUsingWindowDispatcher(&press); | 2579 DispatchEventUsingWindowDispatcher(&press); |
| 2523 EXPECT_TRUE(delegate->tap_down()); | 2580 EXPECT_TRUE(delegate->tap_down()); |
| 2524 EXPECT_EQ(gfx::Rect(5, 5, 80, 80).ToString(), | 2581 EXPECT_EQ(gfx::Rect(5, 5, 80, 80).ToString(), |
| 2525 delegate->bounding_box().ToString()); | 2582 delegate->bounding_box().ToString()); |
| 2526 delegate->Reset(); | 2583 delegate->Reset(); |
| 2527 | 2584 |
| 2528 ui::TouchEvent press2(ui::ET_TOUCH_PRESSED, gfx::Point(55, 45), 7, tes.Now()); | 2585 ui::TouchEvent press2(ui::ET_TOUCH_PRESSED, gfx::Point(55, 45), 7, tes.Now()); |
| 2529 DispatchEventUsingWindowDispatcher(&press2); | 2586 DispatchEventUsingWindowDispatcher(&press2); |
| 2530 | 2587 |
| 2531 // This new press should not generate a tap-down. | 2588 // This new press should not generate a tap-down. |
| 2532 EXPECT_FALSE(delegate->begin()); | 2589 EXPECT_FALSE(delegate->begin()); |
| 2533 EXPECT_FALSE(delegate->tap_down()); | 2590 EXPECT_FALSE(delegate->tap_down()); |
| 2534 EXPECT_FALSE(delegate->tap_cancel()); | 2591 EXPECT_FALSE(delegate->tap_cancel()); |
| 2535 EXPECT_FALSE(delegate->scroll_begin()); | 2592 EXPECT_FALSE(delegate->scroll_begin()); |
| 2536 } | 2593 } |
| 2537 | 2594 |
| 2538 TEST_F(GestureRecognizerTest, TwoFingerTap) { | 2595 TEST_P(GestureRecognizerTest, TwoFingerTap) { |
| 2596 // TODO(tdresser): enable this test with unified GR once two finger tap is |
| 2597 // supported. See crbug.com/354396. |
| 2598 if (UsingUnifiedGR()) |
| 2599 return; |
| 2600 |
| 2539 scoped_ptr<GestureEventConsumeDelegate> delegate( | 2601 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 2540 new GestureEventConsumeDelegate()); | 2602 new GestureEventConsumeDelegate()); |
| 2541 const int kWindowWidth = 123; | 2603 const int kWindowWidth = 123; |
| 2542 const int kWindowHeight = 45; | 2604 const int kWindowHeight = 45; |
| 2543 const int kTouchId1 = 2; | 2605 const int kTouchId1 = 2; |
| 2544 const int kTouchId2 = 3; | 2606 const int kTouchId2 = 3; |
| 2545 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); | 2607 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); |
| 2546 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 2608 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 2547 delegate.get(), -1234, bounds, root_window())); | 2609 delegate.get(), -1234, bounds, root_window())); |
| 2548 TimedEvents tes; | 2610 TimedEvents tes; |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2616 EXPECT_FALSE(delegate->tap()); | 2678 EXPECT_FALSE(delegate->tap()); |
| 2617 EXPECT_FALSE(delegate->tap_down()); | 2679 EXPECT_FALSE(delegate->tap_down()); |
| 2618 EXPECT_FALSE(delegate->tap_cancel()); | 2680 EXPECT_FALSE(delegate->tap_cancel()); |
| 2619 EXPECT_FALSE(delegate->scroll_begin()); | 2681 EXPECT_FALSE(delegate->scroll_begin()); |
| 2620 EXPECT_FALSE(delegate->scroll_update()); | 2682 EXPECT_FALSE(delegate->scroll_update()); |
| 2621 EXPECT_FALSE(delegate->scroll_end()); | 2683 EXPECT_FALSE(delegate->scroll_end()); |
| 2622 EXPECT_TRUE(delegate->fling()); | 2684 EXPECT_TRUE(delegate->fling()); |
| 2623 EXPECT_FALSE(delegate->two_finger_tap()); | 2685 EXPECT_FALSE(delegate->two_finger_tap()); |
| 2624 } | 2686 } |
| 2625 | 2687 |
| 2626 TEST_F(GestureRecognizerTest, TwoFingerTapExpired) { | 2688 TEST_P(GestureRecognizerTest, TwoFingerTapExpired) { |
| 2627 scoped_ptr<GestureEventConsumeDelegate> delegate( | 2689 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 2628 new GestureEventConsumeDelegate()); | 2690 new GestureEventConsumeDelegate()); |
| 2629 const int kWindowWidth = 123; | 2691 const int kWindowWidth = 123; |
| 2630 const int kWindowHeight = 45; | 2692 const int kWindowHeight = 45; |
| 2631 const int kTouchId1 = 2; | 2693 const int kTouchId1 = 2; |
| 2632 const int kTouchId2 = 3; | 2694 const int kTouchId2 = 3; |
| 2633 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); | 2695 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); |
| 2634 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 2696 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 2635 delegate.get(), -1234, bounds, root_window())); | 2697 delegate.get(), -1234, bounds, root_window())); |
| 2636 TimedEvents tes; | 2698 TimedEvents tes; |
| (...skipping 20 matching lines...) Expand all Loading... |
| 2657 // Make sure there is enough delay before the touch is released so that it is | 2719 // Make sure there is enough delay before the touch is released so that it is |
| 2658 // recognized as a tap. | 2720 // recognized as a tap. |
| 2659 delegate->Reset(); | 2721 delegate->Reset(); |
| 2660 ui::TouchEvent release2(ui::ET_TOUCH_RELEASED, gfx::Point(130, 201), | 2722 ui::TouchEvent release2(ui::ET_TOUCH_RELEASED, gfx::Point(130, 201), |
| 2661 kTouchId2, tes.LeapForward(50)); | 2723 kTouchId2, tes.LeapForward(50)); |
| 2662 | 2724 |
| 2663 DispatchEventUsingWindowDispatcher(&release2); | 2725 DispatchEventUsingWindowDispatcher(&release2); |
| 2664 EXPECT_FALSE(delegate->two_finger_tap()); | 2726 EXPECT_FALSE(delegate->two_finger_tap()); |
| 2665 } | 2727 } |
| 2666 | 2728 |
| 2667 TEST_F(GestureRecognizerTest, TwoFingerTapChangesToPinch) { | 2729 TEST_P(GestureRecognizerTest, TwoFingerTapChangesToPinch) { |
| 2730 // TODO(tdresser): enable this test with unified GR once two finger tap is |
| 2731 // supported. See crbug.com/354396. |
| 2732 if (UsingUnifiedGR()) |
| 2733 return; |
| 2734 |
| 2668 scoped_ptr<GestureEventConsumeDelegate> delegate( | 2735 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 2669 new GestureEventConsumeDelegate()); | 2736 new GestureEventConsumeDelegate()); |
| 2670 const int kWindowWidth = 123; | 2737 const int kWindowWidth = 123; |
| 2671 const int kWindowHeight = 45; | 2738 const int kWindowHeight = 45; |
| 2672 const int kTouchId1 = 2; | 2739 const int kTouchId1 = 2; |
| 2673 const int kTouchId2 = 3; | 2740 const int kTouchId2 = 3; |
| 2674 TimedEvents tes; | 2741 TimedEvents tes; |
| 2675 | 2742 |
| 2676 // Test moving first finger | 2743 // Test moving first finger |
| 2677 { | 2744 { |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2729 delegate->Reset(); | 2796 delegate->Reset(); |
| 2730 ui::TouchEvent release(ui::ET_TOUCH_RELEASED, gfx::Point(101, 201), | 2797 ui::TouchEvent release(ui::ET_TOUCH_RELEASED, gfx::Point(101, 201), |
| 2731 kTouchId1, tes.LeapForward(50)); | 2798 kTouchId1, tes.LeapForward(50)); |
| 2732 | 2799 |
| 2733 DispatchEventUsingWindowDispatcher(&release); | 2800 DispatchEventUsingWindowDispatcher(&release); |
| 2734 EXPECT_FALSE(delegate->two_finger_tap()); | 2801 EXPECT_FALSE(delegate->two_finger_tap()); |
| 2735 EXPECT_TRUE(delegate->pinch_end()); | 2802 EXPECT_TRUE(delegate->pinch_end()); |
| 2736 } | 2803 } |
| 2737 } | 2804 } |
| 2738 | 2805 |
| 2739 TEST_F(GestureRecognizerTest, NoTwoFingerTapWhenFirstFingerHasScrolled) { | 2806 TEST_P(GestureRecognizerTest, NoTwoFingerTapWhenFirstFingerHasScrolled) { |
| 2807 // Disabled for unified GR due to differences in when pinch begin is sent. The |
| 2808 // Aura GR sends it earlier than is necessary. |
| 2809 if (UsingUnifiedGR()) |
| 2810 return; |
| 2811 |
| 2740 scoped_ptr<GestureEventConsumeDelegate> delegate( | 2812 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 2741 new GestureEventConsumeDelegate()); | 2813 new GestureEventConsumeDelegate()); |
| 2742 const int kWindowWidth = 123; | 2814 const int kWindowWidth = 123; |
| 2743 const int kWindowHeight = 45; | 2815 const int kWindowHeight = 45; |
| 2744 const int kTouchId1 = 2; | 2816 const int kTouchId1 = 2; |
| 2745 const int kTouchId2 = 3; | 2817 const int kTouchId2 = 3; |
| 2746 TimedEvents tes; | 2818 TimedEvents tes; |
| 2747 | 2819 |
| 2748 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); | 2820 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); |
| 2749 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 2821 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| (...skipping 16 matching lines...) Expand all Loading... |
| 2766 // is recognized as a tap. | 2838 // is recognized as a tap. |
| 2767 delegate->Reset(); | 2839 delegate->Reset(); |
| 2768 ui::TouchEvent release(ui::ET_TOUCH_RELEASED, gfx::Point(101, 201), | 2840 ui::TouchEvent release(ui::ET_TOUCH_RELEASED, gfx::Point(101, 201), |
| 2769 kTouchId2, tes.LeapForward(50)); | 2841 kTouchId2, tes.LeapForward(50)); |
| 2770 | 2842 |
| 2771 DispatchEventUsingWindowDispatcher(&release); | 2843 DispatchEventUsingWindowDispatcher(&release); |
| 2772 EXPECT_FALSE(delegate->two_finger_tap()); | 2844 EXPECT_FALSE(delegate->two_finger_tap()); |
| 2773 EXPECT_TRUE(delegate->pinch_end()); | 2845 EXPECT_TRUE(delegate->pinch_end()); |
| 2774 } | 2846 } |
| 2775 | 2847 |
| 2776 TEST_F(GestureRecognizerTest, MultiFingerSwipe) { | 2848 TEST_P(GestureRecognizerTest, MultiFingerSwipe) { |
| 2777 scoped_ptr<GestureEventConsumeDelegate> delegate( | 2849 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 2778 new GestureEventConsumeDelegate()); | 2850 new GestureEventConsumeDelegate()); |
| 2779 const int kWindowWidth = 123; | 2851 const int kWindowWidth = 123; |
| 2780 const int kWindowHeight = 45; | 2852 const int kWindowHeight = 45; |
| 2781 | 2853 |
| 2782 gfx::Rect bounds(5, 10, kWindowWidth, kWindowHeight); | 2854 gfx::Rect bounds(5, 10, kWindowWidth, kWindowHeight); |
| 2783 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 2855 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 2784 delegate.get(), -1234, bounds, root_window())); | 2856 delegate.get(), -1234, bounds, root_window())); |
| 2785 | 2857 |
| 2786 const int kSteps = 15; | 2858 const int kSteps = 15; |
| 2787 const int kTouchPoints = 4; | 2859 const int kTouchPoints = 4; |
| 2788 gfx::Point points[kTouchPoints] = { | 2860 gfx::Point points[kTouchPoints] = { |
| 2789 gfx::Point(10, 30), | 2861 gfx::Point(10, 30), |
| 2790 gfx::Point(30, 20), | 2862 gfx::Point(30, 20), |
| 2791 gfx::Point(50, 30), | 2863 gfx::Point(50, 30), |
| 2792 gfx::Point(80, 50) | 2864 gfx::Point(80, 50) |
| 2793 }; | 2865 }; |
| 2794 | 2866 |
| 2795 aura::test::EventGenerator generator(root_window(), window.get()); | 2867 aura::test::EventGenerator generator(root_window(), window.get()); |
| 2796 | 2868 |
| 2869 // The unified gesture recognizer assumes a finger has stopped if it hasn't |
| 2870 // moved for too long. See ui/events/gesture_detection/velocity_tracker.cc's |
| 2871 // kAssumePointerStoppedTimeMs. |
| 2797 for (int count = 2; count <= kTouchPoints; ++count) { | 2872 for (int count = 2; count <= kTouchPoints; ++count) { |
| 2798 generator.GestureMultiFingerScroll( | 2873 generator.GestureMultiFingerScroll( |
| 2799 count, points, 1000, kSteps, 0, -11 * kSteps); | 2874 count, points, 10, kSteps, 0, -11 * kSteps); |
| 2800 EXPECT_TRUE(delegate->swipe_up()); | 2875 EXPECT_TRUE(delegate->swipe_up()); |
| 2801 delegate->Reset(); | 2876 delegate->Reset(); |
| 2802 | 2877 |
| 2803 generator.GestureMultiFingerScroll( | 2878 generator.GestureMultiFingerScroll( |
| 2804 count, points, 1000, kSteps, 0, 11 * kSteps); | 2879 count, points, 10, kSteps, 0, 11 * kSteps); |
| 2805 EXPECT_TRUE(delegate->swipe_down()); | 2880 EXPECT_TRUE(delegate->swipe_down()); |
| 2806 delegate->Reset(); | 2881 delegate->Reset(); |
| 2807 | 2882 |
| 2808 generator.GestureMultiFingerScroll( | 2883 generator.GestureMultiFingerScroll( |
| 2809 count, points, 1000, kSteps, -11 * kSteps, 0); | 2884 count, points, 10, kSteps, -11 * kSteps, 0); |
| 2810 EXPECT_TRUE(delegate->swipe_left()); | 2885 EXPECT_TRUE(delegate->swipe_left()); |
| 2811 delegate->Reset(); | 2886 delegate->Reset(); |
| 2812 | 2887 |
| 2813 generator.GestureMultiFingerScroll( | 2888 generator.GestureMultiFingerScroll( |
| 2814 count, points, 1000, kSteps, 11 * kSteps, 0); | 2889 count, points, 10, kSteps, 11 * kSteps, 0); |
| 2815 EXPECT_TRUE(delegate->swipe_right()); | 2890 EXPECT_TRUE(delegate->swipe_right()); |
| 2816 delegate->Reset(); | 2891 delegate->Reset(); |
| 2817 } | 2892 } |
| 2818 } | 2893 } |
| 2819 | 2894 |
| 2820 TEST_F(GestureRecognizerTest, TwoFingerTapCancelled) { | 2895 TEST_P(GestureRecognizerTest, TwoFingerTapCancelled) { |
| 2821 scoped_ptr<GestureEventConsumeDelegate> delegate( | 2896 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 2822 new GestureEventConsumeDelegate()); | 2897 new GestureEventConsumeDelegate()); |
| 2823 const int kWindowWidth = 123; | 2898 const int kWindowWidth = 123; |
| 2824 const int kWindowHeight = 45; | 2899 const int kWindowHeight = 45; |
| 2825 const int kTouchId1 = 2; | 2900 const int kTouchId1 = 2; |
| 2826 const int kTouchId2 = 3; | 2901 const int kTouchId2 = 3; |
| 2827 TimedEvents tes; | 2902 TimedEvents tes; |
| 2828 | 2903 |
| 2829 // Test canceling first finger. | 2904 // Test canceling first finger. |
| 2830 { | 2905 { |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2884 // is recognized as a tap. | 2959 // is recognized as a tap. |
| 2885 delegate->Reset(); | 2960 delegate->Reset(); |
| 2886 ui::TouchEvent release(ui::ET_TOUCH_RELEASED, gfx::Point(101, 201), | 2961 ui::TouchEvent release(ui::ET_TOUCH_RELEASED, gfx::Point(101, 201), |
| 2887 kTouchId1, tes.LeapForward(50)); | 2962 kTouchId1, tes.LeapForward(50)); |
| 2888 | 2963 |
| 2889 DispatchEventUsingWindowDispatcher(&release); | 2964 DispatchEventUsingWindowDispatcher(&release); |
| 2890 EXPECT_FALSE(delegate->two_finger_tap()); | 2965 EXPECT_FALSE(delegate->two_finger_tap()); |
| 2891 } | 2966 } |
| 2892 } | 2967 } |
| 2893 | 2968 |
| 2894 TEST_F(GestureRecognizerTest, VeryWideTwoFingerTouchDownShouldBeAPinch) { | 2969 TEST_P(GestureRecognizerTest, VeryWideTwoFingerTouchDownShouldBeAPinch) { |
| 2970 // Disabled for unified GR due to differences in when scroll update is |
| 2971 // sent. The Aura GR will never send a ScrollUpdate with a ScrollBegin, but |
| 2972 // the unified GR will. |
| 2973 if (UsingUnifiedGR()) |
| 2974 return; |
| 2975 |
| 2895 scoped_ptr<GestureEventConsumeDelegate> delegate( | 2976 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 2896 new GestureEventConsumeDelegate()); | 2977 new GestureEventConsumeDelegate()); |
| 2897 const int kWindowWidth = 523; | 2978 const int kWindowWidth = 523; |
| 2898 const int kWindowHeight = 45; | 2979 const int kWindowHeight = 45; |
| 2899 const int kTouchId1 = 2; | 2980 const int kTouchId1 = 2; |
| 2900 const int kTouchId2 = 3; | 2981 const int kTouchId2 = 3; |
| 2901 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); | 2982 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); |
| 2902 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 2983 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 2903 delegate.get(), -1234, bounds, root_window())); | 2984 delegate.get(), -1234, bounds, root_window())); |
| 2904 TimedEvents tes; | 2985 TimedEvents tes; |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2941 EXPECT_TRUE(delegate->scroll_begin()); | 3022 EXPECT_TRUE(delegate->scroll_begin()); |
| 2942 EXPECT_FALSE(delegate->scroll_update()); | 3023 EXPECT_FALSE(delegate->scroll_update()); |
| 2943 EXPECT_FALSE(delegate->scroll_end()); | 3024 EXPECT_FALSE(delegate->scroll_end()); |
| 2944 EXPECT_FALSE(delegate->long_press()); | 3025 EXPECT_FALSE(delegate->long_press()); |
| 2945 EXPECT_FALSE(delegate->two_finger_tap()); | 3026 EXPECT_FALSE(delegate->two_finger_tap()); |
| 2946 EXPECT_TRUE(delegate->pinch_begin()); | 3027 EXPECT_TRUE(delegate->pinch_begin()); |
| 2947 } | 3028 } |
| 2948 | 3029 |
| 2949 // Verifies if a window is the target of multiple touch-ids and we hide the | 3030 // Verifies if a window is the target of multiple touch-ids and we hide the |
| 2950 // window everything is cleaned up correctly. | 3031 // window everything is cleaned up correctly. |
| 2951 TEST_F(GestureRecognizerTest, FlushAllOnHide) { | 3032 TEST_P(GestureRecognizerTest, FlushAllOnHide) { |
| 2952 scoped_ptr<GestureEventConsumeDelegate> delegate( | 3033 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 2953 new GestureEventConsumeDelegate()); | 3034 new GestureEventConsumeDelegate()); |
| 2954 gfx::Rect bounds(0, 0, 200, 200); | 3035 gfx::Rect bounds(0, 0, 200, 200); |
| 2955 scoped_ptr<aura::Window> window( | 3036 scoped_ptr<aura::Window> window( |
| 2956 CreateTestWindowWithDelegate(delegate.get(), 0, bounds, root_window())); | 3037 CreateTestWindowWithDelegate(delegate.get(), 0, bounds, root_window())); |
| 2957 const int kTouchId1 = 8; | 3038 const int kTouchId1 = 8; |
| 2958 const int kTouchId2 = 2; | 3039 const int kTouchId2 = 2; |
| 2959 TimedEvents tes; | 3040 TimedEvents tes; |
| 2960 | 3041 |
| 2961 ui::TouchEvent press1(ui::ET_TOUCH_PRESSED, gfx::Point(10, 10), | 3042 ui::TouchEvent press1(ui::ET_TOUCH_PRESSED, gfx::Point(10, 10), |
| 2962 kTouchId1, tes.Now()); | 3043 kTouchId1, tes.Now()); |
| 2963 DispatchEventUsingWindowDispatcher(&press1); | 3044 DispatchEventUsingWindowDispatcher(&press1); |
| 2964 ui::TouchEvent press2(ui::ET_TOUCH_PRESSED, gfx::Point(20, 20), | 3045 ui::TouchEvent press2(ui::ET_TOUCH_PRESSED, gfx::Point(20, 20), |
| 2965 kTouchId2, tes.Now()); | 3046 kTouchId2, tes.Now()); |
| 2966 DispatchEventUsingWindowDispatcher(&press2); | 3047 DispatchEventUsingWindowDispatcher(&press2); |
| 2967 window->Hide(); | 3048 window->Hide(); |
| 2968 EXPECT_EQ(NULL, | 3049 EXPECT_EQ(NULL, |
| 2969 ui::GestureRecognizer::Get()->GetTouchLockedTarget(press1)); | 3050 ui::GestureRecognizer::Get()->GetTouchLockedTarget(press1)); |
| 2970 EXPECT_EQ(NULL, | 3051 EXPECT_EQ(NULL, |
| 2971 ui::GestureRecognizer::Get()->GetTouchLockedTarget(press2)); | 3052 ui::GestureRecognizer::Get()->GetTouchLockedTarget(press2)); |
| 2972 } | 3053 } |
| 2973 | 3054 |
| 2974 TEST_F(GestureRecognizerTest, LongPressTimerStopsOnPreventDefaultedTouchMoves) { | 3055 TEST_P(GestureRecognizerTest, LongPressTimerStopsOnPreventDefaultedTouchMoves) { |
| 3056 // TODO(tdresser): write a version of this test for the unified GR. |
| 3057 if (UsingUnifiedGR()) |
| 3058 return; |
| 3059 |
| 2975 scoped_ptr<QueueTouchEventDelegate> delegate( | 3060 scoped_ptr<QueueTouchEventDelegate> delegate( |
| 2976 new QueueTouchEventDelegate(host()->dispatcher())); | 3061 new QueueTouchEventDelegate(host()->dispatcher())); |
| 2977 const int kTouchId = 2; | 3062 const int kTouchId = 2; |
| 2978 gfx::Rect bounds(100, 200, 100, 100); | 3063 gfx::Rect bounds(100, 200, 100, 100); |
| 2979 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 3064 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 2980 delegate.get(), -1234, bounds, root_window())); | 3065 delegate.get(), -1234, bounds, root_window())); |
| 2981 delegate->set_window(window.get()); | 3066 delegate->set_window(window.get()); |
| 2982 TimedEvents tes; | 3067 TimedEvents tes; |
| 2983 | 3068 |
| 2984 TimerTestGestureRecognizer* gesture_recognizer = | 3069 TimerTestGestureRecognizer* gesture_recognizer = |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3024 GestureEventConsumeDelegate::OnTouchEvent(touch); | 3109 GestureEventConsumeDelegate::OnTouchEvent(touch); |
| 3025 } | 3110 } |
| 3026 | 3111 |
| 3027 bool consume_touch_move_; | 3112 bool consume_touch_move_; |
| 3028 | 3113 |
| 3029 DISALLOW_COPY_AND_ASSIGN(ConsumesTouchMovesDelegate); | 3114 DISALLOW_COPY_AND_ASSIGN(ConsumesTouchMovesDelegate); |
| 3030 }; | 3115 }; |
| 3031 | 3116 |
| 3032 // Same as GestureEventScroll, but tests that the behavior is the same | 3117 // Same as GestureEventScroll, but tests that the behavior is the same |
| 3033 // even if all the touch-move events are consumed. | 3118 // even if all the touch-move events are consumed. |
| 3034 TEST_F(GestureRecognizerTest, GestureEventScrollTouchMoveConsumed) { | 3119 TEST_P(GestureRecognizerTest, GestureEventScrollTouchMoveConsumed) { |
| 3035 scoped_ptr<ConsumesTouchMovesDelegate> delegate( | 3120 scoped_ptr<ConsumesTouchMovesDelegate> delegate( |
| 3036 new ConsumesTouchMovesDelegate()); | 3121 new ConsumesTouchMovesDelegate()); |
| 3037 const int kWindowWidth = 123; | 3122 const int kWindowWidth = 123; |
| 3038 const int kWindowHeight = 45; | 3123 const int kWindowHeight = 45; |
| 3039 const int kTouchId = 5; | 3124 const int kTouchId = 5; |
| 3040 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); | 3125 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); |
| 3041 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 3126 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 3042 delegate.get(), -1234, bounds, root_window())); | 3127 delegate.get(), -1234, bounds, root_window())); |
| 3043 TimedEvents tes; | 3128 TimedEvents tes; |
| 3044 | 3129 |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3076 EXPECT_FALSE(delegate->tap_down()); | 3161 EXPECT_FALSE(delegate->tap_down()); |
| 3077 EXPECT_FALSE(delegate->tap_cancel()); | 3162 EXPECT_FALSE(delegate->tap_cancel()); |
| 3078 EXPECT_FALSE(delegate->begin()); | 3163 EXPECT_FALSE(delegate->begin()); |
| 3079 EXPECT_TRUE(delegate->end()); | 3164 EXPECT_TRUE(delegate->end()); |
| 3080 EXPECT_FALSE(delegate->scroll_begin()); | 3165 EXPECT_FALSE(delegate->scroll_begin()); |
| 3081 EXPECT_FALSE(delegate->scroll_update()); | 3166 EXPECT_FALSE(delegate->scroll_update()); |
| 3082 EXPECT_FALSE(delegate->scroll_end()); | 3167 EXPECT_FALSE(delegate->scroll_end()); |
| 3083 } | 3168 } |
| 3084 | 3169 |
| 3085 // Tests the behavior of 2F scroll when all the touch-move events are consumed. | 3170 // Tests the behavior of 2F scroll when all the touch-move events are consumed. |
| 3086 TEST_F(GestureRecognizerTest, GestureEventScrollTwoFingerTouchMoveConsumed) { | 3171 TEST_P(GestureRecognizerTest, GestureEventScrollTwoFingerTouchMoveConsumed) { |
| 3172 // TODO(tdresser): enable this test with unified GR once two finger tap is |
| 3173 // supported. See crbug.com/354396. |
| 3174 if (UsingUnifiedGR()) |
| 3175 return; |
| 3176 |
| 3087 scoped_ptr<ConsumesTouchMovesDelegate> delegate( | 3177 scoped_ptr<ConsumesTouchMovesDelegate> delegate( |
| 3088 new ConsumesTouchMovesDelegate()); | 3178 new ConsumesTouchMovesDelegate()); |
| 3089 const int kWindowWidth = 123; | 3179 const int kWindowWidth = 123; |
| 3090 const int kWindowHeight = 100; | 3180 const int kWindowHeight = 100; |
| 3091 const int kTouchId1 = 2; | 3181 const int kTouchId1 = 2; |
| 3092 const int kTouchId2 = 3; | 3182 const int kTouchId2 = 3; |
| 3093 TimedEvents tes; | 3183 TimedEvents tes; |
| 3094 | 3184 |
| 3095 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); | 3185 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); |
| 3096 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 3186 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3183 EXPECT_TRUE(delegate->fling()); | 3273 EXPECT_TRUE(delegate->fling()); |
| 3184 | 3274 |
| 3185 EXPECT_FALSE(delegate->pinch_begin()); | 3275 EXPECT_FALSE(delegate->pinch_begin()); |
| 3186 EXPECT_FALSE(delegate->pinch_update()); | 3276 EXPECT_FALSE(delegate->pinch_update()); |
| 3187 EXPECT_FALSE(delegate->pinch_end()); | 3277 EXPECT_FALSE(delegate->pinch_end()); |
| 3188 } | 3278 } |
| 3189 | 3279 |
| 3190 // Like as GestureEventTouchMoveConsumed but tests the different behavior | 3280 // Like as GestureEventTouchMoveConsumed but tests the different behavior |
| 3191 // depending on whether the events were consumed before or after the scroll | 3281 // depending on whether the events were consumed before or after the scroll |
| 3192 // started. | 3282 // started. |
| 3193 TEST_F(GestureRecognizerTest, GestureEventScrollTouchMovePartialConsumed) { | 3283 TEST_P(GestureRecognizerTest, GestureEventScrollTouchMovePartialConsumed) { |
| 3194 scoped_ptr<ConsumesTouchMovesDelegate> delegate( | 3284 scoped_ptr<ConsumesTouchMovesDelegate> delegate( |
| 3195 new ConsumesTouchMovesDelegate()); | 3285 new ConsumesTouchMovesDelegate()); |
| 3196 const int kWindowWidth = 123; | 3286 const int kWindowWidth = 123; |
| 3197 const int kWindowHeight = 45; | 3287 const int kWindowHeight = 45; |
| 3198 const int kTouchId = 5; | 3288 const int kTouchId = 5; |
| 3199 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); | 3289 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); |
| 3200 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 3290 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 3201 delegate.get(), -1234, bounds, root_window())); | 3291 delegate.get(), -1234, bounds, root_window())); |
| 3202 TimedEvents tes; | 3292 TimedEvents tes; |
| 3203 | 3293 |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3277 EXPECT_FALSE(delegate->tap_cancel()); | 3367 EXPECT_FALSE(delegate->tap_cancel()); |
| 3278 EXPECT_FALSE(delegate->begin()); | 3368 EXPECT_FALSE(delegate->begin()); |
| 3279 EXPECT_TRUE(delegate->end()); | 3369 EXPECT_TRUE(delegate->end()); |
| 3280 EXPECT_FALSE(delegate->scroll_begin()); | 3370 EXPECT_FALSE(delegate->scroll_begin()); |
| 3281 EXPECT_FALSE(delegate->scroll_update()); | 3371 EXPECT_FALSE(delegate->scroll_update()); |
| 3282 EXPECT_FALSE(delegate->scroll_end()); | 3372 EXPECT_FALSE(delegate->scroll_end()); |
| 3283 EXPECT_FALSE(delegate->fling()); | 3373 EXPECT_FALSE(delegate->fling()); |
| 3284 } | 3374 } |
| 3285 | 3375 |
| 3286 // Check that appropriate touch events generate double tap gesture events. | 3376 // Check that appropriate touch events generate double tap gesture events. |
| 3287 TEST_F(GestureRecognizerTest, GestureEventDoubleTap) { | 3377 TEST_P(GestureRecognizerTest, GestureEventDoubleTap) { |
| 3378 // TODO(tdresser): enable this test with unified GR once double / triple tap |
| 3379 // gestures work. See crbug.com/357270. |
| 3380 if (UsingUnifiedGR()) |
| 3381 return; |
| 3382 |
| 3288 scoped_ptr<GestureEventConsumeDelegate> delegate( | 3383 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 3289 new GestureEventConsumeDelegate()); | 3384 new GestureEventConsumeDelegate()); |
| 3290 const int kWindowWidth = 123; | 3385 const int kWindowWidth = 123; |
| 3291 const int kWindowHeight = 45; | 3386 const int kWindowHeight = 45; |
| 3292 const int kTouchId = 2; | 3387 const int kTouchId = 2; |
| 3293 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); | 3388 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); |
| 3294 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 3389 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 3295 delegate.get(), -1234, bounds, root_window())); | 3390 delegate.get(), -1234, bounds, root_window())); |
| 3296 TimedEvents tes; | 3391 TimedEvents tes; |
| 3297 | 3392 |
| (...skipping 20 matching lines...) Expand all Loading... |
| 3318 EXPECT_TRUE(delegate->begin()); | 3413 EXPECT_TRUE(delegate->begin()); |
| 3319 EXPECT_TRUE(delegate->end()); | 3414 EXPECT_TRUE(delegate->end()); |
| 3320 EXPECT_FALSE(delegate->scroll_begin()); | 3415 EXPECT_FALSE(delegate->scroll_begin()); |
| 3321 EXPECT_FALSE(delegate->scroll_update()); | 3416 EXPECT_FALSE(delegate->scroll_update()); |
| 3322 EXPECT_FALSE(delegate->scroll_end()); | 3417 EXPECT_FALSE(delegate->scroll_end()); |
| 3323 | 3418 |
| 3324 EXPECT_EQ(2, delegate->tap_count()); | 3419 EXPECT_EQ(2, delegate->tap_count()); |
| 3325 } | 3420 } |
| 3326 | 3421 |
| 3327 // Check that appropriate touch events generate triple tap gesture events. | 3422 // Check that appropriate touch events generate triple tap gesture events. |
| 3328 TEST_F(GestureRecognizerTest, GestureEventTripleTap) { | 3423 TEST_P(GestureRecognizerTest, GestureEventTripleTap) { |
| 3424 // TODO(tdresser): enable this test with unified GR once double / triple tap |
| 3425 // gestures work. See crbug.com/357270. |
| 3426 if (UsingUnifiedGR()) |
| 3427 return; |
| 3428 |
| 3329 scoped_ptr<GestureEventConsumeDelegate> delegate( | 3429 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 3330 new GestureEventConsumeDelegate()); | 3430 new GestureEventConsumeDelegate()); |
| 3331 const int kWindowWidth = 123; | 3431 const int kWindowWidth = 123; |
| 3332 const int kWindowHeight = 45; | 3432 const int kWindowHeight = 45; |
| 3333 const int kTouchId = 2; | 3433 const int kTouchId = 2; |
| 3334 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); | 3434 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); |
| 3335 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 3435 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 3336 delegate.get(), -1234, bounds, root_window())); | 3436 delegate.get(), -1234, bounds, root_window())); |
| 3337 TimedEvents tes; | 3437 TimedEvents tes; |
| 3338 | 3438 |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3373 EXPECT_TRUE(delegate->begin()); | 3473 EXPECT_TRUE(delegate->begin()); |
| 3374 EXPECT_TRUE(delegate->end()); | 3474 EXPECT_TRUE(delegate->end()); |
| 3375 EXPECT_FALSE(delegate->scroll_begin()); | 3475 EXPECT_FALSE(delegate->scroll_begin()); |
| 3376 EXPECT_FALSE(delegate->scroll_update()); | 3476 EXPECT_FALSE(delegate->scroll_update()); |
| 3377 EXPECT_FALSE(delegate->scroll_end()); | 3477 EXPECT_FALSE(delegate->scroll_end()); |
| 3378 | 3478 |
| 3379 EXPECT_EQ(3, delegate->tap_count()); | 3479 EXPECT_EQ(3, delegate->tap_count()); |
| 3380 } | 3480 } |
| 3381 | 3481 |
| 3382 // Check that we don't get a double tap when the two taps are far apart. | 3482 // Check that we don't get a double tap when the two taps are far apart. |
| 3383 TEST_F(GestureRecognizerTest, TwoTapsFarApart) { | 3483 TEST_P(GestureRecognizerTest, TwoTapsFarApart) { |
| 3384 scoped_ptr<GestureEventConsumeDelegate> delegate( | 3484 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 3385 new GestureEventConsumeDelegate()); | 3485 new GestureEventConsumeDelegate()); |
| 3386 const int kWindowWidth = 123; | 3486 const int kWindowWidth = 123; |
| 3387 const int kWindowHeight = 45; | 3487 const int kWindowHeight = 45; |
| 3388 const int kTouchId = 2; | 3488 const int kTouchId = 2; |
| 3389 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); | 3489 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); |
| 3390 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 3490 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 3391 delegate.get(), -1234, bounds, root_window())); | 3491 delegate.get(), -1234, bounds, root_window())); |
| 3392 TimedEvents tes; | 3492 TimedEvents tes; |
| 3393 | 3493 |
| (...skipping 21 matching lines...) Expand all Loading... |
| 3415 EXPECT_TRUE(delegate->end()); | 3515 EXPECT_TRUE(delegate->end()); |
| 3416 EXPECT_FALSE(delegate->scroll_begin()); | 3516 EXPECT_FALSE(delegate->scroll_begin()); |
| 3417 EXPECT_FALSE(delegate->scroll_update()); | 3517 EXPECT_FALSE(delegate->scroll_update()); |
| 3418 EXPECT_FALSE(delegate->scroll_end()); | 3518 EXPECT_FALSE(delegate->scroll_end()); |
| 3419 | 3519 |
| 3420 EXPECT_EQ(1, delegate->tap_count()); | 3520 EXPECT_EQ(1, delegate->tap_count()); |
| 3421 } | 3521 } |
| 3422 | 3522 |
| 3423 // Check that we don't get a double tap when the two taps have a long enough | 3523 // Check that we don't get a double tap when the two taps have a long enough |
| 3424 // delay in between. | 3524 // delay in between. |
| 3425 TEST_F(GestureRecognizerTest, TwoTapsWithDelayBetween) { | 3525 TEST_P(GestureRecognizerTest, TwoTapsWithDelayBetween) { |
| 3426 scoped_ptr<GestureEventConsumeDelegate> delegate( | 3526 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 3427 new GestureEventConsumeDelegate()); | 3527 new GestureEventConsumeDelegate()); |
| 3428 const int kWindowWidth = 123; | 3528 const int kWindowWidth = 123; |
| 3429 const int kWindowHeight = 45; | 3529 const int kWindowHeight = 45; |
| 3430 const int kTouchId = 2; | 3530 const int kTouchId = 2; |
| 3431 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); | 3531 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); |
| 3432 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 3532 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 3433 delegate.get(), -1234, bounds, root_window())); | 3533 delegate.get(), -1234, bounds, root_window())); |
| 3434 TimedEvents tes; | 3534 TimedEvents tes; |
| 3435 | 3535 |
| (...skipping 22 matching lines...) Expand all Loading... |
| 3458 EXPECT_FALSE(delegate->scroll_begin()); | 3558 EXPECT_FALSE(delegate->scroll_begin()); |
| 3459 EXPECT_FALSE(delegate->scroll_update()); | 3559 EXPECT_FALSE(delegate->scroll_update()); |
| 3460 EXPECT_FALSE(delegate->scroll_end()); | 3560 EXPECT_FALSE(delegate->scroll_end()); |
| 3461 | 3561 |
| 3462 EXPECT_EQ(1, delegate->tap_count()); | 3562 EXPECT_EQ(1, delegate->tap_count()); |
| 3463 } | 3563 } |
| 3464 | 3564 |
| 3465 // Checks that if the bounding-box of a gesture changes because of change in | 3565 // Checks that if the bounding-box of a gesture changes because of change in |
| 3466 // radius of a touch-point, and not because of change in position, then there | 3566 // radius of a touch-point, and not because of change in position, then there |
| 3467 // are not gesture events from that. | 3567 // are not gesture events from that. |
| 3468 TEST_F(GestureRecognizerTest, BoundingBoxRadiusChange) { | 3568 TEST_P(GestureRecognizerTest, BoundingBoxRadiusChange) { |
| 3569 // TODO(tdresser): enable this test with unified GR when (if?) bounding box |
| 3570 // behavior is unified. |
| 3571 if (UsingUnifiedGR()) |
| 3572 return; |
| 3573 |
| 3469 scoped_ptr<GestureEventConsumeDelegate> delegate( | 3574 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 3470 new GestureEventConsumeDelegate()); | 3575 new GestureEventConsumeDelegate()); |
| 3471 const int kWindowWidth = 234; | 3576 const int kWindowWidth = 234; |
| 3472 const int kWindowHeight = 345; | 3577 const int kWindowHeight = 345; |
| 3473 const int kTouchId = 5, kTouchId2 = 7; | 3578 const int kTouchId = 5, kTouchId2 = 7; |
| 3474 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); | 3579 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); |
| 3475 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 3580 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 3476 delegate.get(), -1234, bounds, root_window())); | 3581 delegate.get(), -1234, bounds, root_window())); |
| 3477 TimedEvents tes; | 3582 TimedEvents tes; |
| 3478 | 3583 |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3512 EXPECT_FALSE(delegate->tap()); | 3617 EXPECT_FALSE(delegate->tap()); |
| 3513 EXPECT_FALSE(delegate->tap_cancel()); | 3618 EXPECT_FALSE(delegate->tap_cancel()); |
| 3514 EXPECT_FALSE(delegate->scroll_update()); | 3619 EXPECT_FALSE(delegate->scroll_update()); |
| 3515 EXPECT_FALSE(delegate->pinch_update()); | 3620 EXPECT_FALSE(delegate->pinch_update()); |
| 3516 | 3621 |
| 3517 delegate->Reset(); | 3622 delegate->Reset(); |
| 3518 } | 3623 } |
| 3519 | 3624 |
| 3520 // Checks that slow scrolls deliver the correct deltas. | 3625 // Checks that slow scrolls deliver the correct deltas. |
| 3521 // In particular, fix for http;//crbug.com/150573. | 3626 // In particular, fix for http;//crbug.com/150573. |
| 3522 TEST_F(GestureRecognizerTest, NoDriftInScroll) { | 3627 TEST_P(GestureRecognizerTest, NoDriftInScroll) { |
| 3523 ui::GestureConfiguration::set_max_touch_move_in_pixels_for_click(3); | 3628 ui::GestureConfiguration::set_max_touch_move_in_pixels_for_click(3); |
| 3524 ui::GestureConfiguration::set_min_scroll_delta_squared(9); | 3629 ui::GestureConfiguration::set_min_scroll_delta_squared(9); |
| 3525 scoped_ptr<GestureEventConsumeDelegate> delegate( | 3630 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 3526 new GestureEventConsumeDelegate()); | 3631 new GestureEventConsumeDelegate()); |
| 3527 const int kWindowWidth = 234; | 3632 const int kWindowWidth = 234; |
| 3528 const int kWindowHeight = 345; | 3633 const int kWindowHeight = 345; |
| 3529 const int kTouchId = 5; | 3634 const int kTouchId = 5; |
| 3530 TimedEvents tes; | 3635 TimedEvents tes; |
| 3531 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); | 3636 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); |
| 3532 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 3637 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3570 DispatchEventUsingWindowDispatcher(&move4); | 3675 DispatchEventUsingWindowDispatcher(&move4); |
| 3571 EXPECT_TRUE(delegate->scroll_update()); | 3676 EXPECT_TRUE(delegate->scroll_update()); |
| 3572 EXPECT_EQ(-1, delegate->scroll_y()); | 3677 EXPECT_EQ(-1, delegate->scroll_y()); |
| 3573 | 3678 |
| 3574 delegate->Reset(); | 3679 delegate->Reset(); |
| 3575 } | 3680 } |
| 3576 | 3681 |
| 3577 // Ensure that move events which are preventDefaulted will cause a tap | 3682 // Ensure that move events which are preventDefaulted will cause a tap |
| 3578 // cancel gesture event to be fired if the move would normally cause a | 3683 // cancel gesture event to be fired if the move would normally cause a |
| 3579 // scroll. See bug http://crbug.com/146397. | 3684 // scroll. See bug http://crbug.com/146397. |
| 3580 TEST_F(GestureRecognizerTest, GestureEventConsumedTouchMoveCanFireTapCancel) { | 3685 TEST_P(GestureRecognizerTest, GestureEventConsumedTouchMoveCanFireTapCancel) { |
| 3581 scoped_ptr<ConsumesTouchMovesDelegate> delegate( | 3686 scoped_ptr<ConsumesTouchMovesDelegate> delegate( |
| 3582 new ConsumesTouchMovesDelegate()); | 3687 new ConsumesTouchMovesDelegate()); |
| 3583 const int kTouchId = 5; | 3688 const int kTouchId = 5; |
| 3584 gfx::Rect bounds(100, 200, 123, 45); | 3689 gfx::Rect bounds(100, 200, 123, 45); |
| 3585 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 3690 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 3586 delegate.get(), -1234, bounds, root_window())); | 3691 delegate.get(), -1234, bounds, root_window())); |
| 3587 TimedEvents tes; | 3692 TimedEvents tes; |
| 3588 | 3693 |
| 3589 delegate->Reset(); | 3694 delegate->Reset(); |
| 3590 ui::TouchEvent press(ui::ET_TOUCH_PRESSED, gfx::Point(101, 201), | 3695 ui::TouchEvent press(ui::ET_TOUCH_PRESSED, gfx::Point(101, 201), |
| 3591 kTouchId, tes.Now()); | 3696 kTouchId, tes.Now()); |
| 3592 | 3697 |
| 3593 delegate->set_consume_touch_move(false); | 3698 delegate->set_consume_touch_move(false); |
| 3594 DispatchEventUsingWindowDispatcher(&press); | 3699 DispatchEventUsingWindowDispatcher(&press); |
| 3595 delegate->set_consume_touch_move(true); | 3700 delegate->set_consume_touch_move(true); |
| 3596 delegate->Reset(); | 3701 delegate->Reset(); |
| 3597 // Move the touch-point enough so that it would normally be considered a | 3702 // Move the touch-point enough so that it would normally be considered a |
| 3598 // scroll. But since the touch-moves will be consumed, the scroll should not | 3703 // scroll. But since the touch-moves will be consumed, the scroll should not |
| 3599 // start. | 3704 // start. |
| 3600 tes.SendScrollEvent(event_processor(), 130, 230, kTouchId, delegate.get()); | 3705 tes.SendScrollEvent(event_processor(), 130, 230, kTouchId, delegate.get()); |
| 3601 EXPECT_FALSE(delegate->tap()); | 3706 EXPECT_FALSE(delegate->tap()); |
| 3602 EXPECT_FALSE(delegate->tap_down()); | 3707 EXPECT_FALSE(delegate->tap_down()); |
| 3603 EXPECT_TRUE(delegate->tap_cancel()); | 3708 EXPECT_TRUE(delegate->tap_cancel()); |
| 3604 EXPECT_FALSE(delegate->begin()); | 3709 EXPECT_FALSE(delegate->begin()); |
| 3605 EXPECT_FALSE(delegate->scroll_begin()); | 3710 EXPECT_FALSE(delegate->scroll_begin()); |
| 3606 EXPECT_FALSE(delegate->scroll_update()); | 3711 EXPECT_FALSE(delegate->scroll_update()); |
| 3607 EXPECT_FALSE(delegate->scroll_end()); | 3712 EXPECT_FALSE(delegate->scroll_end()); |
| 3608 } | 3713 } |
| 3609 | 3714 |
| 3610 TEST_F(GestureRecognizerTest, | 3715 TEST_P(GestureRecognizerTest, |
| 3611 TransferEventDispatchesTouchCancel) { | 3716 TransferEventDispatchesTouchCancel) { |
| 3612 scoped_ptr<GestureEventConsumeDelegate> delegate( | 3717 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 3613 new GestureEventConsumeDelegate()); | 3718 new GestureEventConsumeDelegate()); |
| 3614 TimedEvents tes; | 3719 TimedEvents tes; |
| 3615 const int kWindowWidth = 800; | 3720 const int kWindowWidth = 800; |
| 3616 const int kWindowHeight = 600; | 3721 const int kWindowHeight = 600; |
| 3617 const int kTouchId = 2; | 3722 const int kTouchId = 2; |
| 3618 gfx::Rect bounds(0, 0, kWindowWidth, kWindowHeight); | 3723 gfx::Rect bounds(0, 0, kWindowWidth, kWindowHeight); |
| 3619 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 3724 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 3620 delegate.get(), -1234, bounds, root_window())); | 3725 delegate.get(), -1234, bounds, root_window())); |
| (...skipping 22 matching lines...) Expand all Loading... |
| 3643 gesture_recognizer->GetTouchLockedTarget(press)); | 3748 gesture_recognizer->GetTouchLockedTarget(press)); |
| 3644 gesture_recognizer->TransferEventsTo(window.get(), NULL); | 3749 gesture_recognizer->TransferEventsTo(window.get(), NULL); |
| 3645 EXPECT_EQ(NULL, | 3750 EXPECT_EQ(NULL, |
| 3646 gesture_recognizer->GetTouchLockedTarget(press)); | 3751 gesture_recognizer->GetTouchLockedTarget(press)); |
| 3647 // The event-handler removes |window| from its parent on the first | 3752 // The event-handler removes |window| from its parent on the first |
| 3648 // touch-cancel event, so it won't receive the second touch-cancel event. | 3753 // touch-cancel event, so it won't receive the second touch-cancel event. |
| 3649 EXPECT_EQ(1, handler->touch_cancelled_count()); | 3754 EXPECT_EQ(1, handler->touch_cancelled_count()); |
| 3650 } | 3755 } |
| 3651 | 3756 |
| 3652 // Check that appropriate touch events generate show press events | 3757 // Check that appropriate touch events generate show press events |
| 3653 TEST_F(GestureRecognizerTest, GestureEventShowPress) { | 3758 TEST_P(GestureRecognizerTest, GestureEventShowPress) { |
| 3654 scoped_ptr<GestureEventConsumeDelegate> delegate( | 3759 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 3655 new GestureEventConsumeDelegate()); | 3760 new GestureEventConsumeDelegate()); |
| 3656 TimedEvents tes; | 3761 TimedEvents tes; |
| 3657 const int kWindowWidth = 123; | 3762 const int kWindowWidth = 123; |
| 3658 const int kWindowHeight = 45; | 3763 const int kWindowHeight = 45; |
| 3659 const int kTouchId = 2; | 3764 const int kTouchId = 2; |
| 3660 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); | 3765 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); |
| 3661 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 3766 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 3662 delegate.get(), -1234, bounds, root_window())); | 3767 delegate.get(), -1234, bounds, root_window())); |
| 3663 | 3768 |
| (...skipping 18 matching lines...) Expand all Loading... |
| 3682 delegate->WaitUntilReceivedGesture(ui::ET_GESTURE_SHOW_PRESS); | 3787 delegate->WaitUntilReceivedGesture(ui::ET_GESTURE_SHOW_PRESS); |
| 3683 EXPECT_TRUE(delegate->show_press()); | 3788 EXPECT_TRUE(delegate->show_press()); |
| 3684 EXPECT_FALSE(delegate->tap_cancel()); | 3789 EXPECT_FALSE(delegate->tap_cancel()); |
| 3685 | 3790 |
| 3686 delegate->Reset(); | 3791 delegate->Reset(); |
| 3687 ui::TouchEvent release1(ui::ET_TOUCH_RELEASED, gfx::Point(101, 201), | 3792 ui::TouchEvent release1(ui::ET_TOUCH_RELEASED, gfx::Point(101, 201), |
| 3688 kTouchId, tes.Now()); | 3793 kTouchId, tes.Now()); |
| 3689 DispatchEventUsingWindowDispatcher(&release1); | 3794 DispatchEventUsingWindowDispatcher(&release1); |
| 3690 EXPECT_FALSE(delegate->long_press()); | 3795 EXPECT_FALSE(delegate->long_press()); |
| 3691 | 3796 |
| 3692 // Note the tap down isn't cancelled until the release | 3797 // Note the tap isn't dispatched until the release |
| 3693 EXPECT_TRUE(delegate->tap_cancel()); | 3798 EXPECT_FALSE(delegate->tap_cancel()); |
| 3799 EXPECT_TRUE(delegate->tap()); |
| 3694 } | 3800 } |
| 3695 | 3801 |
| 3696 // Check that scrolling cancels a show press | 3802 // Check that scrolling cancels a show press |
| 3697 TEST_F(GestureRecognizerTest, GestureEventShowPressCancelledByScroll) { | 3803 TEST_P(GestureRecognizerTest, GestureEventShowPressCancelledByScroll) { |
| 3698 scoped_ptr<GestureEventConsumeDelegate> delegate( | 3804 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 3699 new GestureEventConsumeDelegate()); | 3805 new GestureEventConsumeDelegate()); |
| 3700 TimedEvents tes; | 3806 TimedEvents tes; |
| 3701 const int kWindowWidth = 123; | 3807 const int kWindowWidth = 123; |
| 3702 const int kWindowHeight = 45; | 3808 const int kWindowHeight = 45; |
| 3703 const int kTouchId = 6; | 3809 const int kTouchId = 6; |
| 3704 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); | 3810 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); |
| 3705 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 3811 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 3706 delegate.get(), -1234, bounds, root_window())); | 3812 delegate.get(), -1234, bounds, root_window())); |
| 3707 | 3813 |
| (...skipping 26 matching lines...) Expand all Loading... |
| 3734 | 3840 |
| 3735 delegate->Reset(); | 3841 delegate->Reset(); |
| 3736 ui::TouchEvent release1(ui::ET_TOUCH_RELEASED, gfx::Point(101, 201), | 3842 ui::TouchEvent release1(ui::ET_TOUCH_RELEASED, gfx::Point(101, 201), |
| 3737 kTouchId, tes.LeapForward(10)); | 3843 kTouchId, tes.LeapForward(10)); |
| 3738 DispatchEventUsingWindowDispatcher(&release1); | 3844 DispatchEventUsingWindowDispatcher(&release1); |
| 3739 EXPECT_FALSE(delegate->show_press()); | 3845 EXPECT_FALSE(delegate->show_press()); |
| 3740 EXPECT_FALSE(delegate->tap_cancel()); | 3846 EXPECT_FALSE(delegate->tap_cancel()); |
| 3741 } | 3847 } |
| 3742 | 3848 |
| 3743 // Test that show press events are sent immediately on tap | 3849 // Test that show press events are sent immediately on tap |
| 3744 TEST_F(GestureRecognizerTest, GestureEventShowPressSentOnTap) { | 3850 TEST_P(GestureRecognizerTest, GestureEventShowPressSentOnTap) { |
| 3745 scoped_ptr<GestureEventConsumeDelegate> delegate( | 3851 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 3746 new GestureEventConsumeDelegate()); | 3852 new GestureEventConsumeDelegate()); |
| 3747 TimedEvents tes; | 3853 TimedEvents tes; |
| 3748 const int kWindowWidth = 123; | 3854 const int kWindowWidth = 123; |
| 3749 const int kWindowHeight = 45; | 3855 const int kWindowHeight = 45; |
| 3750 const int kTouchId = 6; | 3856 const int kTouchId = 6; |
| 3751 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); | 3857 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); |
| 3752 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 3858 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 3753 delegate.get(), -1234, bounds, root_window())); | 3859 delegate.get(), -1234, bounds, root_window())); |
| 3754 | 3860 |
| (...skipping 11 matching lines...) Expand all Loading... |
| 3766 delegate->Reset(); | 3872 delegate->Reset(); |
| 3767 ui::TouchEvent release1(ui::ET_TOUCH_RELEASED, gfx::Point(101, 201), | 3873 ui::TouchEvent release1(ui::ET_TOUCH_RELEASED, gfx::Point(101, 201), |
| 3768 kTouchId, tes.LeapForward(50)); | 3874 kTouchId, tes.LeapForward(50)); |
| 3769 DispatchEventUsingWindowDispatcher(&release1); | 3875 DispatchEventUsingWindowDispatcher(&release1); |
| 3770 EXPECT_TRUE(delegate->show_press()); | 3876 EXPECT_TRUE(delegate->show_press()); |
| 3771 EXPECT_FALSE(delegate->tap_cancel()); | 3877 EXPECT_FALSE(delegate->tap_cancel()); |
| 3772 EXPECT_TRUE(delegate->tap()); | 3878 EXPECT_TRUE(delegate->tap()); |
| 3773 } | 3879 } |
| 3774 | 3880 |
| 3775 // Test that consuming the first move touch event prevents a scroll. | 3881 // Test that consuming the first move touch event prevents a scroll. |
| 3776 TEST_F(GestureRecognizerTest, GestureEventConsumedTouchMoveScrollTest) { | 3882 TEST_P(GestureRecognizerTest, GestureEventConsumedTouchMoveScrollTest) { |
| 3777 scoped_ptr<QueueTouchEventDelegate> delegate( | 3883 scoped_ptr<QueueTouchEventDelegate> delegate( |
| 3778 new QueueTouchEventDelegate(host()->dispatcher())); | 3884 new QueueTouchEventDelegate(host()->dispatcher())); |
| 3779 TimedEvents tes; | 3885 TimedEvents tes; |
| 3780 const int kTouchId = 7; | 3886 const int kTouchId = 7; |
| 3781 gfx::Rect bounds(0, 0, 1000, 1000); | 3887 gfx::Rect bounds(0, 0, 1000, 1000); |
| 3782 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 3888 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 3783 delegate.get(), -1234, bounds, root_window())); | 3889 delegate.get(), -1234, bounds, root_window())); |
| 3784 | 3890 |
| 3785 ui::TouchEvent press(ui::ET_TOUCH_PRESSED, gfx::Point(0, 0), | 3891 ui::TouchEvent press(ui::ET_TOUCH_PRESSED, gfx::Point(0, 0), |
| 3786 kTouchId, tes.Now()); | 3892 kTouchId, tes.Now()); |
| 3787 DispatchEventUsingWindowDispatcher(&press); | 3893 DispatchEventUsingWindowDispatcher(&press); |
| 3788 delegate->ReceivedAck(); | 3894 delegate->ReceivedAck(); |
| 3789 | 3895 |
| 3790 ui::TouchEvent move1(ui::ET_TOUCH_MOVED, gfx::Point(2, 2), | 3896 // A touch move within the slop region is never consumed in web contents. The |
| 3897 // unified GR won't prevent scroll if a touch move within the slop region is |
| 3898 // consumed, so make sure this touch move exceeds the slop region. |
| 3899 ui::TouchEvent move1(ui::ET_TOUCH_MOVED, gfx::Point(10, 10), |
| 3791 kTouchId, tes.Now()); | 3900 kTouchId, tes.Now()); |
| 3792 DispatchEventUsingWindowDispatcher(&move1); | 3901 DispatchEventUsingWindowDispatcher(&move1); |
| 3793 delegate->ReceivedAckPreventDefaulted(); | 3902 delegate->ReceivedAckPreventDefaulted(); |
| 3794 | 3903 |
| 3795 ui::TouchEvent move2(ui::ET_TOUCH_MOVED, gfx::Point(20, 20), | 3904 ui::TouchEvent move2(ui::ET_TOUCH_MOVED, gfx::Point(20, 20), |
| 3796 kTouchId, tes.Now()); | 3905 kTouchId, tes.Now()); |
| 3797 DispatchEventUsingWindowDispatcher(&move2); | 3906 DispatchEventUsingWindowDispatcher(&move2); |
| 3798 delegate->ReceivedAck(); | 3907 delegate->ReceivedAck(); |
| 3799 | 3908 |
| 3800 EXPECT_FALSE(delegate->scroll_begin()); | 3909 EXPECT_FALSE(delegate->scroll_begin()); |
| 3801 EXPECT_FALSE(delegate->scroll_update()); | 3910 EXPECT_FALSE(delegate->scroll_update()); |
| 3802 } | 3911 } |
| 3803 | 3912 |
| 3804 // Test that consuming the first touch move event of a touch point doesn't | 3913 // Test that consuming the first touch move event of a touch point doesn't |
| 3805 // prevent pinching once an additional touch has been pressed. | 3914 // prevent pinching once an additional touch has been pressed. |
| 3806 TEST_F(GestureRecognizerTest, GestureEventConsumedTouchMovePinchTest) { | 3915 TEST_P(GestureRecognizerTest, GestureEventConsumedTouchMovePinchTest) { |
| 3916 // Consuming moves within the touch slop and the the disposition handling of |
| 3917 // pinch events behave differently between the Unified GR and the Aura GR. |
| 3918 if (UsingUnifiedGR()) |
| 3919 return; |
| 3920 |
| 3807 scoped_ptr<QueueTouchEventDelegate> delegate( | 3921 scoped_ptr<QueueTouchEventDelegate> delegate( |
| 3808 new QueueTouchEventDelegate(host()->dispatcher())); | 3922 new QueueTouchEventDelegate(host()->dispatcher())); |
| 3809 TimedEvents tes; | 3923 TimedEvents tes; |
| 3810 const int kTouchId1 = 7; | 3924 const int kTouchId1 = 7; |
| 3811 const int kTouchId2 = 4; | 3925 const int kTouchId2 = 4; |
| 3812 gfx::Rect bounds(0, 0, 1000, 1000); | 3926 gfx::Rect bounds(0, 0, 1000, 1000); |
| 3813 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 3927 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 3814 delegate.get(), -1234, bounds, root_window())); | 3928 delegate.get(), -1234, bounds, root_window())); |
| 3815 | 3929 |
| 3816 ui::TouchEvent press1(ui::ET_TOUCH_PRESSED, gfx::Point(0, 0), | 3930 ui::TouchEvent press1(ui::ET_TOUCH_PRESSED, gfx::Point(0, 0), |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3853 kTouchId2, tes.Now()); | 3967 kTouchId2, tes.Now()); |
| 3854 DispatchEventUsingWindowDispatcher(&move4); | 3968 DispatchEventUsingWindowDispatcher(&move4); |
| 3855 delegate->ReceivedAck(); | 3969 delegate->ReceivedAck(); |
| 3856 | 3970 |
| 3857 EXPECT_TRUE(delegate->pinch_update()); | 3971 EXPECT_TRUE(delegate->pinch_update()); |
| 3858 EXPECT_EQ(10, delegate->scroll_x()); | 3972 EXPECT_EQ(10, delegate->scroll_x()); |
| 3859 EXPECT_EQ(10, delegate->scroll_y()); | 3973 EXPECT_EQ(10, delegate->scroll_y()); |
| 3860 } | 3974 } |
| 3861 | 3975 |
| 3862 // Test that consuming the first move touch doesn't prevent a tap. | 3976 // Test that consuming the first move touch doesn't prevent a tap. |
| 3863 TEST_F(GestureRecognizerTest, GestureEventConsumedTouchMoveTapTest) { | 3977 TEST_P(GestureRecognizerTest, GestureEventConsumedTouchMoveTapTest) { |
| 3864 scoped_ptr<QueueTouchEventDelegate> delegate( | 3978 scoped_ptr<QueueTouchEventDelegate> delegate( |
| 3865 new QueueTouchEventDelegate(host()->dispatcher())); | 3979 new QueueTouchEventDelegate(host()->dispatcher())); |
| 3866 TimedEvents tes; | 3980 TimedEvents tes; |
| 3867 const int kTouchId = 7; | 3981 const int kTouchId = 7; |
| 3868 gfx::Rect bounds(0, 0, 1000, 1000); | 3982 gfx::Rect bounds(0, 0, 1000, 1000); |
| 3869 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 3983 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 3870 delegate.get(), -1234, bounds, root_window())); | 3984 delegate.get(), -1234, bounds, root_window())); |
| 3871 | 3985 |
| 3872 ui::TouchEvent press(ui::ET_TOUCH_PRESSED, gfx::Point(0, 0), | 3986 ui::TouchEvent press(ui::ET_TOUCH_PRESSED, gfx::Point(0, 0), |
| 3873 kTouchId, tes.Now()); | 3987 kTouchId, tes.Now()); |
| 3874 DispatchEventUsingWindowDispatcher(&press); | 3988 DispatchEventUsingWindowDispatcher(&press); |
| 3875 delegate->ReceivedAck(); | 3989 delegate->ReceivedAck(); |
| 3876 | 3990 |
| 3877 ui::TouchEvent move(ui::ET_TOUCH_MOVED, gfx::Point(2, 2), | 3991 ui::TouchEvent move(ui::ET_TOUCH_MOVED, gfx::Point(2, 2), |
| 3878 kTouchId, tes.Now()); | 3992 kTouchId, tes.Now()); |
| 3879 DispatchEventUsingWindowDispatcher(&move); | 3993 DispatchEventUsingWindowDispatcher(&move); |
| 3880 delegate->ReceivedAckPreventDefaulted(); | 3994 delegate->ReceivedAckPreventDefaulted(); |
| 3881 | 3995 |
| 3882 ui::TouchEvent release(ui::ET_TOUCH_RELEASED, gfx::Point(2, 2), | 3996 ui::TouchEvent release(ui::ET_TOUCH_RELEASED, gfx::Point(2, 2), |
| 3883 kTouchId, tes.LeapForward(50)); | 3997 kTouchId, tes.LeapForward(50)); |
| 3884 DispatchEventUsingWindowDispatcher(&release); | 3998 DispatchEventUsingWindowDispatcher(&release); |
| 3885 delegate->ReceivedAck(); | 3999 delegate->ReceivedAck(); |
| 3886 | 4000 |
| 3887 EXPECT_TRUE(delegate->tap()); | 4001 EXPECT_TRUE(delegate->tap()); |
| 3888 } | 4002 } |
| 3889 | 4003 |
| 3890 // Test that consuming the first move touch doesn't prevent a long press. | 4004 // Test that consuming the first move touch doesn't prevent a long press. |
| 3891 TEST_F(GestureRecognizerTest, GestureEventConsumedTouchMoveLongPressTest) { | 4005 TEST_P(GestureRecognizerTest, GestureEventConsumedTouchMoveLongPressTest) { |
| 3892 scoped_ptr<QueueTouchEventDelegate> delegate( | 4006 scoped_ptr<QueueTouchEventDelegate> delegate( |
| 3893 new QueueTouchEventDelegate(host()->dispatcher())); | 4007 new QueueTouchEventDelegate(host()->dispatcher())); |
| 3894 TimedEvents tes; | 4008 TimedEvents tes; |
| 3895 const int kWindowWidth = 123; | 4009 const int kWindowWidth = 123; |
| 3896 const int kWindowHeight = 45; | 4010 const int kWindowHeight = 45; |
| 3897 const int kTouchId = 2; | 4011 const int kTouchId = 2; |
| 3898 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); | 4012 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); |
| 3899 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 4013 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 3900 delegate.get(), -1234, bounds, root_window())); | 4014 delegate.get(), -1234, bounds, root_window())); |
| 3901 | 4015 |
| (...skipping 13 matching lines...) Expand all Loading... |
| 3915 kTouchId, tes.Now()); | 4029 kTouchId, tes.Now()); |
| 3916 DispatchEventUsingWindowDispatcher(&move); | 4030 DispatchEventUsingWindowDispatcher(&move); |
| 3917 delegate->ReceivedAckPreventDefaulted(); | 4031 delegate->ReceivedAckPreventDefaulted(); |
| 3918 | 4032 |
| 3919 // Wait until the timer runs out | 4033 // Wait until the timer runs out |
| 3920 delegate->WaitUntilReceivedGesture(ui::ET_GESTURE_LONG_PRESS); | 4034 delegate->WaitUntilReceivedGesture(ui::ET_GESTURE_LONG_PRESS); |
| 3921 EXPECT_TRUE(delegate->long_press()); | 4035 EXPECT_TRUE(delegate->long_press()); |
| 3922 } | 4036 } |
| 3923 | 4037 |
| 3924 // Tests that the deltas are correct when leaving the slop region very slowly. | 4038 // Tests that the deltas are correct when leaving the slop region very slowly. |
| 3925 TEST_F(GestureRecognizerTest, TestExceedingSlopSlowly) { | 4039 TEST_P(GestureRecognizerTest, TestExceedingSlopSlowly) { |
| 4040 // Disabled for unified GR due to subtle differences in touch slop handling. |
| 4041 if (UsingUnifiedGR()) |
| 4042 return; |
| 4043 |
| 3926 ui::GestureConfiguration::set_max_touch_move_in_pixels_for_click(3); | 4044 ui::GestureConfiguration::set_max_touch_move_in_pixels_for_click(3); |
| 3927 scoped_ptr<GestureEventConsumeDelegate> delegate( | 4045 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 3928 new GestureEventConsumeDelegate()); | 4046 new GestureEventConsumeDelegate()); |
| 3929 const int kWindowWidth = 234; | 4047 const int kWindowWidth = 234; |
| 3930 const int kWindowHeight = 345; | 4048 const int kWindowHeight = 345; |
| 3931 const int kTouchId = 5; | 4049 const int kTouchId = 5; |
| 3932 TimedEvents tes; | 4050 TimedEvents tes; |
| 3933 gfx::Rect bounds(0, 0, kWindowWidth, kWindowHeight); | 4051 gfx::Rect bounds(0, 0, kWindowWidth, kWindowHeight); |
| 3934 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 4052 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 3935 delegate.get(), -1234, bounds, root_window())); | 4053 delegate.get(), -1234, bounds, root_window())); |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3973 ui::TouchEvent move4(ui::ET_TOUCH_MOVED, gfx::Point(14, 10), kTouchId, | 4091 ui::TouchEvent move4(ui::ET_TOUCH_MOVED, gfx::Point(14, 10), kTouchId, |
| 3974 tes.LeapForward(40)); | 4092 tes.LeapForward(40)); |
| 3975 DispatchEventUsingWindowDispatcher(&move4); | 4093 DispatchEventUsingWindowDispatcher(&move4); |
| 3976 EXPECT_FALSE(delegate->scroll_begin()); | 4094 EXPECT_FALSE(delegate->scroll_begin()); |
| 3977 EXPECT_TRUE(delegate->scroll_update()); | 4095 EXPECT_TRUE(delegate->scroll_update()); |
| 3978 EXPECT_EQ(1, delegate->scroll_x()); | 4096 EXPECT_EQ(1, delegate->scroll_x()); |
| 3979 EXPECT_EQ(0, delegate->scroll_x_hint()); | 4097 EXPECT_EQ(0, delegate->scroll_x_hint()); |
| 3980 delegate->Reset(); | 4098 delegate->Reset(); |
| 3981 } | 4099 } |
| 3982 | 4100 |
| 3983 TEST_F(GestureRecognizerTest, ScrollAlternatelyConsumedTest) { | 4101 TEST_P(GestureRecognizerTest, ScrollAlternatelyConsumedTest) { |
| 3984 scoped_ptr<QueueTouchEventDelegate> delegate( | 4102 scoped_ptr<QueueTouchEventDelegate> delegate( |
| 3985 new QueueTouchEventDelegate(host()->dispatcher())); | 4103 new QueueTouchEventDelegate(host()->dispatcher())); |
| 3986 TimedEvents tes; | 4104 TimedEvents tes; |
| 3987 const int kWindowWidth = 3000; | 4105 const int kWindowWidth = 3000; |
| 3988 const int kWindowHeight = 3000; | 4106 const int kWindowHeight = 3000; |
| 3989 const int kTouchId = 2; | 4107 const int kTouchId = 2; |
| 3990 gfx::Rect bounds(0, 0, kWindowWidth, kWindowHeight); | 4108 gfx::Rect bounds(0, 0, kWindowWidth, kWindowHeight); |
| 3991 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 4109 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 3992 delegate.get(), -1234, bounds, root_window())); | 4110 delegate.get(), -1234, bounds, root_window())); |
| 3993 | 4111 |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4032 ui::TouchEvent move3( | 4150 ui::TouchEvent move3( |
| 4033 ui::ET_TOUCH_MOVED, gfx::Point(x, y), kTouchId, tes.Now()); | 4151 ui::ET_TOUCH_MOVED, gfx::Point(x, y), kTouchId, tes.Now()); |
| 4034 DispatchEventUsingWindowDispatcher(&move3); | 4152 DispatchEventUsingWindowDispatcher(&move3); |
| 4035 delegate->ReceivedAckPreventDefaulted(); | 4153 delegate->ReceivedAckPreventDefaulted(); |
| 4036 EXPECT_FALSE(delegate->scroll_begin()); | 4154 EXPECT_FALSE(delegate->scroll_begin()); |
| 4037 EXPECT_FALSE(delegate->scroll_update()); | 4155 EXPECT_FALSE(delegate->scroll_update()); |
| 4038 delegate->Reset(); | 4156 delegate->Reset(); |
| 4039 } | 4157 } |
| 4040 } | 4158 } |
| 4041 | 4159 |
| 4042 TEST_F(GestureRecognizerTest, PinchAlternatelyConsumedTest) { | 4160 TEST_P(GestureRecognizerTest, PinchAlternatelyConsumedTest) { |
| 4161 // Disabled for unified GR due to differences in when scroll update is |
| 4162 // sent. The Aura GR will never send a ScrollUpdate with a ScrollBegin, but |
| 4163 // the unified GR will. |
| 4164 if (UsingUnifiedGR()) |
| 4165 return; |
| 4166 |
| 4043 scoped_ptr<QueueTouchEventDelegate> delegate( | 4167 scoped_ptr<QueueTouchEventDelegate> delegate( |
| 4044 new QueueTouchEventDelegate(host()->dispatcher())); | 4168 new QueueTouchEventDelegate(host()->dispatcher())); |
| 4045 TimedEvents tes; | 4169 TimedEvents tes; |
| 4046 const int kWindowWidth = 3000; | 4170 const int kWindowWidth = 3000; |
| 4047 const int kWindowHeight = 3000; | 4171 const int kWindowHeight = 3000; |
| 4048 const int kTouchId1 = 5; | 4172 const int kTouchId1 = 5; |
| 4049 const int kTouchId2 = 7; | 4173 const int kTouchId2 = 7; |
| 4050 gfx::Rect bounds(0, 0, kWindowWidth, kWindowHeight); | 4174 gfx::Rect bounds(0, 0, kWindowWidth, kWindowHeight); |
| 4051 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 4175 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 4052 delegate.get(), -1234, bounds, root_window())); | 4176 delegate.get(), -1234, bounds, root_window())); |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4116 EXPECT_FALSE(delegate->scroll_begin()); | 4240 EXPECT_FALSE(delegate->scroll_begin()); |
| 4117 EXPECT_FALSE(delegate->scroll_update()); | 4241 EXPECT_FALSE(delegate->scroll_update()); |
| 4118 EXPECT_FALSE(delegate->scroll_end()); | 4242 EXPECT_FALSE(delegate->scroll_end()); |
| 4119 EXPECT_FALSE(delegate->pinch_begin()); | 4243 EXPECT_FALSE(delegate->pinch_begin()); |
| 4120 EXPECT_FALSE(delegate->pinch_update()); | 4244 EXPECT_FALSE(delegate->pinch_update()); |
| 4121 EXPECT_FALSE(delegate->pinch_end()); | 4245 EXPECT_FALSE(delegate->pinch_end()); |
| 4122 delegate->Reset(); | 4246 delegate->Reset(); |
| 4123 } | 4247 } |
| 4124 } | 4248 } |
| 4125 | 4249 |
| 4250 // Test that touch event flags are passed through to the gesture event. |
| 4251 TEST_P(GestureRecognizerTest, GestureEventFlagsPassedFromTouchEvent) { |
| 4252 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 4253 new GestureEventConsumeDelegate()); |
| 4254 TimedEvents tes; |
| 4255 const int kWindowWidth = 123; |
| 4256 const int kWindowHeight = 45; |
| 4257 const int kTouchId = 6; |
| 4258 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); |
| 4259 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 4260 delegate.get(), -1234, bounds, root_window())); |
| 4261 |
| 4262 delegate->Reset(); |
| 4263 |
| 4264 ui::TouchEvent press1(ui::ET_TOUCH_PRESSED, gfx::Point(101, 201), |
| 4265 kTouchId, tes.Now()); |
| 4266 DispatchEventUsingWindowDispatcher(&press1); |
| 4267 EXPECT_TRUE(delegate->tap_down()); |
| 4268 |
| 4269 int default_flags = delegate->flags(); |
| 4270 |
| 4271 ui::TouchEvent move1( |
| 4272 ui::ET_TOUCH_MOVED, gfx::Point(397, 149), kTouchId, tes.LeapForward(50)); |
| 4273 move1.set_flags(992); |
| 4274 |
| 4275 DispatchEventUsingWindowDispatcher(&move1); |
| 4276 EXPECT_NE(default_flags, delegate->flags()); |
| 4277 } |
| 4278 |
| 4279 INSTANTIATE_TEST_CASE_P(GestureRecognizer, |
| 4280 GestureRecognizerTest, |
| 4281 ::testing::Bool()); |
| 4282 |
| 4126 } // namespace test | 4283 } // namespace test |
| 4127 } // namespace aura | 4284 } // namespace aura |
| OLD | NEW |