| 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 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 95 velocity_y_(0), | 95 velocity_y_(0), |
| 96 scroll_x_ordinal_(0), | 96 scroll_x_ordinal_(0), |
| 97 scroll_y_ordinal_(0), | 97 scroll_y_ordinal_(0), |
| 98 scroll_velocity_x_ordinal_(0), | 98 scroll_velocity_x_ordinal_(0), |
| 99 scroll_velocity_y_ordinal_(0), | 99 scroll_velocity_y_ordinal_(0), |
| 100 velocity_x_ordinal_(0), | 100 velocity_x_ordinal_(0), |
| 101 velocity_y_ordinal_(0), | 101 velocity_y_ordinal_(0), |
| 102 scroll_x_hint_(0), | 102 scroll_x_hint_(0), |
| 103 scroll_y_hint_(0), | 103 scroll_y_hint_(0), |
| 104 tap_count_(0), | 104 tap_count_(0), |
| 105 wait_until_event_(ui::ET_UNKNOWN), | 105 wait_until_event_(ui::ET_UNKNOWN) { |
| 106 flags_(0) {} | 106 } |
| 107 | 107 |
| 108 virtual ~GestureEventConsumeDelegate() {} | 108 virtual ~GestureEventConsumeDelegate() {} |
| 109 | 109 |
| 110 void Reset() { | 110 void Reset() { |
| 111 events_.clear(); | 111 events_.clear(); |
| 112 tap_ = false; | 112 tap_ = false; |
| 113 tap_down_ = false; | 113 tap_down_ = false; |
| 114 tap_cancel_ = false; | 114 tap_cancel_ = false; |
| 115 begin_ = false; | 115 begin_ = false; |
| 116 end_ = false; | 116 end_ = false; |
| (...skipping 25 matching lines...) Expand all Loading... |
| 142 scroll_x_ordinal_ = 0; | 142 scroll_x_ordinal_ = 0; |
| 143 scroll_y_ordinal_ = 0; | 143 scroll_y_ordinal_ = 0; |
| 144 scroll_velocity_x_ordinal_ = 0; | 144 scroll_velocity_x_ordinal_ = 0; |
| 145 scroll_velocity_y_ordinal_ = 0; | 145 scroll_velocity_y_ordinal_ = 0; |
| 146 velocity_x_ordinal_ = 0; | 146 velocity_x_ordinal_ = 0; |
| 147 velocity_y_ordinal_ = 0; | 147 velocity_y_ordinal_ = 0; |
| 148 scroll_x_hint_ = 0; | 148 scroll_x_hint_ = 0; |
| 149 scroll_y_hint_ = 0; | 149 scroll_y_hint_ = 0; |
| 150 tap_count_ = 0; | 150 tap_count_ = 0; |
| 151 scale_ = 0; | 151 scale_ = 0; |
| 152 flags_ = 0; | |
| 153 } | 152 } |
| 154 | 153 |
| 155 const std::vector<ui::EventType>& events() const { return events_; }; | 154 const std::vector<ui::EventType>& events() const { return events_; }; |
| 156 | 155 |
| 157 bool tap() const { return tap_; } | 156 bool tap() const { return tap_; } |
| 158 bool tap_down() const { return tap_down_; } | 157 bool tap_down() const { return tap_down_; } |
| 159 bool tap_cancel() const { return tap_cancel_; } | 158 bool tap_cancel() const { return tap_cancel_; } |
| 160 bool begin() const { return begin_; } | 159 bool begin() const { return begin_; } |
| 161 bool end() const { return end_; } | 160 bool end() const { return end_; } |
| 162 bool scroll_begin() const { return scroll_begin_; } | 161 bool scroll_begin() const { return scroll_begin_; } |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 197 float scroll_y_ordinal() const { return scroll_y_ordinal_; } | 196 float scroll_y_ordinal() const { return scroll_y_ordinal_; } |
| 198 float scroll_velocity_x_ordinal() const { return scroll_velocity_x_ordinal_; } | 197 float scroll_velocity_x_ordinal() const { return scroll_velocity_x_ordinal_; } |
| 199 float scroll_velocity_y_ordinal() const { return scroll_velocity_y_ordinal_; } | 198 float scroll_velocity_y_ordinal() const { return scroll_velocity_y_ordinal_; } |
| 200 float velocity_x_ordinal() const { return velocity_x_ordinal_; } | 199 float velocity_x_ordinal() const { return velocity_x_ordinal_; } |
| 201 float velocity_y_ordinal() const { return velocity_y_ordinal_; } | 200 float velocity_y_ordinal() const { return velocity_y_ordinal_; } |
| 202 float scroll_x_hint() const { return scroll_x_hint_; } | 201 float scroll_x_hint() const { return scroll_x_hint_; } |
| 203 float scroll_y_hint() const { return scroll_y_hint_; } | 202 float scroll_y_hint() const { return scroll_y_hint_; } |
| 204 float scale() const { return scale_; } | 203 float scale() const { return scale_; } |
| 205 const gfx::Rect& bounding_box() const { return bounding_box_; } | 204 const gfx::Rect& bounding_box() const { return bounding_box_; } |
| 206 int tap_count() const { return tap_count_; } | 205 int tap_count() const { return tap_count_; } |
| 207 int flags() const { return flags_; } | |
| 208 | 206 |
| 209 void WaitUntilReceivedGesture(ui::EventType type) { | 207 void WaitUntilReceivedGesture(ui::EventType type) { |
| 210 wait_until_event_ = type; | 208 wait_until_event_ = type; |
| 211 run_loop_.reset(new base::RunLoop()); | 209 run_loop_.reset(new base::RunLoop()); |
| 212 run_loop_->Run(); | 210 run_loop_->Run(); |
| 213 } | 211 } |
| 214 | 212 |
| 215 virtual void OnGestureEvent(ui::GestureEvent* gesture) OVERRIDE { | 213 virtual void OnGestureEvent(ui::GestureEvent* gesture) OVERRIDE { |
| 216 events_.push_back(gesture->type()); | 214 events_.push_back(gesture->type()); |
| 217 bounding_box_ = gesture->details().bounding_box(); | 215 bounding_box_ = gesture->details().bounding_box(); |
| 218 flags_ = gesture->flags(); | |
| 219 switch (gesture->type()) { | 216 switch (gesture->type()) { |
| 220 case ui::ET_GESTURE_TAP: | 217 case ui::ET_GESTURE_TAP: |
| 221 tap_location_ = gesture->location(); | 218 tap_location_ = gesture->location(); |
| 222 tap_count_ = gesture->details().tap_count(); | 219 tap_count_ = gesture->details().tap_count(); |
| 223 tap_ = true; | 220 tap_ = true; |
| 224 break; | 221 break; |
| 225 case ui::ET_GESTURE_TAP_DOWN: | 222 case ui::ET_GESTURE_TAP_DOWN: |
| 226 tap_down_ = true; | 223 tap_down_ = true; |
| 227 break; | 224 break; |
| 228 case ui::ET_GESTURE_TAP_CANCEL: | 225 case ui::ET_GESTURE_TAP_CANCEL: |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 283 break; | 280 break; |
| 284 case ui::ET_GESTURE_SHOW_PRESS: | 281 case ui::ET_GESTURE_SHOW_PRESS: |
| 285 show_press_ = true; | 282 show_press_ = true; |
| 286 break; | 283 break; |
| 287 case ui::ET_GESTURE_MULTIFINGER_SWIPE: | 284 case ui::ET_GESTURE_MULTIFINGER_SWIPE: |
| 288 swipe_left_ = gesture->details().swipe_left(); | 285 swipe_left_ = gesture->details().swipe_left(); |
| 289 swipe_right_ = gesture->details().swipe_right(); | 286 swipe_right_ = gesture->details().swipe_right(); |
| 290 swipe_up_ = gesture->details().swipe_up(); | 287 swipe_up_ = gesture->details().swipe_up(); |
| 291 swipe_down_ = gesture->details().swipe_down(); | 288 swipe_down_ = gesture->details().swipe_down(); |
| 292 break; | 289 break; |
| 293 case ui::ET_SCROLL_FLING_CANCEL: | |
| 294 // Only used in unified gesture detection. | |
| 295 break; | |
| 296 default: | 290 default: |
| 297 NOTREACHED(); | 291 NOTREACHED(); |
| 298 } | 292 } |
| 299 if (wait_until_event_ == gesture->type() && run_loop_) { | 293 if (wait_until_event_ == gesture->type() && run_loop_) { |
| 300 run_loop_->Quit(); | 294 run_loop_->Quit(); |
| 301 wait_until_event_ = ui::ET_UNKNOWN; | 295 wait_until_event_ = ui::ET_UNKNOWN; |
| 302 } | 296 } |
| 303 gesture->StopPropagation(); | 297 gesture->StopPropagation(); |
| 304 } | 298 } |
| 305 | 299 |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 342 float scroll_y_ordinal_; | 336 float scroll_y_ordinal_; |
| 343 float scroll_velocity_x_ordinal_; | 337 float scroll_velocity_x_ordinal_; |
| 344 float scroll_velocity_y_ordinal_; | 338 float scroll_velocity_y_ordinal_; |
| 345 float velocity_x_ordinal_; | 339 float velocity_x_ordinal_; |
| 346 float velocity_y_ordinal_; | 340 float velocity_y_ordinal_; |
| 347 float scroll_x_hint_; | 341 float scroll_x_hint_; |
| 348 float scroll_y_hint_; | 342 float scroll_y_hint_; |
| 349 float scale_; | 343 float scale_; |
| 350 gfx::Rect bounding_box_; | 344 gfx::Rect bounding_box_; |
| 351 int tap_count_; | 345 int tap_count_; |
| 352 int flags_; | |
| 353 | 346 |
| 354 ui::EventType wait_until_event_; | 347 ui::EventType wait_until_event_; |
| 355 | 348 |
| 356 DISALLOW_COPY_AND_ASSIGN(GestureEventConsumeDelegate); | 349 DISALLOW_COPY_AND_ASSIGN(GestureEventConsumeDelegate); |
| 357 }; | 350 }; |
| 358 | 351 |
| 359 class QueueTouchEventDelegate : public GestureEventConsumeDelegate { | 352 class QueueTouchEventDelegate : public GestureEventConsumeDelegate { |
| 360 public: | 353 public: |
| 361 explicit QueueTouchEventDelegate(WindowEventDispatcher* dispatcher) | 354 explicit QueueTouchEventDelegate(WindowEventDispatcher* dispatcher) |
| 362 : window_(NULL), | 355 : window_(NULL), |
| (...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 556 scoped_ptr<ui::GestureRecognizer> new_gr_; | 549 scoped_ptr<ui::GestureRecognizer> new_gr_; |
| 557 | 550 |
| 558 DISALLOW_COPY_AND_ASSIGN(ScopedGestureRecognizerSetter); | 551 DISALLOW_COPY_AND_ASSIGN(ScopedGestureRecognizerSetter); |
| 559 }; | 552 }; |
| 560 | 553 |
| 561 class TimedEvents { | 554 class TimedEvents { |
| 562 private: | 555 private: |
| 563 int simulated_now_; | 556 int simulated_now_; |
| 564 | 557 |
| 565 public: | 558 public: |
| 566 // Use a non-zero start time to pass DCHECKs which ensure events have had a | 559 TimedEvents() : simulated_now_(0) { |
| 567 // time assigned. | |
| 568 TimedEvents() : simulated_now_(1) { | |
| 569 } | 560 } |
| 570 | 561 |
| 571 base::TimeDelta Now() { | 562 base::TimeDelta Now() { |
| 572 base::TimeDelta t = base::TimeDelta::FromMilliseconds(simulated_now_); | 563 base::TimeDelta t = base::TimeDelta::FromMilliseconds(simulated_now_); |
| 573 simulated_now_++; | 564 simulated_now_++; |
| 574 return t; | 565 return t; |
| 575 } | 566 } |
| 576 | 567 |
| 577 base::TimeDelta LeapForward(int time_in_millis) { | 568 base::TimeDelta LeapForward(int time_in_millis) { |
| 578 simulated_now_ += time_in_millis; | 569 simulated_now_ += time_in_millis; |
| (...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 696 target->RemovePreTargetHandler(this); | 687 target->RemovePreTargetHandler(this); |
| 697 target->parent()->RemoveChild(target); | 688 target->parent()->RemoveChild(target); |
| 698 } | 689 } |
| 699 } | 690 } |
| 700 | 691 |
| 701 DISALLOW_COPY_AND_ASSIGN(RemoveOnTouchCancelHandler); | 692 DISALLOW_COPY_AND_ASSIGN(RemoveOnTouchCancelHandler); |
| 702 }; | 693 }; |
| 703 | 694 |
| 704 } // namespace | 695 } // namespace |
| 705 | 696 |
| 706 class GestureRecognizerTest : public AuraTestBase, | 697 class GestureRecognizerTest : public AuraTestBase { |
| 707 public ::testing::WithParamInterface<bool> { | |
| 708 public: | 698 public: |
| 709 GestureRecognizerTest() {} | 699 GestureRecognizerTest() {} |
| 710 | 700 |
| 711 bool UsingUnifiedGR() { | |
| 712 return GetParam(); | |
| 713 } | |
| 714 | |
| 715 virtual void SetUp() OVERRIDE { | 701 virtual void SetUp() OVERRIDE { |
| 716 // TODO(tdresser): Once unified GR has landed, only run these tests once. | 702 CommandLine::ForCurrentProcess()->AppendSwitch( |
| 717 if (UsingUnifiedGR()) { | 703 switches::kEnableScrollPrediction); |
| 718 // TODO(tdresser): use unified GR once it's available. | |
| 719 // CommandLine::ForCurrentProcess()->AppendSwitch( | |
| 720 // switches::kUseUnifiedGestureDetector); | |
| 721 } | |
| 722 | |
| 723 AuraTestBase::SetUp(); | 704 AuraTestBase::SetUp(); |
| 724 } | 705 } |
| 725 | 706 |
| 726 DISALLOW_COPY_AND_ASSIGN(GestureRecognizerTest); | 707 DISALLOW_COPY_AND_ASSIGN(GestureRecognizerTest); |
| 727 }; | 708 }; |
| 728 | 709 |
| 729 // Check that appropriate touch events generate tap gesture events. | 710 // Check that appropriate touch events generate tap gesture events. |
| 730 TEST_P(GestureRecognizerTest, GestureEventTap) { | 711 TEST_F(GestureRecognizerTest, GestureEventTap) { |
| 731 scoped_ptr<GestureEventConsumeDelegate> delegate( | 712 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 732 new GestureEventConsumeDelegate()); | 713 new GestureEventConsumeDelegate()); |
| 733 TimedEvents tes; | 714 TimedEvents tes; |
| 734 const int kWindowWidth = 123; | 715 const int kWindowWidth = 123; |
| 735 const int kWindowHeight = 45; | 716 const int kWindowHeight = 45; |
| 736 const int kTouchId = 2; | 717 const int kTouchId = 2; |
| 737 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); | 718 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); |
| 738 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 719 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 739 delegate.get(), -1234, bounds, root_window())); | 720 delegate.get(), -1234, bounds, root_window())); |
| 740 | 721 |
| (...skipping 30 matching lines...) Expand all Loading... |
| 771 EXPECT_TRUE(delegate->end()); | 752 EXPECT_TRUE(delegate->end()); |
| 772 EXPECT_FALSE(delegate->scroll_begin()); | 753 EXPECT_FALSE(delegate->scroll_begin()); |
| 773 EXPECT_FALSE(delegate->scroll_update()); | 754 EXPECT_FALSE(delegate->scroll_update()); |
| 774 EXPECT_FALSE(delegate->scroll_end()); | 755 EXPECT_FALSE(delegate->scroll_end()); |
| 775 | 756 |
| 776 EXPECT_EQ(1, delegate->tap_count()); | 757 EXPECT_EQ(1, delegate->tap_count()); |
| 777 } | 758 } |
| 778 | 759 |
| 779 // Check that appropriate touch events generate tap gesture events | 760 // Check that appropriate touch events generate tap gesture events |
| 780 // when information about the touch radii are provided. | 761 // when information about the touch radii are provided. |
| 781 TEST_P(GestureRecognizerTest, GestureEventTapRegion) { | 762 TEST_F(GestureRecognizerTest, GestureEventTapRegion) { |
| 782 scoped_ptr<GestureEventConsumeDelegate> delegate( | 763 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 783 new GestureEventConsumeDelegate()); | 764 new GestureEventConsumeDelegate()); |
| 784 TimedEvents tes; | 765 TimedEvents tes; |
| 785 const int kWindowWidth = 800; | 766 const int kWindowWidth = 800; |
| 786 const int kWindowHeight = 600; | 767 const int kWindowHeight = 600; |
| 787 const int kTouchId = 2; | 768 const int kTouchId = 2; |
| 788 gfx::Rect bounds(0, 0, kWindowWidth, kWindowHeight); | 769 gfx::Rect bounds(0, 0, kWindowWidth, kWindowHeight); |
| 789 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 770 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 790 delegate.get(), -1234, bounds, root_window())); | 771 delegate.get(), -1234, bounds, root_window())); |
| 791 | 772 |
| (...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1011 EXPECT_EQ(1, delegate->tap_count()); | 992 EXPECT_EQ(1, delegate->tap_count()); |
| 1012 gfx::Point actual_point(delegate->tap_location()); | 993 gfx::Point actual_point(delegate->tap_location()); |
| 1013 EXPECT_EQ(33, delegate->bounding_box().width()); | 994 EXPECT_EQ(33, delegate->bounding_box().width()); |
| 1014 EXPECT_EQ(32, delegate->bounding_box().height()); | 995 EXPECT_EQ(32, delegate->bounding_box().height()); |
| 1015 EXPECT_EQ(397, actual_point.x()); | 996 EXPECT_EQ(397, actual_point.x()); |
| 1016 EXPECT_EQ(149, actual_point.y()); | 997 EXPECT_EQ(149, actual_point.y()); |
| 1017 } | 998 } |
| 1018 } | 999 } |
| 1019 | 1000 |
| 1020 // Check that appropriate touch events generate scroll gesture events. | 1001 // Check that appropriate touch events generate scroll gesture events. |
| 1021 TEST_P(GestureRecognizerTest, GestureEventScroll) { | 1002 TEST_F(GestureRecognizerTest, GestureEventScroll) { |
| 1022 // We'll start by moving the touch point by (10.5, 10.5). We want 5 dips of | 1003 // We'll start by moving the touch point by (10.5, 10.5). We want 5 dips of |
| 1023 // that distance to be consumed by the slop, so we set the slop radius to | 1004 // that distance to be consumed by the slop, so we set the slop radius to |
| 1024 // sqrt(5 * 5 + 5 * 5). | 1005 // sqrt(5 * 5 + 5 * 5). |
| 1025 ui::GestureConfiguration::set_max_touch_move_in_pixels_for_click( | 1006 ui::GestureConfiguration::set_max_touch_move_in_pixels_for_click( |
| 1026 sqrt(static_cast<double>(5 * 5 + 5 * 5))); | 1007 sqrt(static_cast<double>(5 * 5 + 5 * 5))); |
| 1027 scoped_ptr<GestureEventConsumeDelegate> delegate( | 1008 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 1028 new GestureEventConsumeDelegate()); | 1009 new GestureEventConsumeDelegate()); |
| 1029 TimedEvents tes; | 1010 TimedEvents tes; |
| 1030 const int kWindowWidth = 123; | 1011 const int kWindowWidth = 123; |
| 1031 const int kWindowHeight = 45; | 1012 const int kWindowHeight = 45; |
| (...skipping 23 matching lines...) Expand all Loading... |
| 1055 // The slop consumed 5 dips | 1036 // The slop consumed 5 dips |
| 1056 EXPECT_FLOAT_EQ(5.5, delegate->scroll_x()); | 1037 EXPECT_FLOAT_EQ(5.5, delegate->scroll_x()); |
| 1057 EXPECT_FLOAT_EQ(5.5, delegate->scroll_y()); | 1038 EXPECT_FLOAT_EQ(5.5, delegate->scroll_y()); |
| 1058 EXPECT_EQ(gfx::Point(1, 1).ToString(), | 1039 EXPECT_EQ(gfx::Point(1, 1).ToString(), |
| 1059 delegate->scroll_begin_position().ToString()); | 1040 delegate->scroll_begin_position().ToString()); |
| 1060 | 1041 |
| 1061 // When scrolling with a single finger, the bounding box of the gesture should | 1042 // When scrolling with a single finger, the bounding box of the gesture should |
| 1062 // be empty, since it's a single point and the radius for testing is zero. | 1043 // be empty, since it's a single point and the radius for testing is zero. |
| 1063 EXPECT_TRUE(delegate->bounding_box().IsEmpty()); | 1044 EXPECT_TRUE(delegate->bounding_box().IsEmpty()); |
| 1064 | 1045 |
| 1065 // Move some more to generate a few more scroll updates. Make sure that we get | 1046 // Move some more to generate a few more scroll updates. |
| 1066 // out of the snap channel for the unified GR. | 1047 tes.SendScrollEvent(event_processor(), 91, 192, kTouchId, delegate.get()); |
| 1067 tes.SendScrollEvent(event_processor(), 20, 120, kTouchId, delegate.get()); | |
| 1068 EXPECT_1_EVENT(delegate->events(), ui::ET_GESTURE_SCROLL_UPDATE); | 1048 EXPECT_1_EVENT(delegate->events(), ui::ET_GESTURE_SCROLL_UPDATE); |
| 1069 EXPECT_FLOAT_EQ(-91.5, delegate->scroll_x()); | 1049 EXPECT_FLOAT_EQ(-20.5, delegate->scroll_x()); |
| 1070 EXPECT_FLOAT_EQ(-91.5, delegate->scroll_y()); | 1050 EXPECT_FLOAT_EQ(-19.5, delegate->scroll_y()); |
| 1071 EXPECT_TRUE(delegate->bounding_box().IsEmpty()); | 1051 EXPECT_TRUE(delegate->bounding_box().IsEmpty()); |
| 1072 | 1052 |
| 1073 tes.SendScrollEvent(event_processor(), 50, 124, kTouchId, delegate.get()); | 1053 tes.SendScrollEvent(event_processor(), 121, 196, kTouchId, delegate.get()); |
| 1074 EXPECT_1_EVENT(delegate->events(), ui::ET_GESTURE_SCROLL_UPDATE); | 1054 EXPECT_1_EVENT(delegate->events(), ui::ET_GESTURE_SCROLL_UPDATE); |
| 1075 EXPECT_EQ(30, delegate->scroll_x()); | 1055 EXPECT_EQ(30, delegate->scroll_x()); |
| 1076 EXPECT_EQ(4, delegate->scroll_y()); | 1056 EXPECT_EQ(4, delegate->scroll_y()); |
| 1077 EXPECT_TRUE(delegate->bounding_box().IsEmpty()); | 1057 EXPECT_TRUE(delegate->bounding_box().IsEmpty()); |
| 1078 | 1058 |
| 1079 // Release the touch. This should end the scroll. | 1059 // Release the touch. This should end the scroll. |
| 1080 delegate->Reset(); | 1060 delegate->Reset(); |
| 1081 ui::TouchEvent release(ui::ET_TOUCH_RELEASED, gfx::Point(101, 201), | 1061 ui::TouchEvent release(ui::ET_TOUCH_RELEASED, gfx::Point(101, 201), |
| 1082 kTouchId, | 1062 kTouchId, |
| 1083 tes.LeapForward(50)); | 1063 tes.LeapForward(50)); |
| 1084 DispatchEventUsingWindowDispatcher(&release); | 1064 DispatchEventUsingWindowDispatcher(&release); |
| 1085 EXPECT_2_EVENTS(delegate->events(), | 1065 EXPECT_2_EVENTS(delegate->events(), |
| 1086 ui::ET_SCROLL_FLING_START, | 1066 ui::ET_SCROLL_FLING_START, |
| 1087 ui::ET_GESTURE_END); | 1067 ui::ET_GESTURE_END); |
| 1088 EXPECT_TRUE(delegate->bounding_box().IsEmpty()); | 1068 EXPECT_TRUE(delegate->bounding_box().IsEmpty()); |
| 1089 } | 1069 } |
| 1090 | 1070 |
| 1091 // Check that predicted scroll update positions are correct. | 1071 // Check that predicted scroll update positions are correct. |
| 1092 TEST_P(GestureRecognizerTest, GestureEventScrollPrediction) { | 1072 TEST_F(GestureRecognizerTest, GestureEventScrollPrediction) { |
| 1093 const double prediction_interval = 0.03; | 1073 const double prediction_interval = 0.03; |
| 1094 ui::GestureConfiguration::set_scroll_prediction_seconds(prediction_interval); | 1074 ui::GestureConfiguration::set_scroll_prediction_seconds(prediction_interval); |
| 1095 // We'll start by moving the touch point by (5, 5). We want all of that | 1075 // We'll start by moving the touch point by (5, 5). We want all of that |
| 1096 // distance to be consumed by the slop, so we set the slop radius to | 1076 // distance to be consumed by the slop, so we set the slop radius to |
| 1097 // sqrt(5 * 5 + 5 * 5). | 1077 // sqrt(5 * 5 + 5 * 5). |
| 1098 ui::GestureConfiguration::set_max_touch_move_in_pixels_for_click( | 1078 ui::GestureConfiguration::set_max_touch_move_in_pixels_for_click( |
| 1099 sqrt(static_cast<double>(5 * 5 + 5 * 5))); | 1079 sqrt(static_cast<double>(5 * 5 + 5 * 5))); |
| 1100 | 1080 |
| 1101 scoped_ptr<GestureEventConsumeDelegate> delegate( | 1081 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 1102 new GestureEventConsumeDelegate()); | 1082 new GestureEventConsumeDelegate()); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 1114 gfx::Vector2dF total_scroll; | 1094 gfx::Vector2dF total_scroll; |
| 1115 ui::TouchEvent press(ui::ET_TOUCH_PRESSED, gfx::Point(96, 196), | 1095 ui::TouchEvent press(ui::ET_TOUCH_PRESSED, gfx::Point(96, 196), |
| 1116 kTouchId, tes.Now()); | 1096 kTouchId, tes.Now()); |
| 1117 DispatchEventUsingWindowDispatcher(&press); | 1097 DispatchEventUsingWindowDispatcher(&press); |
| 1118 EXPECT_2_EVENTS(delegate->events(), | 1098 EXPECT_2_EVENTS(delegate->events(), |
| 1119 ui::ET_GESTURE_BEGIN, | 1099 ui::ET_GESTURE_BEGIN, |
| 1120 ui::ET_GESTURE_TAP_DOWN); | 1100 ui::ET_GESTURE_TAP_DOWN); |
| 1121 delegate->Reset(); | 1101 delegate->Reset(); |
| 1122 | 1102 |
| 1123 // Get rid of touch slop. | 1103 // Get rid of touch slop. |
| 1124 ui::TouchEvent move(ui::ET_TOUCH_MOVED, gfx::Point(111, 211), | 1104 ui::TouchEvent move(ui::ET_TOUCH_MOVED, gfx::Point(101, 201), |
| 1125 kTouchId, tes.Now()); | 1105 kTouchId, tes.Now()); |
| 1126 DispatchEventUsingWindowDispatcher(&move); | 1106 DispatchEventUsingWindowDispatcher(&move); |
| 1127 EXPECT_3_EVENTS(delegate->events(), | 1107 EXPECT_3_EVENTS(delegate->events(), |
| 1128 ui::ET_GESTURE_TAP_CANCEL, | 1108 ui::ET_GESTURE_TAP_CANCEL, |
| 1129 ui::ET_GESTURE_SCROLL_BEGIN, | 1109 ui::ET_GESTURE_SCROLL_BEGIN, |
| 1130 ui::ET_GESTURE_SCROLL_UPDATE); | 1110 ui::ET_GESTURE_SCROLL_UPDATE); |
| 1131 total_scroll.set_x(total_scroll.x() + delegate->scroll_x()); | 1111 total_scroll.set_x(total_scroll.x() + delegate->scroll_x()); |
| 1132 total_scroll.set_y(total_scroll.y() + delegate->scroll_y()); | 1112 total_scroll.set_y(total_scroll.y() + delegate->scroll_y()); |
| 1133 | 1113 |
| 1134 // Move the touch-point enough so that it is considered as a scroll. This | 1114 // Move the touch-point enough so that it is considered as a scroll. This |
| (...skipping 22 matching lines...) Expand all Loading... |
| 1157 | 1137 |
| 1158 // Release the touch. This should end the scroll. | 1138 // Release the touch. This should end the scroll. |
| 1159 delegate->Reset(); | 1139 delegate->Reset(); |
| 1160 ui::TouchEvent release(ui::ET_TOUCH_RELEASED, gfx::Point(101, 201), | 1140 ui::TouchEvent release(ui::ET_TOUCH_RELEASED, gfx::Point(101, 201), |
| 1161 kTouchId, | 1141 kTouchId, |
| 1162 tes.LeapForward(50)); | 1142 tes.LeapForward(50)); |
| 1163 DispatchEventUsingWindowDispatcher(&release); | 1143 DispatchEventUsingWindowDispatcher(&release); |
| 1164 } | 1144 } |
| 1165 | 1145 |
| 1166 // Check that the bounding box during a scroll event is correct. | 1146 // Check that the bounding box during a scroll event is correct. |
| 1167 TEST_P(GestureRecognizerTest, GestureEventScrollBoundingBox) { | 1147 TEST_F(GestureRecognizerTest, GestureEventScrollBoundingBox) { |
| 1168 TimedEvents tes; | 1148 TimedEvents tes; |
| 1169 for (int radius = 1; radius <= 10; ++radius) { | 1149 for (int radius = 1; radius <= 10; ++radius) { |
| 1170 ui::GestureConfiguration::set_default_radius(radius); | 1150 ui::GestureConfiguration::set_default_radius(radius); |
| 1171 scoped_ptr<GestureEventConsumeDelegate> delegate( | 1151 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 1172 new GestureEventConsumeDelegate()); | 1152 new GestureEventConsumeDelegate()); |
| 1173 const int kWindowWidth = 123; | 1153 const int kWindowWidth = 123; |
| 1174 const int kWindowHeight = 45; | 1154 const int kWindowHeight = 45; |
| 1175 const int kTouchId = 5; | 1155 const int kTouchId = 5; |
| 1176 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); | 1156 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); |
| 1177 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 1157 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1214 kPositionY + kScrollAmount - radius, | 1194 kPositionY + kScrollAmount - radius, |
| 1215 radius * 2, | 1195 radius * 2, |
| 1216 radius * 2).ToString(), | 1196 radius * 2).ToString(), |
| 1217 delegate->bounding_box().ToString()); | 1197 delegate->bounding_box().ToString()); |
| 1218 } | 1198 } |
| 1219 ui::GestureConfiguration::set_default_radius(0); | 1199 ui::GestureConfiguration::set_default_radius(0); |
| 1220 } | 1200 } |
| 1221 | 1201 |
| 1222 // Check Scroll End Events report correct velocities | 1202 // Check Scroll End Events report correct velocities |
| 1223 // if the user was on a horizontal rail | 1203 // if the user was on a horizontal rail |
| 1224 TEST_P(GestureRecognizerTest, GestureEventHorizontalRailFling) { | 1204 TEST_F(GestureRecognizerTest, GestureEventHorizontalRailFling) { |
| 1225 scoped_ptr<GestureEventConsumeDelegate> delegate( | 1205 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 1226 new GestureEventConsumeDelegate()); | 1206 new GestureEventConsumeDelegate()); |
| 1227 TimedEvents tes; | 1207 TimedEvents tes; |
| 1228 const int kTouchId = 7; | 1208 const int kTouchId = 7; |
| 1229 gfx::Rect bounds(0, 0, 1000, 1000); | 1209 gfx::Rect bounds(0, 0, 1000, 1000); |
| 1230 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 1210 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 1231 delegate.get(), -1234, bounds, root_window())); | 1211 delegate.get(), -1234, bounds, root_window())); |
| 1232 | 1212 |
| 1233 ui::TouchEvent press(ui::ET_TOUCH_PRESSED, gfx::Point(0, 0), | 1213 ui::TouchEvent press(ui::ET_TOUCH_PRESSED, gfx::Point(0, 0), |
| 1234 kTouchId, tes.Now()); | 1214 kTouchId, tes.Now()); |
| 1235 DispatchEventUsingWindowDispatcher(&press); | 1215 DispatchEventUsingWindowDispatcher(&press); |
| 1236 | 1216 |
| 1237 // Get rid of touch slop. | 1217 // Get rid of touch slop. |
| 1238 ui::TouchEvent move(ui::ET_TOUCH_MOVED, gfx::Point(10, 0), | 1218 ui::TouchEvent move(ui::ET_TOUCH_MOVED, gfx::Point(5, 0), |
| 1239 kTouchId, tes.Now()); | 1219 kTouchId, tes.Now()); |
| 1240 DispatchEventUsingWindowDispatcher(&move); | 1220 DispatchEventUsingWindowDispatcher(&move); |
| 1241 delegate->Reset(); | 1221 delegate->Reset(); |
| 1242 | 1222 |
| 1243 | 1223 |
| 1244 // Move the touch-point horizontally enough that it is considered a | 1224 // Move the touch-point horizontally enough that it is considered a |
| 1245 // horizontal scroll. | 1225 // horizontal scroll. |
| 1246 tes.SendScrollEvent(event_processor(), 30, 1, kTouchId, delegate.get()); | 1226 tes.SendScrollEvent(event_processor(), 25, 1, kTouchId, delegate.get()); |
| 1247 EXPECT_FLOAT_EQ(0, delegate->scroll_y()); | 1227 EXPECT_EQ(0, delegate->scroll_y()); |
| 1248 EXPECT_FLOAT_EQ(1, delegate->scroll_y_ordinal()); | 1228 EXPECT_EQ(1, delegate->scroll_y_ordinal()); |
| 1249 EXPECT_FLOAT_EQ(20, delegate->scroll_x()); | 1229 EXPECT_EQ(20, delegate->scroll_x()); |
| 1250 EXPECT_FLOAT_EQ(20, delegate->scroll_x_ordinal()); | 1230 EXPECT_EQ(20, delegate->scroll_x_ordinal()); |
| 1251 | 1231 |
| 1252 // Get a high x velocity, while still staying on the rail | 1232 // Get a high x velocity, while still staying on the rail |
| 1253 tes.SendScrollEvents(event_processor(), 1, 1, | 1233 tes.SendScrollEvents(event_processor(), 1, 1, |
| 1254 100, 10, kTouchId, 1, | 1234 100, 10, kTouchId, 1, |
| 1255 ui::GestureConfiguration::points_buffered_for_velocity(), | 1235 ui::GestureConfiguration::points_buffered_for_velocity(), |
| 1256 delegate.get()); | 1236 delegate.get()); |
| 1257 | 1237 |
| 1258 delegate->Reset(); | 1238 delegate->Reset(); |
| 1259 ui::TouchEvent release(ui::ET_TOUCH_RELEASED, gfx::Point(101, 201), | 1239 ui::TouchEvent release(ui::ET_TOUCH_RELEASED, gfx::Point(101, 201), |
| 1260 kTouchId, tes.Now()); | 1240 kTouchId, tes.Now()); |
| 1261 DispatchEventUsingWindowDispatcher(&release); | 1241 DispatchEventUsingWindowDispatcher(&release); |
| 1262 | 1242 |
| 1263 EXPECT_TRUE(delegate->fling()); | 1243 EXPECT_TRUE(delegate->fling()); |
| 1264 EXPECT_FALSE(delegate->scroll_end()); | 1244 EXPECT_FALSE(delegate->scroll_end()); |
| 1265 EXPECT_GT(delegate->velocity_x(), 0); | 1245 EXPECT_GT(delegate->velocity_x(), 0); |
| 1266 EXPECT_EQ(0, delegate->velocity_y()); | 1246 EXPECT_EQ(0, delegate->velocity_y()); |
| 1267 } | 1247 } |
| 1268 | 1248 |
| 1269 // Check Scroll End Events report correct velocities | 1249 // Check Scroll End Events report correct velocities |
| 1270 // if the user was on a vertical rail | 1250 // if the user was on a vertical rail |
| 1271 TEST_P(GestureRecognizerTest, GestureEventVerticalRailFling) { | 1251 TEST_F(GestureRecognizerTest, GestureEventVerticalRailFling) { |
| 1272 scoped_ptr<GestureEventConsumeDelegate> delegate( | 1252 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 1273 new GestureEventConsumeDelegate()); | 1253 new GestureEventConsumeDelegate()); |
| 1274 TimedEvents tes; | 1254 TimedEvents tes; |
| 1275 const int kTouchId = 7; | 1255 const int kTouchId = 7; |
| 1276 gfx::Rect bounds(0, 0, 1000, 1000); | 1256 gfx::Rect bounds(0, 0, 1000, 1000); |
| 1277 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 1257 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 1278 delegate.get(), -1234, bounds, root_window())); | 1258 delegate.get(), -1234, bounds, root_window())); |
| 1279 | 1259 |
| 1280 ui::TouchEvent press(ui::ET_TOUCH_PRESSED, gfx::Point(0, 0), | 1260 ui::TouchEvent press(ui::ET_TOUCH_PRESSED, gfx::Point(0, 0), |
| 1281 kTouchId, tes.Now()); | 1261 kTouchId, tes.Now()); |
| 1282 DispatchEventUsingWindowDispatcher(&press); | 1262 DispatchEventUsingWindowDispatcher(&press); |
| 1283 | 1263 |
| 1284 // Get rid of touch slop. | 1264 // Get rid of touch slop. |
| 1285 ui::TouchEvent move(ui::ET_TOUCH_MOVED, gfx::Point(0, 10), | 1265 ui::TouchEvent move(ui::ET_TOUCH_MOVED, gfx::Point(0, 5), |
| 1286 kTouchId, tes.Now()); | 1266 kTouchId, tes.Now()); |
| 1287 DispatchEventUsingWindowDispatcher(&move); | 1267 DispatchEventUsingWindowDispatcher(&move); |
| 1288 delegate->Reset(); | 1268 delegate->Reset(); |
| 1289 | 1269 |
| 1290 // Move the touch-point vertically enough that it is considered a | 1270 // Move the touch-point vertically enough that it is considered a |
| 1291 // vertical scroll. | 1271 // vertical scroll. |
| 1292 tes.SendScrollEvent(event_processor(), 1, 30, kTouchId, delegate.get()); | 1272 tes.SendScrollEvent(event_processor(), 1, 25, kTouchId, delegate.get()); |
| 1293 EXPECT_EQ(20, delegate->scroll_y()); | 1273 EXPECT_EQ(20, delegate->scroll_y()); |
| 1294 EXPECT_EQ(20, delegate->scroll_y_ordinal()); | 1274 EXPECT_EQ(20, delegate->scroll_y_ordinal()); |
| 1295 EXPECT_EQ(0, delegate->scroll_x()); | 1275 EXPECT_EQ(0, delegate->scroll_x()); |
| 1296 EXPECT_EQ(1, delegate->scroll_x_ordinal()); | 1276 EXPECT_EQ(1, delegate->scroll_x_ordinal()); |
| 1297 EXPECT_EQ(0, delegate->scroll_velocity_x()); | 1277 EXPECT_EQ(0, delegate->scroll_velocity_x()); |
| 1298 | 1278 |
| 1299 // Get a high y velocity, while still staying on the rail | 1279 // Get a high y velocity, while still staying on the rail |
| 1300 tes.SendScrollEvents(event_processor(), 1, 6, | 1280 tes.SendScrollEvents(event_processor(), 1, 6, |
| 1301 10, 100, kTouchId, 1, | 1281 10, 100, kTouchId, 1, |
| 1302 ui::GestureConfiguration::points_buffered_for_velocity(), | 1282 ui::GestureConfiguration::points_buffered_for_velocity(), |
| 1303 delegate.get()); | 1283 delegate.get()); |
| 1304 EXPECT_EQ(0, delegate->scroll_velocity_x()); | 1284 EXPECT_EQ(0, delegate->scroll_velocity_x()); |
| 1305 | 1285 |
| 1306 delegate->Reset(); | 1286 delegate->Reset(); |
| 1307 ui::TouchEvent release(ui::ET_TOUCH_RELEASED, gfx::Point(101, 206), | 1287 ui::TouchEvent release(ui::ET_TOUCH_RELEASED, gfx::Point(101, 206), |
| 1308 kTouchId, tes.Now()); | 1288 kTouchId, tes.Now()); |
| 1309 DispatchEventUsingWindowDispatcher(&release); | 1289 DispatchEventUsingWindowDispatcher(&release); |
| 1310 | 1290 |
| 1311 EXPECT_TRUE(delegate->fling()); | 1291 EXPECT_TRUE(delegate->fling()); |
| 1312 EXPECT_FALSE(delegate->scroll_end()); | 1292 EXPECT_FALSE(delegate->scroll_end()); |
| 1313 EXPECT_EQ(0, delegate->velocity_x()); | 1293 EXPECT_EQ(0, delegate->velocity_x()); |
| 1314 EXPECT_GT(delegate->velocity_y(), 0); | 1294 EXPECT_GT(delegate->velocity_y(), 0); |
| 1315 } | 1295 } |
| 1316 | 1296 |
| 1317 // Check Scroll End Events report non-zero velocities if the user is not on a | 1297 // Check Scroll End Events reports zero velocities |
| 1318 // rail | 1298 // if the user is not on a rail |
| 1319 TEST_P(GestureRecognizerTest, GestureEventNonRailFling) { | 1299 TEST_F(GestureRecognizerTest, GestureEventNonRailFling) { |
| 1320 ui::GestureConfiguration::set_max_touch_move_in_pixels_for_click(0); | 1300 ui::GestureConfiguration::set_max_touch_move_in_pixels_for_click(0); |
| 1321 scoped_ptr<GestureEventConsumeDelegate> delegate( | 1301 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 1322 new GestureEventConsumeDelegate()); | 1302 new GestureEventConsumeDelegate()); |
| 1323 TimedEvents tes; | 1303 TimedEvents tes; |
| 1324 const int kTouchId = 7; | 1304 const int kTouchId = 7; |
| 1325 gfx::Rect bounds(0, 0, 1000, 1000); | 1305 gfx::Rect bounds(0, 0, 1000, 1000); |
| 1326 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 1306 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 1327 delegate.get(), -1234, bounds, root_window())); | 1307 delegate.get(), -1234, bounds, root_window())); |
| 1328 | 1308 |
| 1329 ui::TouchEvent press(ui::ET_TOUCH_PRESSED, gfx::Point(0, 0), | 1309 ui::TouchEvent press(ui::ET_TOUCH_PRESSED, gfx::Point(0, 0), |
| 1330 kTouchId, tes.Now()); | 1310 kTouchId, tes.Now()); |
| 1331 DispatchEventUsingWindowDispatcher(&press); | 1311 DispatchEventUsingWindowDispatcher(&press); |
| 1332 | 1312 |
| 1333 // Move the touch-point such that a non-rail scroll begins, and we're outside | 1313 // Move the touch-point such that a non-rail scroll begins |
| 1334 // the snap channel for the unified GR. | 1314 tes.SendScrollEvent(event_processor(), 20, 20, kTouchId, delegate.get()); |
| 1335 tes.SendScrollEvent(event_processor(), 50, 50, kTouchId, delegate.get()); | 1315 EXPECT_EQ(20, delegate->scroll_y()); |
| 1336 EXPECT_EQ(50, delegate->scroll_y()); | 1316 EXPECT_EQ(20, delegate->scroll_x()); |
| 1337 EXPECT_EQ(50, delegate->scroll_x()); | |
| 1338 | 1317 |
| 1339 tes.SendScrollEvents(event_processor(), 1, 1, | 1318 tes.SendScrollEvents(event_processor(), 1, 1, |
| 1340 10, 100, kTouchId, 1, | 1319 10, 100, kTouchId, 1, |
| 1341 ui::GestureConfiguration::points_buffered_for_velocity(), | 1320 ui::GestureConfiguration::points_buffered_for_velocity(), |
| 1342 delegate.get()); | 1321 delegate.get()); |
| 1343 | 1322 |
| 1344 delegate->Reset(); | 1323 delegate->Reset(); |
| 1345 ui::TouchEvent release(ui::ET_TOUCH_RELEASED, gfx::Point(101, 201), | 1324 ui::TouchEvent release(ui::ET_TOUCH_RELEASED, gfx::Point(101, 201), |
| 1346 kTouchId, tes.Now()); | 1325 kTouchId, tes.Now()); |
| 1347 DispatchEventUsingWindowDispatcher(&release); | 1326 DispatchEventUsingWindowDispatcher(&release); |
| 1348 | 1327 |
| 1349 EXPECT_TRUE(delegate->fling()); | 1328 EXPECT_TRUE(delegate->fling()); |
| 1350 EXPECT_FALSE(delegate->scroll_end()); | 1329 EXPECT_FALSE(delegate->scroll_end()); |
| 1351 EXPECT_GT(delegate->velocity_x(), 0); | 1330 EXPECT_GT(delegate->velocity_x(), 0); |
| 1352 EXPECT_GT(delegate->velocity_y(), 0); | 1331 EXPECT_GT(delegate->velocity_y(), 0); |
| 1353 } | 1332 } |
| 1354 | 1333 |
| 1355 // Check that appropriate touch events generate long press events | 1334 // Check that appropriate touch events generate long press events |
| 1356 TEST_P(GestureRecognizerTest, GestureEventLongPress) { | 1335 TEST_F(GestureRecognizerTest, GestureEventLongPress) { |
| 1357 scoped_ptr<GestureEventConsumeDelegate> delegate( | 1336 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 1358 new GestureEventConsumeDelegate()); | 1337 new GestureEventConsumeDelegate()); |
| 1338 TimedEvents tes; |
| 1359 const int kWindowWidth = 123; | 1339 const int kWindowWidth = 123; |
| 1360 const int kWindowHeight = 45; | 1340 const int kWindowHeight = 45; |
| 1361 const int kTouchId = 2; | 1341 const int kTouchId = 2; |
| 1362 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); | 1342 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); |
| 1363 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 1343 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 1364 delegate.get(), -1234, bounds, root_window())); | 1344 delegate.get(), -1234, bounds, root_window())); |
| 1365 | 1345 |
| 1366 delegate->Reset(); | 1346 delegate->Reset(); |
| 1367 | 1347 |
| 1368 TimerTestGestureRecognizer* gesture_recognizer = | 1348 TimerTestGestureRecognizer* gesture_recognizer = |
| 1369 new TimerTestGestureRecognizer(); | 1349 new TimerTestGestureRecognizer(); |
| 1370 | 1350 |
| 1371 ScopedGestureRecognizerSetter gr_setter(gesture_recognizer); | 1351 ScopedGestureRecognizerSetter gr_setter(gesture_recognizer); |
| 1372 | 1352 |
| 1373 ui::TouchEvent press1(ui::ET_TOUCH_PRESSED, | 1353 ui::TouchEvent press1(ui::ET_TOUCH_PRESSED, gfx::Point(101, 201), |
| 1374 gfx::Point(101, 201), | 1354 kTouchId, tes.Now()); |
| 1375 kTouchId, | |
| 1376 ui::EventTimeForNow()); | |
| 1377 DispatchEventUsingWindowDispatcher(&press1); | 1355 DispatchEventUsingWindowDispatcher(&press1); |
| 1378 EXPECT_TRUE(delegate->tap_down()); | 1356 EXPECT_TRUE(delegate->tap_down()); |
| 1379 EXPECT_TRUE(delegate->begin()); | 1357 EXPECT_TRUE(delegate->begin()); |
| 1380 EXPECT_FALSE(delegate->tap_cancel()); | 1358 EXPECT_FALSE(delegate->tap_cancel()); |
| 1381 | 1359 |
| 1382 // We haven't pressed long enough for a long press to occur | 1360 // We haven't pressed long enough for a long press to occur |
| 1383 EXPECT_FALSE(delegate->long_press()); | 1361 EXPECT_FALSE(delegate->long_press()); |
| 1384 | 1362 |
| 1385 // Wait until the timer runs out | 1363 // Wait until the timer runs out |
| 1386 delegate->WaitUntilReceivedGesture(ui::ET_GESTURE_LONG_PRESS); | 1364 delegate->WaitUntilReceivedGesture(ui::ET_GESTURE_LONG_PRESS); |
| 1387 EXPECT_TRUE(delegate->long_press()); | 1365 EXPECT_TRUE(delegate->long_press()); |
| 1388 EXPECT_FALSE(delegate->tap_cancel()); | 1366 EXPECT_FALSE(delegate->tap_cancel()); |
| 1389 | 1367 |
| 1390 delegate->Reset(); | 1368 delegate->Reset(); |
| 1391 ui::TouchEvent release1(ui::ET_TOUCH_RELEASED, | 1369 ui::TouchEvent release1(ui::ET_TOUCH_RELEASED, gfx::Point(101, 201), |
| 1392 gfx::Point(101, 201), | 1370 kTouchId, tes.Now()); |
| 1393 kTouchId, | |
| 1394 ui::EventTimeForNow()); | |
| 1395 DispatchEventUsingWindowDispatcher(&release1); | 1371 DispatchEventUsingWindowDispatcher(&release1); |
| 1396 EXPECT_FALSE(delegate->long_press()); | 1372 EXPECT_FALSE(delegate->long_press()); |
| 1397 | 1373 |
| 1398 // Note the tap cancel isn't dispatched until the release | 1374 // Note the tap down isn't cancelled until the release |
| 1399 EXPECT_TRUE(delegate->tap_cancel()); | 1375 EXPECT_TRUE(delegate->tap_cancel()); |
| 1400 EXPECT_FALSE(delegate->tap()); | |
| 1401 } | 1376 } |
| 1402 | 1377 |
| 1403 // Check that scrolling cancels a long press | 1378 // Check that scrolling cancels a long press |
| 1404 TEST_P(GestureRecognizerTest, GestureEventLongPressCancelledByScroll) { | 1379 TEST_F(GestureRecognizerTest, GestureEventLongPressCancelledByScroll) { |
| 1405 scoped_ptr<GestureEventConsumeDelegate> delegate( | 1380 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 1406 new GestureEventConsumeDelegate()); | 1381 new GestureEventConsumeDelegate()); |
| 1407 TimedEvents tes; | 1382 TimedEvents tes; |
| 1408 ui::GestureConfiguration::set_long_press_time_in_seconds(.01); | 1383 ui::GestureConfiguration::set_long_press_time_in_seconds(.01); |
| 1409 const int kWindowWidth = 123; | 1384 const int kWindowWidth = 123; |
| 1410 const int kWindowHeight = 45; | 1385 const int kWindowHeight = 45; |
| 1411 const int kTouchId = 6; | 1386 const int kTouchId = 6; |
| 1412 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); | 1387 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); |
| 1413 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 1388 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 1414 delegate.get(), -1234, bounds, root_window())); | 1389 delegate.get(), -1234, bounds, root_window())); |
| (...skipping 26 matching lines...) Expand all Loading... |
| 1441 | 1416 |
| 1442 delegate->Reset(); | 1417 delegate->Reset(); |
| 1443 ui::TouchEvent release1(ui::ET_TOUCH_RELEASED, gfx::Point(101, 201), | 1418 ui::TouchEvent release1(ui::ET_TOUCH_RELEASED, gfx::Point(101, 201), |
| 1444 kTouchId, tes.LeapForward(10)); | 1419 kTouchId, tes.LeapForward(10)); |
| 1445 DispatchEventUsingWindowDispatcher(&release1); | 1420 DispatchEventUsingWindowDispatcher(&release1); |
| 1446 EXPECT_FALSE(delegate->long_press()); | 1421 EXPECT_FALSE(delegate->long_press()); |
| 1447 EXPECT_FALSE(delegate->tap_cancel()); | 1422 EXPECT_FALSE(delegate->tap_cancel()); |
| 1448 } | 1423 } |
| 1449 | 1424 |
| 1450 // Check that appropriate touch events generate long tap events | 1425 // Check that appropriate touch events generate long tap events |
| 1451 TEST_P(GestureRecognizerTest, GestureEventLongTap) { | 1426 TEST_F(GestureRecognizerTest, GestureEventLongTap) { |
| 1452 scoped_ptr<GestureEventConsumeDelegate> delegate( | 1427 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 1453 new GestureEventConsumeDelegate()); | 1428 new GestureEventConsumeDelegate()); |
| 1429 TimedEvents tes; |
| 1454 const int kWindowWidth = 123; | 1430 const int kWindowWidth = 123; |
| 1455 const int kWindowHeight = 45; | 1431 const int kWindowHeight = 45; |
| 1456 const int kTouchId = 2; | 1432 const int kTouchId = 2; |
| 1457 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); | 1433 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); |
| 1458 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 1434 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 1459 delegate.get(), -1234, bounds, root_window())); | 1435 delegate.get(), -1234, bounds, root_window())); |
| 1460 | 1436 |
| 1461 delegate->Reset(); | 1437 delegate->Reset(); |
| 1462 | 1438 |
| 1463 TimerTestGestureRecognizer* gesture_recognizer = | 1439 TimerTestGestureRecognizer* gesture_recognizer = |
| 1464 new TimerTestGestureRecognizer(); | 1440 new TimerTestGestureRecognizer(); |
| 1465 | 1441 |
| 1466 ScopedGestureRecognizerSetter gr_setter(gesture_recognizer); | 1442 ScopedGestureRecognizerSetter gr_setter(gesture_recognizer); |
| 1467 | 1443 |
| 1468 ui::TouchEvent press1(ui::ET_TOUCH_PRESSED, | 1444 ui::TouchEvent press1(ui::ET_TOUCH_PRESSED, gfx::Point(101, 201), |
| 1469 gfx::Point(101, 201), | 1445 kTouchId, tes.Now()); |
| 1470 kTouchId, | |
| 1471 ui::EventTimeForNow()); | |
| 1472 DispatchEventUsingWindowDispatcher(&press1); | 1446 DispatchEventUsingWindowDispatcher(&press1); |
| 1473 EXPECT_TRUE(delegate->tap_down()); | 1447 EXPECT_TRUE(delegate->tap_down()); |
| 1474 EXPECT_TRUE(delegate->begin()); | 1448 EXPECT_TRUE(delegate->begin()); |
| 1475 EXPECT_FALSE(delegate->tap_cancel()); | 1449 EXPECT_FALSE(delegate->tap_cancel()); |
| 1476 | 1450 |
| 1477 // We haven't pressed long enough for a long press to occur | 1451 // We haven't pressed long enough for a long press to occur |
| 1478 EXPECT_FALSE(delegate->long_press()); | 1452 EXPECT_FALSE(delegate->long_press()); |
| 1479 | 1453 |
| 1480 // Wait until the timer runs out | 1454 // Wait until the timer runs out |
| 1481 delegate->WaitUntilReceivedGesture(ui::ET_GESTURE_LONG_PRESS); | 1455 delegate->WaitUntilReceivedGesture(ui::ET_GESTURE_LONG_PRESS); |
| 1482 EXPECT_TRUE(delegate->long_press()); | 1456 EXPECT_TRUE(delegate->long_press()); |
| 1483 EXPECT_FALSE(delegate->tap_cancel()); | 1457 EXPECT_FALSE(delegate->tap_cancel()); |
| 1484 | 1458 |
| 1485 delegate->Reset(); | 1459 delegate->Reset(); |
| 1486 ui::TouchEvent release1(ui::ET_TOUCH_RELEASED, | 1460 ui::TouchEvent release1(ui::ET_TOUCH_RELEASED, gfx::Point(101, 201), |
| 1487 gfx::Point(101, 201), | 1461 kTouchId, tes.Now()); |
| 1488 kTouchId, | |
| 1489 ui::EventTimeForNow()); | |
| 1490 DispatchEventUsingWindowDispatcher(&release1); | 1462 DispatchEventUsingWindowDispatcher(&release1); |
| 1491 EXPECT_FALSE(delegate->long_press()); | 1463 EXPECT_FALSE(delegate->long_press()); |
| 1492 EXPECT_TRUE(delegate->long_tap()); | 1464 EXPECT_TRUE(delegate->long_tap()); |
| 1493 | 1465 |
| 1494 // Note the tap cancel isn't dispatched until the release | 1466 // Note the tap down isn't cancelled until the release |
| 1495 EXPECT_TRUE(delegate->tap_cancel()); | 1467 EXPECT_TRUE(delegate->tap_cancel()); |
| 1496 EXPECT_FALSE(delegate->tap()); | |
| 1497 } | 1468 } |
| 1498 | 1469 |
| 1499 // Check that second tap cancels a long press | 1470 // Check that second tap cancels a long press |
| 1500 TEST_P(GestureRecognizerTest, GestureEventLongPressCancelledBySecondTap) { | 1471 TEST_F(GestureRecognizerTest, GestureEventLongPressCancelledBySecondTap) { |
| 1501 // TODO(tdresser): enable this test with unified GR once two finger tap is | |
| 1502 // supported. See crbug.com/354396. | |
| 1503 if (UsingUnifiedGR()) | |
| 1504 return; | |
| 1505 | |
| 1506 scoped_ptr<GestureEventConsumeDelegate> delegate( | 1472 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 1507 new GestureEventConsumeDelegate()); | 1473 new GestureEventConsumeDelegate()); |
| 1508 TimedEvents tes; | 1474 TimedEvents tes; |
| 1509 ui::GestureConfiguration::set_long_press_time_in_seconds(.01); | 1475 ui::GestureConfiguration::set_long_press_time_in_seconds(.01); |
| 1510 const int kWindowWidth = 300; | 1476 const int kWindowWidth = 300; |
| 1511 const int kWindowHeight = 400; | 1477 const int kWindowHeight = 400; |
| 1512 const int kTouchId1 = 8; | 1478 const int kTouchId1 = 8; |
| 1513 const int kTouchId2 = 2; | 1479 const int kTouchId2 = 2; |
| 1514 gfx::Rect bounds(5, 5, kWindowWidth, kWindowHeight); | 1480 gfx::Rect bounds(5, 5, kWindowWidth, kWindowHeight); |
| 1515 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 1481 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1552 ui::TouchEvent release1(ui::ET_TOUCH_RELEASED, gfx::Point(101, 201), | 1518 ui::TouchEvent release1(ui::ET_TOUCH_RELEASED, gfx::Point(101, 201), |
| 1553 kTouchId1, tes.Now()); | 1519 kTouchId1, tes.Now()); |
| 1554 DispatchEventUsingWindowDispatcher(&release1); | 1520 DispatchEventUsingWindowDispatcher(&release1); |
| 1555 EXPECT_FALSE(delegate->long_press()); | 1521 EXPECT_FALSE(delegate->long_press()); |
| 1556 EXPECT_TRUE(delegate->two_finger_tap()); | 1522 EXPECT_TRUE(delegate->two_finger_tap()); |
| 1557 EXPECT_FALSE(delegate->tap_cancel()); | 1523 EXPECT_FALSE(delegate->tap_cancel()); |
| 1558 } | 1524 } |
| 1559 | 1525 |
| 1560 // Check that horizontal scroll gestures cause scrolls on horizontal rails. | 1526 // Check that horizontal scroll gestures cause scrolls on horizontal rails. |
| 1561 // Also tests that horizontal rails can be broken. | 1527 // Also tests that horizontal rails can be broken. |
| 1562 TEST_P(GestureRecognizerTest, GestureEventHorizontalRailScroll) { | 1528 TEST_F(GestureRecognizerTest, GestureEventHorizontalRailScroll) { |
| 1563 scoped_ptr<GestureEventConsumeDelegate> delegate( | 1529 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 1564 new GestureEventConsumeDelegate()); | 1530 new GestureEventConsumeDelegate()); |
| 1565 TimedEvents tes; | 1531 TimedEvents tes; |
| 1566 const int kTouchId = 7; | 1532 const int kTouchId = 7; |
| 1567 gfx::Rect bounds(0, 0, 1000, 1000); | 1533 gfx::Rect bounds(0, 0, 1000, 1000); |
| 1568 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 1534 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 1569 delegate.get(), -1234, bounds, root_window())); | 1535 delegate.get(), -1234, bounds, root_window())); |
| 1570 | 1536 |
| 1571 ui::TouchEvent press(ui::ET_TOUCH_PRESSED, gfx::Point(0, 0), | 1537 ui::TouchEvent press(ui::ET_TOUCH_PRESSED, gfx::Point(0, 0), |
| 1572 kTouchId, tes.Now()); | 1538 kTouchId, tes.Now()); |
| 1573 DispatchEventUsingWindowDispatcher(&press); | 1539 DispatchEventUsingWindowDispatcher(&press); |
| 1574 | 1540 |
| 1575 // Get rid of touch slop. | 1541 // Get rid of touch slop. |
| 1576 ui::TouchEvent move(ui::ET_TOUCH_MOVED, gfx::Point(5, 0), | 1542 ui::TouchEvent move(ui::ET_TOUCH_MOVED, gfx::Point(5, 0), |
| 1577 kTouchId, tes.Now()); | 1543 kTouchId, tes.Now()); |
| 1578 | 1544 |
| 1579 DispatchEventUsingWindowDispatcher(&move); | 1545 DispatchEventUsingWindowDispatcher(&move); |
| 1580 delegate->Reset(); | 1546 delegate->Reset(); |
| 1581 | 1547 |
| 1582 // Move the touch-point horizontally enough that it is considered a | 1548 // Move the touch-point horizontally enough that it is considered a |
| 1583 // horizontal scroll. | 1549 // horizontal scroll. |
| 1584 tes.SendScrollEvent(event_processor(), 25, 0, kTouchId, delegate.get()); | 1550 tes.SendScrollEvent(event_processor(), 25, 1, kTouchId, delegate.get()); |
| 1585 EXPECT_EQ(0, delegate->scroll_y()); | 1551 EXPECT_EQ(0, delegate->scroll_y()); |
| 1586 EXPECT_EQ(20, delegate->scroll_x()); | 1552 EXPECT_EQ(20, delegate->scroll_x()); |
| 1587 | 1553 |
| 1588 tes.SendScrollEvent(event_processor(), 30, 6, kTouchId, delegate.get()); | 1554 tes.SendScrollEvent(event_processor(), 30, 6, kTouchId, delegate.get()); |
| 1589 EXPECT_TRUE(delegate->scroll_update()); | 1555 EXPECT_TRUE(delegate->scroll_update()); |
| 1590 EXPECT_EQ(5, delegate->scroll_x()); | 1556 EXPECT_EQ(5, delegate->scroll_x()); |
| 1591 // y shouldn't change, as we're on a horizontal rail. | 1557 // y shouldn't change, as we're on a horizontal rail. |
| 1592 EXPECT_EQ(0, delegate->scroll_y()); | 1558 EXPECT_EQ(0, delegate->scroll_y()); |
| 1593 | 1559 |
| 1594 // Send enough information that a velocity can be calculated for the gesture, | 1560 // Send enough information that a velocity can be calculated for the gesture, |
| 1595 // and we can break the rail | 1561 // and we can break the rail |
| 1596 tes.SendScrollEvents(event_processor(), 1, 1, | 1562 tes.SendScrollEvents(event_processor(), 1, 1, |
| 1597 6, 100, kTouchId, 1, | 1563 6, 100, kTouchId, 1, |
| 1598 ui::GestureConfiguration::points_buffered_for_velocity(), | 1564 ui::GestureConfiguration::points_buffered_for_velocity(), |
| 1599 delegate.get()); | 1565 delegate.get()); |
| 1600 | 1566 |
| 1601 tes.SendScrollEvent(event_processor(), 5, 0, kTouchId, delegate.get()); | 1567 tes.SendScrollEvent(event_processor(), 5, 0, kTouchId, delegate.get()); |
| 1602 tes.SendScrollEvent(event_processor(), 10, 5, kTouchId, delegate.get()); | 1568 tes.SendScrollEvent(event_processor(), 10, 5, kTouchId, delegate.get()); |
| 1603 | 1569 |
| 1604 // The rail should be broken | 1570 // The rail should be broken |
| 1605 EXPECT_TRUE(delegate->scroll_update()); | 1571 EXPECT_TRUE(delegate->scroll_update()); |
| 1606 EXPECT_EQ(5, delegate->scroll_x()); | 1572 EXPECT_EQ(5, delegate->scroll_x()); |
| 1607 EXPECT_EQ(5, delegate->scroll_y()); | 1573 EXPECT_EQ(5, delegate->scroll_y()); |
| 1608 } | 1574 } |
| 1609 | 1575 |
| 1610 // Check that vertical scroll gestures cause scrolls on vertical rails. | 1576 // Check that vertical scroll gestures cause scrolls on vertical rails. |
| 1611 // Also tests that vertical rails can be broken. | 1577 // Also tests that vertical rails can be broken. |
| 1612 TEST_P(GestureRecognizerTest, GestureEventVerticalRailScroll) { | 1578 TEST_F(GestureRecognizerTest, GestureEventVerticalRailScroll) { |
| 1613 scoped_ptr<GestureEventConsumeDelegate> delegate( | 1579 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 1614 new GestureEventConsumeDelegate()); | 1580 new GestureEventConsumeDelegate()); |
| 1615 TimedEvents tes; | 1581 TimedEvents tes; |
| 1616 const int kTouchId = 7; | 1582 const int kTouchId = 7; |
| 1617 gfx::Rect bounds(0, 0, 1000, 1000); | 1583 gfx::Rect bounds(0, 0, 1000, 1000); |
| 1618 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 1584 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 1619 delegate.get(), -1234, bounds, root_window())); | 1585 delegate.get(), -1234, bounds, root_window())); |
| 1620 | 1586 |
| 1621 ui::TouchEvent press(ui::ET_TOUCH_PRESSED, gfx::Point(0, 0), | 1587 ui::TouchEvent press(ui::ET_TOUCH_PRESSED, gfx::Point(0, 0), |
| 1622 kTouchId, tes.Now()); | 1588 kTouchId, tes.Now()); |
| 1623 DispatchEventUsingWindowDispatcher(&press); | 1589 DispatchEventUsingWindowDispatcher(&press); |
| 1624 | 1590 |
| 1625 // Get rid of touch slop. | 1591 // Get rid of touch slop. |
| 1626 ui::TouchEvent move(ui::ET_TOUCH_MOVED, gfx::Point(0, 5), | 1592 ui::TouchEvent move(ui::ET_TOUCH_MOVED, gfx::Point(0, 5), |
| 1627 kTouchId, tes.Now()); | 1593 kTouchId, tes.Now()); |
| 1628 DispatchEventUsingWindowDispatcher(&move); | 1594 DispatchEventUsingWindowDispatcher(&move); |
| 1629 delegate->Reset(); | 1595 delegate->Reset(); |
| 1630 | 1596 |
| 1631 // Move the touch-point vertically enough that it is considered a | 1597 // Move the touch-point vertically enough that it is considered a |
| 1632 // vertical scroll. | 1598 // vertical scroll. |
| 1633 tes.SendScrollEvent(event_processor(), 0, 25, kTouchId, delegate.get()); | 1599 tes.SendScrollEvent(event_processor(), 1, 25, kTouchId, delegate.get()); |
| 1634 EXPECT_EQ(0, delegate->scroll_x()); | 1600 EXPECT_EQ(0, delegate->scroll_x()); |
| 1635 EXPECT_EQ(20, delegate->scroll_y()); | 1601 EXPECT_EQ(20, delegate->scroll_y()); |
| 1636 | 1602 |
| 1637 tes.SendScrollEvent(event_processor(), 6, 30, kTouchId, delegate.get()); | 1603 tes.SendScrollEvent(event_processor(), 6, 30, kTouchId, delegate.get()); |
| 1638 EXPECT_TRUE(delegate->scroll_update()); | 1604 EXPECT_TRUE(delegate->scroll_update()); |
| 1639 EXPECT_EQ(5, delegate->scroll_y()); | 1605 EXPECT_EQ(5, delegate->scroll_y()); |
| 1640 // x shouldn't change, as we're on a vertical rail. | 1606 // x shouldn't change, as we're on a vertical rail. |
| 1641 EXPECT_EQ(0, delegate->scroll_x()); | 1607 EXPECT_EQ(0, delegate->scroll_x()); |
| 1642 EXPECT_EQ(0, delegate->scroll_velocity_x()); | 1608 EXPECT_EQ(0, delegate->scroll_velocity_x()); |
| 1643 | 1609 |
| 1644 // Send enough information that a velocity can be calculated for the gesture, | 1610 // Send enough information that a velocity can be calculated for the gesture, |
| 1645 // and we can break the rail | 1611 // and we can break the rail |
| 1646 tes.SendScrollEvents(event_processor(), 1, 6, | 1612 tes.SendScrollEvents(event_processor(), 1, 6, |
| 1647 100, 1, kTouchId, 1, | 1613 100, 1, kTouchId, 1, |
| 1648 ui::GestureConfiguration::points_buffered_for_velocity(), | 1614 ui::GestureConfiguration::points_buffered_for_velocity(), |
| 1649 delegate.get()); | 1615 delegate.get()); |
| 1650 | 1616 |
| 1651 tes.SendScrollEvent(event_processor(), 0, 5, kTouchId, delegate.get()); | 1617 tes.SendScrollEvent(event_processor(), 0, 5, kTouchId, delegate.get()); |
| 1652 tes.SendScrollEvent(event_processor(), 5, 10, kTouchId, delegate.get()); | 1618 tes.SendScrollEvent(event_processor(), 5, 10, kTouchId, delegate.get()); |
| 1653 | 1619 |
| 1654 // The rail should be broken | 1620 // The rail should be broken |
| 1655 EXPECT_TRUE(delegate->scroll_update()); | 1621 EXPECT_TRUE(delegate->scroll_update()); |
| 1656 EXPECT_EQ(5, delegate->scroll_x()); | 1622 EXPECT_EQ(5, delegate->scroll_x()); |
| 1657 EXPECT_EQ(5, delegate->scroll_y()); | 1623 EXPECT_EQ(5, delegate->scroll_y()); |
| 1658 } | 1624 } |
| 1659 | 1625 |
| 1660 TEST_P(GestureRecognizerTest, GestureTapFollowedByScroll) { | 1626 TEST_F(GestureRecognizerTest, GestureTapFollowedByScroll) { |
| 1661 // We'll start by moving the touch point by (5, 5). We want all of that | 1627 // We'll start by moving the touch point by (5, 5). We want all of that |
| 1662 // distance to be consumed by the slop, so we set the slop radius to | 1628 // distance to be consumed by the slop, so we set the slop radius to |
| 1663 // sqrt(5 * 5 + 5 * 5). | 1629 // sqrt(5 * 5 + 5 * 5). |
| 1664 ui::GestureConfiguration::set_max_touch_move_in_pixels_for_click( | 1630 ui::GestureConfiguration::set_max_touch_move_in_pixels_for_click( |
| 1665 sqrt(static_cast<double>(5 * 5 + 5 * 5))); | 1631 sqrt(static_cast<double>(5 * 5 + 5 * 5))); |
| 1666 | 1632 |
| 1667 // First, tap. Then, do a scroll using the same touch-id. | 1633 // First, tap. Then, do a scroll using the same touch-id. |
| 1668 scoped_ptr<GestureEventConsumeDelegate> delegate( | 1634 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 1669 new GestureEventConsumeDelegate()); | 1635 new GestureEventConsumeDelegate()); |
| 1670 TimedEvents tes; | 1636 TimedEvents tes; |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1706 kTouchId, tes.LeapForward(1000)); | 1672 kTouchId, tes.LeapForward(1000)); |
| 1707 DispatchEventUsingWindowDispatcher(&press1); | 1673 DispatchEventUsingWindowDispatcher(&press1); |
| 1708 EXPECT_FALSE(delegate->tap()); | 1674 EXPECT_FALSE(delegate->tap()); |
| 1709 EXPECT_TRUE(delegate->tap_down()); | 1675 EXPECT_TRUE(delegate->tap_down()); |
| 1710 EXPECT_FALSE(delegate->tap_cancel()); | 1676 EXPECT_FALSE(delegate->tap_cancel()); |
| 1711 EXPECT_FALSE(delegate->scroll_begin()); | 1677 EXPECT_FALSE(delegate->scroll_begin()); |
| 1712 EXPECT_FALSE(delegate->scroll_update()); | 1678 EXPECT_FALSE(delegate->scroll_update()); |
| 1713 EXPECT_FALSE(delegate->scroll_end()); | 1679 EXPECT_FALSE(delegate->scroll_end()); |
| 1714 | 1680 |
| 1715 // Get rid of touch slop. | 1681 // Get rid of touch slop. |
| 1716 ui::TouchEvent move_remove_slop(ui::ET_TOUCH_MOVED, gfx::Point(116, 216), | 1682 ui::TouchEvent move_remove_slop(ui::ET_TOUCH_MOVED, gfx::Point(106, 206), |
| 1717 kTouchId, tes.Now()); | 1683 kTouchId, tes.Now()); |
| 1718 DispatchEventUsingWindowDispatcher(&move_remove_slop); | 1684 DispatchEventUsingWindowDispatcher(&move_remove_slop); |
| 1719 EXPECT_TRUE(delegate->tap_cancel()); | 1685 EXPECT_TRUE(delegate->tap_cancel()); |
| 1720 EXPECT_TRUE(delegate->scroll_begin()); | 1686 EXPECT_TRUE(delegate->scroll_begin()); |
| 1721 EXPECT_TRUE(delegate->scroll_update()); | 1687 EXPECT_FALSE(delegate->scroll_update()); |
| 1722 EXPECT_EQ(15, delegate->scroll_x_hint()); | 1688 EXPECT_EQ(5, delegate->scroll_x_hint()); |
| 1723 EXPECT_EQ(15, delegate->scroll_y_hint()); | 1689 EXPECT_EQ(5, delegate->scroll_y_hint()); |
| 1724 | 1690 |
| 1725 delegate->Reset(); | 1691 delegate->Reset(); |
| 1726 | 1692 |
| 1727 // Move the touch-point enough so that it is considered as a scroll. This | 1693 // Move the touch-point enough so that it is considered as a scroll. This |
| 1728 // should generate both SCROLL_BEGIN and SCROLL_UPDATE gestures. | 1694 // should generate both SCROLL_BEGIN and SCROLL_UPDATE gestures. |
| 1729 // The first movement is diagonal, to ensure that we have a free scroll, | 1695 // The first movement is diagonal, to ensure that we have a free scroll, |
| 1730 // and not a rail scroll. | 1696 // and not a rail scroll. |
| 1731 delegate->Reset(); | 1697 delegate->Reset(); |
| 1732 ui::TouchEvent move(ui::ET_TOUCH_MOVED, gfx::Point(135, 235), | 1698 ui::TouchEvent move(ui::ET_TOUCH_MOVED, gfx::Point(135, 235), |
| 1733 kTouchId, tes.Now()); | 1699 kTouchId, tes.Now()); |
| 1734 DispatchEventUsingWindowDispatcher(&move); | 1700 DispatchEventUsingWindowDispatcher(&move); |
| 1735 EXPECT_FALSE(delegate->tap()); | 1701 EXPECT_FALSE(delegate->tap()); |
| 1736 EXPECT_FALSE(delegate->tap_down()); | 1702 EXPECT_FALSE(delegate->tap_down()); |
| 1737 EXPECT_FALSE(delegate->tap_cancel()); | 1703 EXPECT_FALSE(delegate->tap_cancel()); |
| 1738 EXPECT_FALSE(delegate->scroll_begin()); | 1704 EXPECT_FALSE(delegate->scroll_begin()); |
| 1739 EXPECT_TRUE(delegate->scroll_update()); | 1705 EXPECT_TRUE(delegate->scroll_update()); |
| 1740 EXPECT_FALSE(delegate->scroll_end()); | 1706 EXPECT_FALSE(delegate->scroll_end()); |
| 1741 EXPECT_EQ(19, delegate->scroll_x()); | 1707 EXPECT_EQ(29, delegate->scroll_x()); |
| 1742 EXPECT_EQ(19, delegate->scroll_y()); | 1708 EXPECT_EQ(29, delegate->scroll_y()); |
| 1743 | 1709 |
| 1744 // Move some more to generate a few more scroll updates. | 1710 // Move some more to generate a few more scroll updates. |
| 1745 delegate->Reset(); | 1711 delegate->Reset(); |
| 1746 ui::TouchEvent move1(ui::ET_TOUCH_MOVED, gfx::Point(115, 216), | 1712 ui::TouchEvent move1(ui::ET_TOUCH_MOVED, gfx::Point(115, 216), |
| 1747 kTouchId, tes.Now()); | 1713 kTouchId, tes.Now()); |
| 1748 DispatchEventUsingWindowDispatcher(&move1); | 1714 DispatchEventUsingWindowDispatcher(&move1); |
| 1749 EXPECT_FALSE(delegate->tap()); | 1715 EXPECT_FALSE(delegate->tap()); |
| 1750 EXPECT_FALSE(delegate->tap_down()); | 1716 EXPECT_FALSE(delegate->tap_down()); |
| 1751 EXPECT_FALSE(delegate->tap_cancel()); | 1717 EXPECT_FALSE(delegate->tap_cancel()); |
| 1752 EXPECT_FALSE(delegate->scroll_begin()); | 1718 EXPECT_FALSE(delegate->scroll_begin()); |
| (...skipping 24 matching lines...) Expand all Loading... |
| 1777 DispatchEventUsingWindowDispatcher(&release1); | 1743 DispatchEventUsingWindowDispatcher(&release1); |
| 1778 EXPECT_FALSE(delegate->tap()); | 1744 EXPECT_FALSE(delegate->tap()); |
| 1779 EXPECT_FALSE(delegate->tap_down()); | 1745 EXPECT_FALSE(delegate->tap_down()); |
| 1780 EXPECT_FALSE(delegate->tap_cancel()); | 1746 EXPECT_FALSE(delegate->tap_cancel()); |
| 1781 EXPECT_FALSE(delegate->scroll_begin()); | 1747 EXPECT_FALSE(delegate->scroll_begin()); |
| 1782 EXPECT_FALSE(delegate->scroll_update()); | 1748 EXPECT_FALSE(delegate->scroll_update()); |
| 1783 EXPECT_FALSE(delegate->scroll_end()); | 1749 EXPECT_FALSE(delegate->scroll_end()); |
| 1784 EXPECT_TRUE(delegate->fling()); | 1750 EXPECT_TRUE(delegate->fling()); |
| 1785 } | 1751 } |
| 1786 | 1752 |
| 1787 TEST_P(GestureRecognizerTest, AsynchronousGestureRecognition) { | 1753 TEST_F(GestureRecognizerTest, AsynchronousGestureRecognition) { |
| 1788 // TODO(tdresser): enable this test with unified GR once two finger tap is | |
| 1789 // supported. See crbug.com/354396. | |
| 1790 if (UsingUnifiedGR()) | |
| 1791 return; | |
| 1792 scoped_ptr<QueueTouchEventDelegate> queued_delegate( | 1754 scoped_ptr<QueueTouchEventDelegate> queued_delegate( |
| 1793 new QueueTouchEventDelegate(host()->dispatcher())); | 1755 new QueueTouchEventDelegate(host()->dispatcher())); |
| 1794 const int kWindowWidth = 123; | 1756 const int kWindowWidth = 123; |
| 1795 const int kWindowHeight = 45; | 1757 const int kWindowHeight = 45; |
| 1796 const int kTouchId1 = 6; | 1758 const int kTouchId1 = 6; |
| 1797 const int kTouchId2 = 4; | 1759 const int kTouchId2 = 4; |
| 1798 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); | 1760 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); |
| 1799 scoped_ptr<aura::Window> queue(CreateTestWindowWithDelegate( | 1761 scoped_ptr<aura::Window> queue(CreateTestWindowWithDelegate( |
| 1800 queued_delegate.get(), -1234, bounds, root_window())); | 1762 queued_delegate.get(), -1234, bounds, root_window())); |
| 1801 | 1763 |
| (...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1973 EXPECT_FALSE(queued_delegate->end()); | 1935 EXPECT_FALSE(queued_delegate->end()); |
| 1974 EXPECT_TRUE(queued_delegate->scroll_begin()); | 1936 EXPECT_TRUE(queued_delegate->scroll_begin()); |
| 1975 EXPECT_FALSE(queued_delegate->scroll_update()); | 1937 EXPECT_FALSE(queued_delegate->scroll_update()); |
| 1976 EXPECT_FALSE(queued_delegate->scroll_end()); | 1938 EXPECT_FALSE(queued_delegate->scroll_end()); |
| 1977 EXPECT_TRUE(queued_delegate->pinch_begin()); | 1939 EXPECT_TRUE(queued_delegate->pinch_begin()); |
| 1978 EXPECT_FALSE(queued_delegate->pinch_update()); | 1940 EXPECT_FALSE(queued_delegate->pinch_update()); |
| 1979 EXPECT_FALSE(queued_delegate->pinch_end()); | 1941 EXPECT_FALSE(queued_delegate->pinch_end()); |
| 1980 } | 1942 } |
| 1981 | 1943 |
| 1982 // Check that appropriate touch events generate pinch gesture events. | 1944 // Check that appropriate touch events generate pinch gesture events. |
| 1983 TEST_P(GestureRecognizerTest, GestureEventPinchFromScroll) { | 1945 TEST_F(GestureRecognizerTest, GestureEventPinchFromScroll) { |
| 1984 // Disabled for unified GR due to differences in when pinch begin is sent. The | |
| 1985 // Aura GR sends it earlier than is necessary. | |
| 1986 if (UsingUnifiedGR()) | |
| 1987 return; | |
| 1988 | |
| 1989 scoped_ptr<GestureEventConsumeDelegate> delegate( | 1946 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 1990 new GestureEventConsumeDelegate()); | 1947 new GestureEventConsumeDelegate()); |
| 1991 TimedEvents tes; | 1948 TimedEvents tes; |
| 1992 const int kWindowWidth = 300; | 1949 const int kWindowWidth = 300; |
| 1993 const int kWindowHeight = 400; | 1950 const int kWindowHeight = 400; |
| 1994 const int kTouchId1 = 5; | 1951 const int kTouchId1 = 5; |
| 1995 const int kTouchId2 = 3; | 1952 const int kTouchId2 = 3; |
| 1996 gfx::Rect bounds(5, 5, kWindowWidth, kWindowHeight); | 1953 gfx::Rect bounds(5, 5, kWindowWidth, kWindowHeight); |
| 1997 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 1954 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 1998 delegate.get(), -1234, bounds, root_window())); | 1955 delegate.get(), -1234, bounds, root_window())); |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2063 | 2020 |
| 2064 // Move the second finger. This should still generate a scroll. | 2021 // Move the second finger. This should still generate a scroll. |
| 2065 delegate->Reset(); | 2022 delegate->Reset(); |
| 2066 ui::TouchEvent move5(ui::ET_TOUCH_MOVED, gfx::Point(25, 10), | 2023 ui::TouchEvent move5(ui::ET_TOUCH_MOVED, gfx::Point(25, 10), |
| 2067 kTouchId2, tes.Now()); | 2024 kTouchId2, tes.Now()); |
| 2068 DispatchEventUsingWindowDispatcher(&move5); | 2025 DispatchEventUsingWindowDispatcher(&move5); |
| 2069 EXPECT_1_EVENT(delegate->events(), ui::ET_GESTURE_SCROLL_UPDATE); | 2026 EXPECT_1_EVENT(delegate->events(), ui::ET_GESTURE_SCROLL_UPDATE); |
| 2070 EXPECT_TRUE(delegate->bounding_box().IsEmpty()); | 2027 EXPECT_TRUE(delegate->bounding_box().IsEmpty()); |
| 2071 } | 2028 } |
| 2072 | 2029 |
| 2073 TEST_P(GestureRecognizerTest, GestureEventPinchFromScrollFromPinch) { | 2030 TEST_F(GestureRecognizerTest, GestureEventPinchFromScrollFromPinch) { |
| 2074 scoped_ptr<GestureEventConsumeDelegate> delegate( | 2031 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 2075 new GestureEventConsumeDelegate()); | 2032 new GestureEventConsumeDelegate()); |
| 2076 TimedEvents tes; | 2033 TimedEvents tes; |
| 2077 const int kWindowWidth = 300; | 2034 const int kWindowWidth = 300; |
| 2078 const int kWindowHeight = 400; | 2035 const int kWindowHeight = 400; |
| 2079 const int kTouchId1 = 5; | 2036 const int kTouchId1 = 5; |
| 2080 const int kTouchId2 = 3; | 2037 const int kTouchId2 = 3; |
| 2081 gfx::Rect bounds(5, 5, kWindowWidth, kWindowHeight); | 2038 gfx::Rect bounds(5, 5, kWindowWidth, kWindowHeight); |
| 2082 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 2039 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 2083 delegate.get(), -1234, bounds, root_window())); | 2040 delegate.get(), -1234, bounds, root_window())); |
| (...skipping 27 matching lines...) Expand all Loading... |
| 2111 tes.SendScrollEvent(event_processor(), 130, 230, kTouchId2, delegate.get()); | 2068 tes.SendScrollEvent(event_processor(), 130, 230, kTouchId2, delegate.get()); |
| 2112 EXPECT_TRUE(delegate->scroll_update()); | 2069 EXPECT_TRUE(delegate->scroll_update()); |
| 2113 | 2070 |
| 2114 // Pinch again | 2071 // Pinch again |
| 2115 delegate->Reset(); | 2072 delegate->Reset(); |
| 2116 ui::TouchEvent press3(ui::ET_TOUCH_PRESSED, gfx::Point(10, 10), | 2073 ui::TouchEvent press3(ui::ET_TOUCH_PRESSED, gfx::Point(10, 10), |
| 2117 kTouchId1, tes.Now()); | 2074 kTouchId1, tes.Now()); |
| 2118 DispatchEventUsingWindowDispatcher(&press3); | 2075 DispatchEventUsingWindowDispatcher(&press3); |
| 2119 // Now the touch points are close. So we will go into two finger tap. | 2076 // Now the touch points are close. So we will go into two finger tap. |
| 2120 // Move the touch-point enough to break two-finger-tap and enter pinch. | 2077 // Move the touch-point enough to break two-finger-tap and enter pinch. |
| 2121 ui::TouchEvent move2(ui::ET_TOUCH_MOVED, gfx::Point(101, 50), | 2078 ui::TouchEvent move2(ui::ET_TOUCH_MOVED, gfx::Point(101, 202), |
| 2122 kTouchId1, tes.Now()); | 2079 kTouchId1, tes.Now()); |
| 2123 DispatchEventUsingWindowDispatcher(&move2); | 2080 DispatchEventUsingWindowDispatcher(&move2); |
| 2124 EXPECT_TRUE(delegate->pinch_begin()); | 2081 EXPECT_TRUE(delegate->pinch_begin()); |
| 2125 | 2082 |
| 2126 tes.SendScrollEvent(event_processor(), 300, 300, kTouchId1, delegate.get()); | 2083 tes.SendScrollEvent(event_processor(), 130, 230, kTouchId1, delegate.get()); |
| 2127 EXPECT_TRUE(delegate->pinch_update()); | 2084 EXPECT_TRUE(delegate->pinch_update()); |
| 2128 } | 2085 } |
| 2129 | 2086 |
| 2130 TEST_P(GestureRecognizerTest, GestureEventPinchFromTap) { | 2087 TEST_F(GestureRecognizerTest, GestureEventPinchFromTap) { |
| 2131 // TODO(tdresser): enable this test with unified GR once two finger tap. | |
| 2132 if (UsingUnifiedGR()) | |
| 2133 return; | |
| 2134 | |
| 2135 scoped_ptr<GestureEventConsumeDelegate> delegate( | 2088 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 2136 new GestureEventConsumeDelegate()); | 2089 new GestureEventConsumeDelegate()); |
| 2137 TimedEvents tes; | 2090 TimedEvents tes; |
| 2138 const int kWindowWidth = 300; | 2091 const int kWindowWidth = 300; |
| 2139 const int kWindowHeight = 400; | 2092 const int kWindowHeight = 400; |
| 2140 const int kTouchId1 = 3; | 2093 const int kTouchId1 = 3; |
| 2141 const int kTouchId2 = 5; | 2094 const int kTouchId2 = 5; |
| 2142 gfx::Rect bounds(5, 5, kWindowWidth, kWindowHeight); | 2095 gfx::Rect bounds(5, 5, kWindowWidth, kWindowHeight); |
| 2143 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 2096 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 2144 delegate.get(), -1234, bounds, root_window())); | 2097 delegate.get(), -1234, bounds, root_window())); |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2198 | 2151 |
| 2199 // Move the second finger. This should still generate a scroll. | 2152 // Move the second finger. This should still generate a scroll. |
| 2200 delegate->Reset(); | 2153 delegate->Reset(); |
| 2201 ui::TouchEvent move5(ui::ET_TOUCH_MOVED, gfx::Point(25, 10), | 2154 ui::TouchEvent move5(ui::ET_TOUCH_MOVED, gfx::Point(25, 10), |
| 2202 kTouchId2, tes.Now()); | 2155 kTouchId2, tes.Now()); |
| 2203 DispatchEventUsingWindowDispatcher(&move5); | 2156 DispatchEventUsingWindowDispatcher(&move5); |
| 2204 EXPECT_1_EVENT(delegate->events(), ui::ET_GESTURE_SCROLL_UPDATE); | 2157 EXPECT_1_EVENT(delegate->events(), ui::ET_GESTURE_SCROLL_UPDATE); |
| 2205 EXPECT_TRUE(delegate->bounding_box().IsEmpty()); | 2158 EXPECT_TRUE(delegate->bounding_box().IsEmpty()); |
| 2206 } | 2159 } |
| 2207 | 2160 |
| 2208 TEST_P(GestureRecognizerTest, GestureEventIgnoresDisconnectedEvents) { | 2161 TEST_F(GestureRecognizerTest, GestureEventIgnoresDisconnectedEvents) { |
| 2209 scoped_ptr<GestureEventConsumeDelegate> delegate( | 2162 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 2210 new GestureEventConsumeDelegate()); | 2163 new GestureEventConsumeDelegate()); |
| 2211 TimedEvents tes; | 2164 TimedEvents tes; |
| 2212 | 2165 |
| 2213 ui::TouchEvent release1(ui::ET_TOUCH_RELEASED, gfx::Point(101, 201), | 2166 ui::TouchEvent release1(ui::ET_TOUCH_RELEASED, gfx::Point(101, 201), |
| 2214 6, tes.Now()); | 2167 6, tes.Now()); |
| 2215 DispatchEventUsingWindowDispatcher(&release1); | 2168 DispatchEventUsingWindowDispatcher(&release1); |
| 2216 EXPECT_FALSE(delegate->tap()); | 2169 EXPECT_FALSE(delegate->tap()); |
| 2217 EXPECT_FALSE(delegate->tap_down()); | 2170 EXPECT_FALSE(delegate->tap_down()); |
| 2218 } | 2171 } |
| 2219 | 2172 |
| 2220 // Check that a touch is locked to the window of the closest current touch | 2173 // Check that a touch is locked to the window of the closest current touch |
| 2221 // within max_separation_for_gesture_touches_in_pixels | 2174 // within max_separation_for_gesture_touches_in_pixels |
| 2222 TEST_P(GestureRecognizerTest, GestureEventTouchLockSelectsCorrectWindow) { | 2175 TEST_F(GestureRecognizerTest, GestureEventTouchLockSelectsCorrectWindow) { |
| 2223 ui::GestureRecognizer* gesture_recognizer = new ui::GestureRecognizerImpl(); | 2176 ui::GestureRecognizer* gesture_recognizer = new ui::GestureRecognizerImpl(); |
| 2224 TimedEvents tes; | 2177 TimedEvents tes; |
| 2225 ScopedGestureRecognizerSetter gr_setter(gesture_recognizer); | 2178 ScopedGestureRecognizerSetter gr_setter(gesture_recognizer); |
| 2226 | 2179 |
| 2227 ui::GestureConsumer* target; | 2180 ui::GestureConsumer* target; |
| 2228 const int kNumWindows = 4; | 2181 const int kNumWindows = 4; |
| 2229 | 2182 |
| 2230 scoped_ptr<GestureEventConsumeDelegate*[]> delegates( | 2183 scoped_ptr<GestureEventConsumeDelegate*[]> delegates( |
| 2231 new GestureEventConsumeDelegate*[kNumWindows]); | 2184 new GestureEventConsumeDelegate*[kNumWindows]); |
| 2232 | 2185 |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2298 | 2251 |
| 2299 for (int i = 0; i < kNumWindows; ++i) { | 2252 for (int i = 0; i < kNumWindows; ++i) { |
| 2300 // Delete windows before deleting delegates. | 2253 // Delete windows before deleting delegates. |
| 2301 delete windows[i]; | 2254 delete windows[i]; |
| 2302 delete delegates[i]; | 2255 delete delegates[i]; |
| 2303 } | 2256 } |
| 2304 } | 2257 } |
| 2305 | 2258 |
| 2306 // Check that a touch's target will not be effected by a touch on a different | 2259 // Check that a touch's target will not be effected by a touch on a different |
| 2307 // screen. | 2260 // screen. |
| 2308 TEST_P(GestureRecognizerTest, GestureEventTouchLockIgnoresOtherScreens) { | 2261 TEST_F(GestureRecognizerTest, GestureEventTouchLockIgnoresOtherScreens) { |
| 2309 scoped_ptr<GestureEventConsumeDelegate> delegate( | 2262 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 2310 new GestureEventConsumeDelegate()); | 2263 new GestureEventConsumeDelegate()); |
| 2311 gfx::Rect bounds(0, 0, 10, 10); | 2264 gfx::Rect bounds(0, 0, 10, 10); |
| 2312 scoped_ptr<aura::Window> window( | 2265 scoped_ptr<aura::Window> window( |
| 2313 CreateTestWindowWithDelegate(delegate.get(), 0, bounds, root_window())); | 2266 CreateTestWindowWithDelegate(delegate.get(), 0, bounds, root_window())); |
| 2314 | 2267 |
| 2315 const int kTouchId1 = 8; | 2268 const int kTouchId1 = 8; |
| 2316 const int kTouchId2 = 2; | 2269 const int kTouchId2 = 2; |
| 2317 TimedEvents tes; | 2270 TimedEvents tes; |
| 2318 | 2271 |
| 2319 ui::TouchEvent press1(ui::ET_TOUCH_PRESSED, gfx::Point(5, 5), | 2272 ui::TouchEvent press1(ui::ET_TOUCH_PRESSED, gfx::Point(5, 5), |
| 2320 kTouchId1, tes.Now()); | 2273 kTouchId1, tes.Now()); |
| 2321 press1.set_source_device_id(1); | 2274 press1.set_source_device_id(1); |
| 2322 DispatchEventUsingWindowDispatcher(&press1); | 2275 DispatchEventUsingWindowDispatcher(&press1); |
| 2323 | 2276 |
| 2324 ui::TouchEvent press2(ui::ET_TOUCH_PRESSED, gfx::Point(20, 20), | 2277 ui::TouchEvent press2(ui::ET_TOUCH_PRESSED, gfx::Point(20, 20), |
| 2325 kTouchId2, tes.Now()); | 2278 kTouchId2, tes.Now()); |
| 2326 press2.set_source_device_id(2); | 2279 press2.set_source_device_id(2); |
| 2327 DispatchEventUsingWindowDispatcher(&press2); | 2280 DispatchEventUsingWindowDispatcher(&press2); |
| 2328 | 2281 |
| 2329 // The second press should not have been locked to the same target as the | 2282 // The second press should not have been locked to the same target as the |
| 2330 // first, as they occured on different displays. | 2283 // first, as they occured on different displays. |
| 2331 EXPECT_NE( | 2284 EXPECT_NE( |
| 2332 ui::GestureRecognizer::Get()->GetTouchLockedTarget(press1), | 2285 ui::GestureRecognizer::Get()->GetTouchLockedTarget(press1), |
| 2333 ui::GestureRecognizer::Get()->GetTouchLockedTarget(press2)); | 2286 ui::GestureRecognizer::Get()->GetTouchLockedTarget(press2)); |
| 2334 } | 2287 } |
| 2335 | 2288 |
| 2336 // Check that touch events outside the root window are still handled | 2289 // Check that touch events outside the root window are still handled |
| 2337 // by the root window's gesture sequence. | 2290 // by the root window's gesture sequence. |
| 2338 TEST_P(GestureRecognizerTest, GestureEventOutsideRootWindowTap) { | 2291 TEST_F(GestureRecognizerTest, GestureEventOutsideRootWindowTap) { |
| 2339 // TODO(tdresser): write a version of this test for the unified GR. | |
| 2340 if (UsingUnifiedGR()) | |
| 2341 return; | |
| 2342 | |
| 2343 TestGestureRecognizer* gesture_recognizer = | 2292 TestGestureRecognizer* gesture_recognizer = |
| 2344 new TestGestureRecognizer(); | 2293 new TestGestureRecognizer(); |
| 2345 TimedEvents tes; | 2294 TimedEvents tes; |
| 2346 ScopedGestureRecognizerSetter gr_setter(gesture_recognizer); | 2295 ScopedGestureRecognizerSetter gr_setter(gesture_recognizer); |
| 2347 | 2296 |
| 2348 scoped_ptr<aura::Window> window(CreateTestWindowWithBounds( | 2297 scoped_ptr<aura::Window> window(CreateTestWindowWithBounds( |
| 2349 gfx::Rect(-100, -100, 2000, 2000), root_window())); | 2298 gfx::Rect(-100, -100, 2000, 2000), root_window())); |
| 2350 | 2299 |
| 2351 ui::GestureSequence* window_gesture_sequence = | 2300 ui::GestureSequence* window_gesture_sequence = |
| 2352 gesture_recognizer->GetGestureSequenceForTesting(window.get()); | 2301 gesture_recognizer->GetGestureSequenceForTesting(window.get()); |
| 2353 | 2302 |
| 2354 ui::GestureSequence* root_window_gesture_sequence = | 2303 ui::GestureSequence* root_window_gesture_sequence = |
| 2355 gesture_recognizer->GetGestureSequenceForTesting(root_window()); | 2304 gesture_recognizer->GetGestureSequenceForTesting(root_window()); |
| 2356 | 2305 |
| 2357 gfx::Point pos1(-10, -10); | 2306 gfx::Point pos1(-10, -10); |
| 2358 ui::TouchEvent press1(ui::ET_TOUCH_PRESSED, pos1, 0, tes.Now()); | 2307 ui::TouchEvent press1(ui::ET_TOUCH_PRESSED, pos1, 0, tes.Now()); |
| 2359 DispatchEventUsingWindowDispatcher(&press1); | 2308 DispatchEventUsingWindowDispatcher(&press1); |
| 2360 | 2309 |
| 2361 gfx::Point pos2(1000, 1000); | 2310 gfx::Point pos2(1000, 1000); |
| 2362 ui::TouchEvent press2(ui::ET_TOUCH_PRESSED, pos2, 1, tes.Now()); | 2311 ui::TouchEvent press2(ui::ET_TOUCH_PRESSED, pos2, 1, tes.Now()); |
| 2363 DispatchEventUsingWindowDispatcher(&press2); | 2312 DispatchEventUsingWindowDispatcher(&press2); |
| 2364 | 2313 |
| 2365 // As these presses were outside the root window, they should be | 2314 // As these presses were outside the root window, they should be |
| 2366 // associated with the root window. | 2315 // associated with the root window. |
| 2367 EXPECT_EQ(0, window_gesture_sequence->point_count()); | 2316 EXPECT_EQ(0, window_gesture_sequence->point_count()); |
| 2368 EXPECT_EQ(2, root_window_gesture_sequence->point_count()); | 2317 EXPECT_EQ(2, root_window_gesture_sequence->point_count()); |
| 2369 } | 2318 } |
| 2370 | 2319 |
| 2371 TEST_P(GestureRecognizerTest, NoTapWithPreventDefaultedRelease) { | 2320 TEST_F(GestureRecognizerTest, NoTapWithPreventDefaultedRelease) { |
| 2372 scoped_ptr<QueueTouchEventDelegate> delegate( | 2321 scoped_ptr<QueueTouchEventDelegate> delegate( |
| 2373 new QueueTouchEventDelegate(host()->dispatcher())); | 2322 new QueueTouchEventDelegate(host()->dispatcher())); |
| 2374 TimedEvents tes; | 2323 TimedEvents tes; |
| 2375 const int kTouchId = 2; | 2324 const int kTouchId = 2; |
| 2376 gfx::Rect bounds(100, 200, 100, 100); | 2325 gfx::Rect bounds(100, 200, 100, 100); |
| 2377 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 2326 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 2378 delegate.get(), -1234, bounds, root_window())); | 2327 delegate.get(), -1234, bounds, root_window())); |
| 2379 delegate->set_window(window.get()); | 2328 delegate->set_window(window.get()); |
| 2380 | 2329 |
| 2381 delegate->Reset(); | 2330 delegate->Reset(); |
| 2382 ui::TouchEvent press(ui::ET_TOUCH_PRESSED, gfx::Point(101, 201), | 2331 ui::TouchEvent press(ui::ET_TOUCH_PRESSED, gfx::Point(101, 201), |
| 2383 kTouchId, tes.Now()); | 2332 kTouchId, tes.Now()); |
| 2384 DispatchEventUsingWindowDispatcher(&press); | 2333 DispatchEventUsingWindowDispatcher(&press); |
| 2385 ui::TouchEvent release(ui::ET_TOUCH_RELEASED, gfx::Point(101, 201), | 2334 ui::TouchEvent release(ui::ET_TOUCH_RELEASED, gfx::Point(101, 201), |
| 2386 kTouchId, tes.LeapForward(50)); | 2335 kTouchId, tes.LeapForward(50)); |
| 2387 DispatchEventUsingWindowDispatcher(&release); | 2336 DispatchEventUsingWindowDispatcher(&release); |
| 2388 | 2337 |
| 2389 delegate->Reset(); | 2338 delegate->Reset(); |
| 2390 delegate->ReceivedAck(); | 2339 delegate->ReceivedAck(); |
| 2391 EXPECT_TRUE(delegate->tap_down()); | 2340 EXPECT_TRUE(delegate->tap_down()); |
| 2392 delegate->Reset(); | 2341 delegate->Reset(); |
| 2393 delegate->ReceivedAckPreventDefaulted(); | 2342 delegate->ReceivedAckPreventDefaulted(); |
| 2394 EXPECT_FALSE(delegate->tap()); | 2343 EXPECT_FALSE(delegate->tap()); |
| 2395 EXPECT_TRUE(delegate->tap_cancel()); | 2344 EXPECT_TRUE(delegate->tap_cancel()); |
| 2396 } | 2345 } |
| 2397 | 2346 |
| 2398 TEST_P(GestureRecognizerTest, PinchScrollWithPreventDefaultedRelease) { | 2347 TEST_F(GestureRecognizerTest, PinchScrollWithPreventDefaultedRelease) { |
| 2399 // Disabled for unified GR due to differences in when pinch begin is sent. The | |
| 2400 // Aura GR sends it earlier than is necessary. | |
| 2401 if (UsingUnifiedGR()) | |
| 2402 return; | |
| 2403 | |
| 2404 scoped_ptr<QueueTouchEventDelegate> delegate( | 2348 scoped_ptr<QueueTouchEventDelegate> delegate( |
| 2405 new QueueTouchEventDelegate(host()->dispatcher())); | 2349 new QueueTouchEventDelegate(host()->dispatcher())); |
| 2406 TimedEvents tes; | 2350 TimedEvents tes; |
| 2407 const int kTouchId1 = 7; | 2351 const int kTouchId1 = 7; |
| 2408 const int kTouchId2 = 5; | 2352 const int kTouchId2 = 5; |
| 2409 gfx::Rect bounds(10, 20, 100, 100); | 2353 gfx::Rect bounds(10, 20, 100, 100); |
| 2410 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 2354 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 2411 delegate.get(), -1234, bounds, root_window())); | 2355 delegate.get(), -1234, bounds, root_window())); |
| 2412 delegate->set_window(window.get()); | 2356 delegate->set_window(window.get()); |
| 2413 | 2357 |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2487 delegate->ReceivedAckPreventDefaulted(); | 2431 delegate->ReceivedAckPreventDefaulted(); |
| 2488 EXPECT_TRUE(delegate->pinch_end()); | 2432 EXPECT_TRUE(delegate->pinch_end()); |
| 2489 EXPECT_TRUE(delegate->end()); | 2433 EXPECT_TRUE(delegate->end()); |
| 2490 | 2434 |
| 2491 delegate->Reset(); | 2435 delegate->Reset(); |
| 2492 delegate->ReceivedAckPreventDefaulted(); | 2436 delegate->ReceivedAckPreventDefaulted(); |
| 2493 EXPECT_TRUE(delegate->scroll_end()); | 2437 EXPECT_TRUE(delegate->scroll_end()); |
| 2494 EXPECT_TRUE(delegate->end()); | 2438 EXPECT_TRUE(delegate->end()); |
| 2495 } | 2439 } |
| 2496 | 2440 |
| 2497 TEST_P(GestureRecognizerTest, GestureEndLocation) { | 2441 TEST_F(GestureRecognizerTest, GestureEndLocation) { |
| 2498 GestureEventConsumeDelegate delegate; | 2442 GestureEventConsumeDelegate delegate; |
| 2499 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 2443 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 2500 &delegate, -1234, gfx::Rect(10, 10, 300, 300), root_window())); | 2444 &delegate, -1234, gfx::Rect(10, 10, 300, 300), root_window())); |
| 2501 EventGenerator generator(root_window(), window.get()); | 2445 EventGenerator generator(root_window(), window.get()); |
| 2502 const gfx::Point begin(20, 20); | 2446 const gfx::Point begin(20, 20); |
| 2503 const gfx::Point end(150, 150); | 2447 const gfx::Point end(150, 150); |
| 2504 const gfx::Vector2d window_offset = | 2448 const gfx::Vector2d window_offset = |
| 2505 window->bounds().origin().OffsetFromOrigin(); | 2449 window->bounds().origin().OffsetFromOrigin(); |
| 2506 generator.GestureScrollSequence(begin, end, | 2450 generator.GestureScrollSequence(begin, end, |
| 2507 base::TimeDelta::FromMilliseconds(20), | 2451 base::TimeDelta::FromMilliseconds(20), |
| 2508 10); | 2452 10); |
| 2509 EXPECT_EQ((begin - window_offset).ToString(), | 2453 EXPECT_EQ((begin - window_offset).ToString(), |
| 2510 delegate.scroll_begin_position().ToString()); | 2454 delegate.scroll_begin_position().ToString()); |
| 2511 EXPECT_EQ((end - window_offset).ToString(), | 2455 EXPECT_EQ((end - window_offset).ToString(), |
| 2512 delegate.gesture_end_location().ToString()); | 2456 delegate.gesture_end_location().ToString()); |
| 2513 } | 2457 } |
| 2514 | 2458 |
| 2515 TEST_P(GestureRecognizerTest, CaptureSendsGestureEnd) { | 2459 TEST_F(GestureRecognizerTest, CaptureSendsGestureEnd) { |
| 2516 scoped_ptr<GestureEventConsumeDelegate> delegate( | 2460 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 2517 new GestureEventConsumeDelegate()); | 2461 new GestureEventConsumeDelegate()); |
| 2518 TestGestureRecognizer* gesture_recognizer = | 2462 TestGestureRecognizer* gesture_recognizer = |
| 2519 new TestGestureRecognizer(); | 2463 new TestGestureRecognizer(); |
| 2520 ScopedGestureRecognizerSetter gr_setter(gesture_recognizer); | 2464 ScopedGestureRecognizerSetter gr_setter(gesture_recognizer); |
| 2521 | 2465 |
| 2522 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 2466 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 2523 delegate.get(), -1234, gfx::Rect(10, 10, 300, 300), root_window())); | 2467 delegate.get(), -1234, gfx::Rect(10, 10, 300, 300), root_window())); |
| 2524 EventGenerator generator(root_window()); | 2468 EventGenerator generator(root_window()); |
| 2525 | 2469 |
| 2526 generator.MoveMouseRelativeTo(window.get(), gfx::Point(10, 10)); | 2470 generator.MoveMouseRelativeTo(window.get(), gfx::Point(10, 10)); |
| 2527 generator.PressTouch(); | 2471 generator.PressTouch(); |
| 2528 RunAllPendingInMessageLoop(); | 2472 RunAllPendingInMessageLoop(); |
| 2529 | 2473 |
| 2530 EXPECT_TRUE(delegate->tap_down()); | 2474 EXPECT_TRUE(delegate->tap_down()); |
| 2531 | 2475 |
| 2532 scoped_ptr<aura::Window> capture(CreateTestWindowWithBounds( | 2476 scoped_ptr<aura::Window> capture(CreateTestWindowWithBounds( |
| 2533 gfx::Rect(10, 10, 200, 200), root_window())); | 2477 gfx::Rect(10, 10, 200, 200), root_window())); |
| 2534 capture->SetCapture(); | 2478 capture->SetCapture(); |
| 2535 RunAllPendingInMessageLoop(); | 2479 RunAllPendingInMessageLoop(); |
| 2536 | 2480 |
| 2537 EXPECT_TRUE(delegate->end()); | 2481 EXPECT_TRUE(delegate->end()); |
| 2538 EXPECT_TRUE(delegate->tap_cancel()); | 2482 EXPECT_TRUE(delegate->tap_cancel()); |
| 2539 } | 2483 } |
| 2540 | 2484 |
| 2541 // Check that previous touch actions that are completely finished (either | 2485 // Check that previous touch actions that are completely finished (either |
| 2542 // released or cancelled), do not receive extra synthetic cancels upon change of | 2486 // released or cancelled), do not receive extra synthetic cancels upon change of |
| 2543 // capture. | 2487 // capture. |
| 2544 TEST_P(GestureRecognizerTest, CaptureDoesNotCancelFinishedTouches) { | 2488 TEST_F(GestureRecognizerTest, CaptureDoesNotCancelFinishedTouches) { |
| 2545 scoped_ptr<GestureEventConsumeDelegate> delegate( | 2489 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 2546 new GestureEventConsumeDelegate()); | 2490 new GestureEventConsumeDelegate()); |
| 2547 scoped_ptr<TestEventHandler> handler(new TestEventHandler); | 2491 scoped_ptr<TestEventHandler> handler(new TestEventHandler); |
| 2548 root_window()->AddPreTargetHandler(handler.get()); | 2492 root_window()->AddPreTargetHandler(handler.get()); |
| 2549 | 2493 |
| 2550 // Create a window and set it as the capture window. | 2494 // Create a window and set it as the capture window. |
| 2551 scoped_ptr<aura::Window> window1(CreateTestWindowWithDelegate(delegate.get(), | 2495 scoped_ptr<aura::Window> window1(CreateTestWindowWithDelegate(delegate.get(), |
| 2552 -1234, gfx::Rect(10, 10, 300, 300), root_window())); | 2496 -1234, gfx::Rect(10, 10, 300, 300), root_window())); |
| 2553 window1->SetCapture(); | 2497 window1->SetCapture(); |
| 2554 | 2498 |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2587 gfx::Rect(100, 100, 300, 300), root_window())); | 2531 gfx::Rect(100, 100, 300, 300), root_window())); |
| 2588 window2->SetCapture(); | 2532 window2->SetCapture(); |
| 2589 RunAllPendingInMessageLoop(); | 2533 RunAllPendingInMessageLoop(); |
| 2590 // Check that setting capture does not generate any synthetic touch-cancels | 2534 // Check that setting capture does not generate any synthetic touch-cancels |
| 2591 // for the two previously finished touch actions. | 2535 // for the two previously finished touch actions. |
| 2592 EXPECT_EQ(1, handler->touch_cancelled_count()); | 2536 EXPECT_EQ(1, handler->touch_cancelled_count()); |
| 2593 | 2537 |
| 2594 root_window()->RemovePreTargetHandler(handler.get()); | 2538 root_window()->RemovePreTargetHandler(handler.get()); |
| 2595 } | 2539 } |
| 2596 | 2540 |
| 2597 // Tests that a press with the same touch id as an existing touch is ignored. | 2541 TEST_F(GestureRecognizerTest, PressDoesNotCrash) { |
| 2598 TEST_P(GestureRecognizerTest, PressDoesNotCrash) { | |
| 2599 scoped_ptr<GestureEventConsumeDelegate> delegate( | 2542 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 2600 new GestureEventConsumeDelegate()); | 2543 new GestureEventConsumeDelegate()); |
| 2601 TestGestureRecognizer* gesture_recognizer = | 2544 TestGestureRecognizer* gesture_recognizer = |
| 2602 new TestGestureRecognizer(); | 2545 new TestGestureRecognizer(); |
| 2603 ScopedGestureRecognizerSetter gr_setter(gesture_recognizer); | 2546 ScopedGestureRecognizerSetter gr_setter(gesture_recognizer); |
| 2604 TimedEvents tes; | 2547 TimedEvents tes; |
| 2605 | 2548 |
| 2606 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 2549 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 2607 delegate.get(), -1234, gfx::Rect(10, 10, 300, 300), root_window())); | 2550 delegate.get(), -1234, gfx::Rect(10, 10, 300, 300), root_window())); |
| 2608 | 2551 |
| 2609 ui::TouchEvent press(ui::ET_TOUCH_PRESSED, gfx::Point(45, 45), 7, tes.Now()); | 2552 ui::TouchEvent press(ui::ET_TOUCH_PRESSED, gfx::Point(45, 45), 7, tes.Now()); |
| 2610 press.set_radius_x(40); | 2553 press.set_radius_x(40); |
| 2611 DispatchEventUsingWindowDispatcher(&press); | 2554 DispatchEventUsingWindowDispatcher(&press); |
| 2612 EXPECT_TRUE(delegate->tap_down()); | 2555 EXPECT_TRUE(delegate->tap_down()); |
| 2613 EXPECT_EQ(gfx::Rect(5, 5, 80, 80).ToString(), | 2556 EXPECT_EQ(gfx::Rect(5, 5, 80, 80).ToString(), |
| 2614 delegate->bounding_box().ToString()); | 2557 delegate->bounding_box().ToString()); |
| 2615 delegate->Reset(); | 2558 delegate->Reset(); |
| 2616 | 2559 |
| 2617 ui::TouchEvent press2(ui::ET_TOUCH_PRESSED, gfx::Point(55, 45), 7, tes.Now()); | 2560 ui::TouchEvent press2(ui::ET_TOUCH_PRESSED, gfx::Point(55, 45), 7, tes.Now()); |
| 2618 DispatchEventUsingWindowDispatcher(&press2); | 2561 DispatchEventUsingWindowDispatcher(&press2); |
| 2619 | 2562 |
| 2620 // This new press should not generate a tap-down. | 2563 // This new press should not generate a tap-down. |
| 2621 EXPECT_FALSE(delegate->begin()); | 2564 EXPECT_FALSE(delegate->begin()); |
| 2622 EXPECT_FALSE(delegate->tap_down()); | 2565 EXPECT_FALSE(delegate->tap_down()); |
| 2623 EXPECT_FALSE(delegate->tap_cancel()); | 2566 EXPECT_FALSE(delegate->tap_cancel()); |
| 2624 EXPECT_FALSE(delegate->scroll_begin()); | 2567 EXPECT_FALSE(delegate->scroll_begin()); |
| 2625 } | 2568 } |
| 2626 | 2569 |
| 2627 TEST_P(GestureRecognizerTest, TwoFingerTap) { | 2570 TEST_F(GestureRecognizerTest, TwoFingerTap) { |
| 2628 // TODO(tdresser): enable this test with unified GR once two finger tap is | |
| 2629 // supported. See crbug.com/354396. | |
| 2630 if (UsingUnifiedGR()) | |
| 2631 return; | |
| 2632 | |
| 2633 scoped_ptr<GestureEventConsumeDelegate> delegate( | 2571 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 2634 new GestureEventConsumeDelegate()); | 2572 new GestureEventConsumeDelegate()); |
| 2635 const int kWindowWidth = 123; | 2573 const int kWindowWidth = 123; |
| 2636 const int kWindowHeight = 45; | 2574 const int kWindowHeight = 45; |
| 2637 const int kTouchId1 = 2; | 2575 const int kTouchId1 = 2; |
| 2638 const int kTouchId2 = 3; | 2576 const int kTouchId2 = 3; |
| 2639 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); | 2577 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); |
| 2640 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 2578 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 2641 delegate.get(), -1234, bounds, root_window())); | 2579 delegate.get(), -1234, bounds, root_window())); |
| 2642 TimedEvents tes; | 2580 TimedEvents tes; |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2710 EXPECT_FALSE(delegate->tap()); | 2648 EXPECT_FALSE(delegate->tap()); |
| 2711 EXPECT_FALSE(delegate->tap_down()); | 2649 EXPECT_FALSE(delegate->tap_down()); |
| 2712 EXPECT_FALSE(delegate->tap_cancel()); | 2650 EXPECT_FALSE(delegate->tap_cancel()); |
| 2713 EXPECT_FALSE(delegate->scroll_begin()); | 2651 EXPECT_FALSE(delegate->scroll_begin()); |
| 2714 EXPECT_FALSE(delegate->scroll_update()); | 2652 EXPECT_FALSE(delegate->scroll_update()); |
| 2715 EXPECT_FALSE(delegate->scroll_end()); | 2653 EXPECT_FALSE(delegate->scroll_end()); |
| 2716 EXPECT_TRUE(delegate->fling()); | 2654 EXPECT_TRUE(delegate->fling()); |
| 2717 EXPECT_FALSE(delegate->two_finger_tap()); | 2655 EXPECT_FALSE(delegate->two_finger_tap()); |
| 2718 } | 2656 } |
| 2719 | 2657 |
| 2720 TEST_P(GestureRecognizerTest, TwoFingerTapExpired) { | 2658 TEST_F(GestureRecognizerTest, TwoFingerTapExpired) { |
| 2721 scoped_ptr<GestureEventConsumeDelegate> delegate( | 2659 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 2722 new GestureEventConsumeDelegate()); | 2660 new GestureEventConsumeDelegate()); |
| 2723 const int kWindowWidth = 123; | 2661 const int kWindowWidth = 123; |
| 2724 const int kWindowHeight = 45; | 2662 const int kWindowHeight = 45; |
| 2725 const int kTouchId1 = 2; | 2663 const int kTouchId1 = 2; |
| 2726 const int kTouchId2 = 3; | 2664 const int kTouchId2 = 3; |
| 2727 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); | 2665 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); |
| 2728 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 2666 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 2729 delegate.get(), -1234, bounds, root_window())); | 2667 delegate.get(), -1234, bounds, root_window())); |
| 2730 TimedEvents tes; | 2668 TimedEvents tes; |
| (...skipping 20 matching lines...) Expand all Loading... |
| 2751 // Make sure there is enough delay before the touch is released so that it is | 2689 // Make sure there is enough delay before the touch is released so that it is |
| 2752 // recognized as a tap. | 2690 // recognized as a tap. |
| 2753 delegate->Reset(); | 2691 delegate->Reset(); |
| 2754 ui::TouchEvent release2(ui::ET_TOUCH_RELEASED, gfx::Point(130, 201), | 2692 ui::TouchEvent release2(ui::ET_TOUCH_RELEASED, gfx::Point(130, 201), |
| 2755 kTouchId2, tes.LeapForward(50)); | 2693 kTouchId2, tes.LeapForward(50)); |
| 2756 | 2694 |
| 2757 DispatchEventUsingWindowDispatcher(&release2); | 2695 DispatchEventUsingWindowDispatcher(&release2); |
| 2758 EXPECT_FALSE(delegate->two_finger_tap()); | 2696 EXPECT_FALSE(delegate->two_finger_tap()); |
| 2759 } | 2697 } |
| 2760 | 2698 |
| 2761 TEST_P(GestureRecognizerTest, TwoFingerTapChangesToPinch) { | 2699 TEST_F(GestureRecognizerTest, TwoFingerTapChangesToPinch) { |
| 2762 // TODO(tdresser): enable this test with unified GR once two finger tap is | |
| 2763 // supported. See crbug.com/354396. | |
| 2764 if (UsingUnifiedGR()) | |
| 2765 return; | |
| 2766 | |
| 2767 scoped_ptr<GestureEventConsumeDelegate> delegate( | 2700 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 2768 new GestureEventConsumeDelegate()); | 2701 new GestureEventConsumeDelegate()); |
| 2769 const int kWindowWidth = 123; | 2702 const int kWindowWidth = 123; |
| 2770 const int kWindowHeight = 45; | 2703 const int kWindowHeight = 45; |
| 2771 const int kTouchId1 = 2; | 2704 const int kTouchId1 = 2; |
| 2772 const int kTouchId2 = 3; | 2705 const int kTouchId2 = 3; |
| 2773 TimedEvents tes; | 2706 TimedEvents tes; |
| 2774 | 2707 |
| 2775 // Test moving first finger | 2708 // Test moving first finger |
| 2776 { | 2709 { |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2828 delegate->Reset(); | 2761 delegate->Reset(); |
| 2829 ui::TouchEvent release(ui::ET_TOUCH_RELEASED, gfx::Point(101, 201), | 2762 ui::TouchEvent release(ui::ET_TOUCH_RELEASED, gfx::Point(101, 201), |
| 2830 kTouchId1, tes.LeapForward(50)); | 2763 kTouchId1, tes.LeapForward(50)); |
| 2831 | 2764 |
| 2832 DispatchEventUsingWindowDispatcher(&release); | 2765 DispatchEventUsingWindowDispatcher(&release); |
| 2833 EXPECT_FALSE(delegate->two_finger_tap()); | 2766 EXPECT_FALSE(delegate->two_finger_tap()); |
| 2834 EXPECT_TRUE(delegate->pinch_end()); | 2767 EXPECT_TRUE(delegate->pinch_end()); |
| 2835 } | 2768 } |
| 2836 } | 2769 } |
| 2837 | 2770 |
| 2838 TEST_P(GestureRecognizerTest, NoTwoFingerTapWhenFirstFingerHasScrolled) { | 2771 TEST_F(GestureRecognizerTest, NoTwoFingerTapWhenFirstFingerHasScrolled) { |
| 2839 // Disabled for unified GR due to differences in when pinch begin is sent. The | |
| 2840 // Aura GR sends it earlier than is necessary. | |
| 2841 if (UsingUnifiedGR()) | |
| 2842 return; | |
| 2843 | |
| 2844 scoped_ptr<GestureEventConsumeDelegate> delegate( | 2772 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 2845 new GestureEventConsumeDelegate()); | 2773 new GestureEventConsumeDelegate()); |
| 2846 const int kWindowWidth = 123; | 2774 const int kWindowWidth = 123; |
| 2847 const int kWindowHeight = 45; | 2775 const int kWindowHeight = 45; |
| 2848 const int kTouchId1 = 2; | 2776 const int kTouchId1 = 2; |
| 2849 const int kTouchId2 = 3; | 2777 const int kTouchId2 = 3; |
| 2850 TimedEvents tes; | 2778 TimedEvents tes; |
| 2851 | 2779 |
| 2852 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); | 2780 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); |
| 2853 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 2781 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| (...skipping 16 matching lines...) Expand all Loading... |
| 2870 // is recognized as a tap. | 2798 // is recognized as a tap. |
| 2871 delegate->Reset(); | 2799 delegate->Reset(); |
| 2872 ui::TouchEvent release(ui::ET_TOUCH_RELEASED, gfx::Point(101, 201), | 2800 ui::TouchEvent release(ui::ET_TOUCH_RELEASED, gfx::Point(101, 201), |
| 2873 kTouchId2, tes.LeapForward(50)); | 2801 kTouchId2, tes.LeapForward(50)); |
| 2874 | 2802 |
| 2875 DispatchEventUsingWindowDispatcher(&release); | 2803 DispatchEventUsingWindowDispatcher(&release); |
| 2876 EXPECT_FALSE(delegate->two_finger_tap()); | 2804 EXPECT_FALSE(delegate->two_finger_tap()); |
| 2877 EXPECT_TRUE(delegate->pinch_end()); | 2805 EXPECT_TRUE(delegate->pinch_end()); |
| 2878 } | 2806 } |
| 2879 | 2807 |
| 2880 TEST_P(GestureRecognizerTest, MultiFingerSwipe) { | 2808 TEST_F(GestureRecognizerTest, MultiFingerSwipe) { |
| 2881 scoped_ptr<GestureEventConsumeDelegate> delegate( | 2809 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 2882 new GestureEventConsumeDelegate()); | 2810 new GestureEventConsumeDelegate()); |
| 2883 const int kWindowWidth = 123; | 2811 const int kWindowWidth = 123; |
| 2884 const int kWindowHeight = 45; | 2812 const int kWindowHeight = 45; |
| 2885 | 2813 |
| 2886 gfx::Rect bounds(5, 10, kWindowWidth, kWindowHeight); | 2814 gfx::Rect bounds(5, 10, kWindowWidth, kWindowHeight); |
| 2887 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 2815 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 2888 delegate.get(), -1234, bounds, root_window())); | 2816 delegate.get(), -1234, bounds, root_window())); |
| 2889 | 2817 |
| 2890 const int kSteps = 15; | 2818 const int kSteps = 15; |
| 2891 const int kTouchPoints = 4; | 2819 const int kTouchPoints = 4; |
| 2892 gfx::Point points[kTouchPoints] = { | 2820 gfx::Point points[kTouchPoints] = { |
| 2893 gfx::Point(10, 30), | 2821 gfx::Point(10, 30), |
| 2894 gfx::Point(30, 20), | 2822 gfx::Point(30, 20), |
| 2895 gfx::Point(50, 30), | 2823 gfx::Point(50, 30), |
| 2896 gfx::Point(80, 50) | 2824 gfx::Point(80, 50) |
| 2897 }; | 2825 }; |
| 2898 | 2826 |
| 2899 aura::test::EventGenerator generator(root_window(), window.get()); | 2827 aura::test::EventGenerator generator(root_window(), window.get()); |
| 2900 | 2828 |
| 2901 // The unified gesture recognizer assumes a finger has stopped if it hasn't | |
| 2902 // moved for too long. See ui/events/gesture_detection/velocity_tracker.cc's | |
| 2903 // kAssumePointerStoppedTimeMs. | |
| 2904 for (int count = 2; count <= kTouchPoints; ++count) { | 2829 for (int count = 2; count <= kTouchPoints; ++count) { |
| 2905 generator.GestureMultiFingerScroll( | 2830 generator.GestureMultiFingerScroll( |
| 2906 count, points, 10, kSteps, 0, -11 * kSteps); | 2831 count, points, 1000, kSteps, 0, -11 * kSteps); |
| 2907 EXPECT_TRUE(delegate->swipe_up()); | 2832 EXPECT_TRUE(delegate->swipe_up()); |
| 2908 delegate->Reset(); | 2833 delegate->Reset(); |
| 2909 | 2834 |
| 2910 generator.GestureMultiFingerScroll( | 2835 generator.GestureMultiFingerScroll( |
| 2911 count, points, 10, kSteps, 0, 11 * kSteps); | 2836 count, points, 1000, kSteps, 0, 11 * kSteps); |
| 2912 EXPECT_TRUE(delegate->swipe_down()); | 2837 EXPECT_TRUE(delegate->swipe_down()); |
| 2913 delegate->Reset(); | 2838 delegate->Reset(); |
| 2914 | 2839 |
| 2915 generator.GestureMultiFingerScroll( | 2840 generator.GestureMultiFingerScroll( |
| 2916 count, points, 10, kSteps, -11 * kSteps, 0); | 2841 count, points, 1000, kSteps, -11 * kSteps, 0); |
| 2917 EXPECT_TRUE(delegate->swipe_left()); | 2842 EXPECT_TRUE(delegate->swipe_left()); |
| 2918 delegate->Reset(); | 2843 delegate->Reset(); |
| 2919 | 2844 |
| 2920 generator.GestureMultiFingerScroll( | 2845 generator.GestureMultiFingerScroll( |
| 2921 count, points, 10, kSteps, 11 * kSteps, 0); | 2846 count, points, 1000, kSteps, 11 * kSteps, 0); |
| 2922 EXPECT_TRUE(delegate->swipe_right()); | 2847 EXPECT_TRUE(delegate->swipe_right()); |
| 2923 delegate->Reset(); | 2848 delegate->Reset(); |
| 2924 } | 2849 } |
| 2925 } | 2850 } |
| 2926 | 2851 |
| 2927 TEST_P(GestureRecognizerTest, TwoFingerTapCancelled) { | 2852 TEST_F(GestureRecognizerTest, TwoFingerTapCancelled) { |
| 2928 scoped_ptr<GestureEventConsumeDelegate> delegate( | 2853 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 2929 new GestureEventConsumeDelegate()); | 2854 new GestureEventConsumeDelegate()); |
| 2930 const int kWindowWidth = 123; | 2855 const int kWindowWidth = 123; |
| 2931 const int kWindowHeight = 45; | 2856 const int kWindowHeight = 45; |
| 2932 const int kTouchId1 = 2; | 2857 const int kTouchId1 = 2; |
| 2933 const int kTouchId2 = 3; | 2858 const int kTouchId2 = 3; |
| 2934 TimedEvents tes; | 2859 TimedEvents tes; |
| 2935 | 2860 |
| 2936 // Test canceling first finger. | 2861 // Test canceling first finger. |
| 2937 { | 2862 { |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2991 // is recognized as a tap. | 2916 // is recognized as a tap. |
| 2992 delegate->Reset(); | 2917 delegate->Reset(); |
| 2993 ui::TouchEvent release(ui::ET_TOUCH_RELEASED, gfx::Point(101, 201), | 2918 ui::TouchEvent release(ui::ET_TOUCH_RELEASED, gfx::Point(101, 201), |
| 2994 kTouchId1, tes.LeapForward(50)); | 2919 kTouchId1, tes.LeapForward(50)); |
| 2995 | 2920 |
| 2996 DispatchEventUsingWindowDispatcher(&release); | 2921 DispatchEventUsingWindowDispatcher(&release); |
| 2997 EXPECT_FALSE(delegate->two_finger_tap()); | 2922 EXPECT_FALSE(delegate->two_finger_tap()); |
| 2998 } | 2923 } |
| 2999 } | 2924 } |
| 3000 | 2925 |
| 3001 TEST_P(GestureRecognizerTest, VeryWideTwoFingerTouchDownShouldBeAPinch) { | 2926 TEST_F(GestureRecognizerTest, VeryWideTwoFingerTouchDownShouldBeAPinch) { |
| 3002 // Disabled for unified GR due to differences in when scroll update is | |
| 3003 // sent. The Aura GR will never send a ScrollUpdate with a ScrollBegin, but | |
| 3004 // the unified GR will. | |
| 3005 if (UsingUnifiedGR()) | |
| 3006 return; | |
| 3007 | |
| 3008 scoped_ptr<GestureEventConsumeDelegate> delegate( | 2927 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 3009 new GestureEventConsumeDelegate()); | 2928 new GestureEventConsumeDelegate()); |
| 3010 const int kWindowWidth = 523; | 2929 const int kWindowWidth = 523; |
| 3011 const int kWindowHeight = 45; | 2930 const int kWindowHeight = 45; |
| 3012 const int kTouchId1 = 2; | 2931 const int kTouchId1 = 2; |
| 3013 const int kTouchId2 = 3; | 2932 const int kTouchId2 = 3; |
| 3014 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); | 2933 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); |
| 3015 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 2934 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 3016 delegate.get(), -1234, bounds, root_window())); | 2935 delegate.get(), -1234, bounds, root_window())); |
| 3017 TimedEvents tes; | 2936 TimedEvents tes; |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3054 EXPECT_TRUE(delegate->scroll_begin()); | 2973 EXPECT_TRUE(delegate->scroll_begin()); |
| 3055 EXPECT_FALSE(delegate->scroll_update()); | 2974 EXPECT_FALSE(delegate->scroll_update()); |
| 3056 EXPECT_FALSE(delegate->scroll_end()); | 2975 EXPECT_FALSE(delegate->scroll_end()); |
| 3057 EXPECT_FALSE(delegate->long_press()); | 2976 EXPECT_FALSE(delegate->long_press()); |
| 3058 EXPECT_FALSE(delegate->two_finger_tap()); | 2977 EXPECT_FALSE(delegate->two_finger_tap()); |
| 3059 EXPECT_TRUE(delegate->pinch_begin()); | 2978 EXPECT_TRUE(delegate->pinch_begin()); |
| 3060 } | 2979 } |
| 3061 | 2980 |
| 3062 // Verifies if a window is the target of multiple touch-ids and we hide the | 2981 // Verifies if a window is the target of multiple touch-ids and we hide the |
| 3063 // window everything is cleaned up correctly. | 2982 // window everything is cleaned up correctly. |
| 3064 TEST_P(GestureRecognizerTest, FlushAllOnHide) { | 2983 TEST_F(GestureRecognizerTest, FlushAllOnHide) { |
| 3065 scoped_ptr<GestureEventConsumeDelegate> delegate( | 2984 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 3066 new GestureEventConsumeDelegate()); | 2985 new GestureEventConsumeDelegate()); |
| 3067 gfx::Rect bounds(0, 0, 200, 200); | 2986 gfx::Rect bounds(0, 0, 200, 200); |
| 3068 scoped_ptr<aura::Window> window( | 2987 scoped_ptr<aura::Window> window( |
| 3069 CreateTestWindowWithDelegate(delegate.get(), 0, bounds, root_window())); | 2988 CreateTestWindowWithDelegate(delegate.get(), 0, bounds, root_window())); |
| 3070 const int kTouchId1 = 8; | 2989 const int kTouchId1 = 8; |
| 3071 const int kTouchId2 = 2; | 2990 const int kTouchId2 = 2; |
| 3072 TimedEvents tes; | 2991 TimedEvents tes; |
| 3073 | 2992 |
| 3074 ui::TouchEvent press1(ui::ET_TOUCH_PRESSED, gfx::Point(10, 10), | 2993 ui::TouchEvent press1(ui::ET_TOUCH_PRESSED, gfx::Point(10, 10), |
| 3075 kTouchId1, tes.Now()); | 2994 kTouchId1, tes.Now()); |
| 3076 DispatchEventUsingWindowDispatcher(&press1); | 2995 DispatchEventUsingWindowDispatcher(&press1); |
| 3077 ui::TouchEvent press2(ui::ET_TOUCH_PRESSED, gfx::Point(20, 20), | 2996 ui::TouchEvent press2(ui::ET_TOUCH_PRESSED, gfx::Point(20, 20), |
| 3078 kTouchId2, tes.Now()); | 2997 kTouchId2, tes.Now()); |
| 3079 DispatchEventUsingWindowDispatcher(&press2); | 2998 DispatchEventUsingWindowDispatcher(&press2); |
| 3080 window->Hide(); | 2999 window->Hide(); |
| 3081 EXPECT_EQ(NULL, | 3000 EXPECT_EQ(NULL, |
| 3082 ui::GestureRecognizer::Get()->GetTouchLockedTarget(press1)); | 3001 ui::GestureRecognizer::Get()->GetTouchLockedTarget(press1)); |
| 3083 EXPECT_EQ(NULL, | 3002 EXPECT_EQ(NULL, |
| 3084 ui::GestureRecognizer::Get()->GetTouchLockedTarget(press2)); | 3003 ui::GestureRecognizer::Get()->GetTouchLockedTarget(press2)); |
| 3085 } | 3004 } |
| 3086 | 3005 |
| 3087 TEST_P(GestureRecognizerTest, LongPressTimerStopsOnPreventDefaultedTouchMoves) { | 3006 TEST_F(GestureRecognizerTest, LongPressTimerStopsOnPreventDefaultedTouchMoves) { |
| 3088 // TODO(tdresser): write a version of this test for the unified GR. | |
| 3089 if (UsingUnifiedGR()) | |
| 3090 return; | |
| 3091 | |
| 3092 scoped_ptr<QueueTouchEventDelegate> delegate( | 3007 scoped_ptr<QueueTouchEventDelegate> delegate( |
| 3093 new QueueTouchEventDelegate(host()->dispatcher())); | 3008 new QueueTouchEventDelegate(host()->dispatcher())); |
| 3094 const int kTouchId = 2; | 3009 const int kTouchId = 2; |
| 3095 gfx::Rect bounds(100, 200, 100, 100); | 3010 gfx::Rect bounds(100, 200, 100, 100); |
| 3096 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 3011 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 3097 delegate.get(), -1234, bounds, root_window())); | 3012 delegate.get(), -1234, bounds, root_window())); |
| 3098 delegate->set_window(window.get()); | 3013 delegate->set_window(window.get()); |
| 3099 TimedEvents tes; | 3014 TimedEvents tes; |
| 3100 | 3015 |
| 3101 TimerTestGestureRecognizer* gesture_recognizer = | 3016 TimerTestGestureRecognizer* gesture_recognizer = |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3141 GestureEventConsumeDelegate::OnTouchEvent(touch); | 3056 GestureEventConsumeDelegate::OnTouchEvent(touch); |
| 3142 } | 3057 } |
| 3143 | 3058 |
| 3144 bool consume_touch_move_; | 3059 bool consume_touch_move_; |
| 3145 | 3060 |
| 3146 DISALLOW_COPY_AND_ASSIGN(ConsumesTouchMovesDelegate); | 3061 DISALLOW_COPY_AND_ASSIGN(ConsumesTouchMovesDelegate); |
| 3147 }; | 3062 }; |
| 3148 | 3063 |
| 3149 // Same as GestureEventScroll, but tests that the behavior is the same | 3064 // Same as GestureEventScroll, but tests that the behavior is the same |
| 3150 // even if all the touch-move events are consumed. | 3065 // even if all the touch-move events are consumed. |
| 3151 TEST_P(GestureRecognizerTest, GestureEventScrollTouchMoveConsumed) { | 3066 TEST_F(GestureRecognizerTest, GestureEventScrollTouchMoveConsumed) { |
| 3152 scoped_ptr<ConsumesTouchMovesDelegate> delegate( | 3067 scoped_ptr<ConsumesTouchMovesDelegate> delegate( |
| 3153 new ConsumesTouchMovesDelegate()); | 3068 new ConsumesTouchMovesDelegate()); |
| 3154 const int kWindowWidth = 123; | 3069 const int kWindowWidth = 123; |
| 3155 const int kWindowHeight = 45; | 3070 const int kWindowHeight = 45; |
| 3156 const int kTouchId = 5; | 3071 const int kTouchId = 5; |
| 3157 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); | 3072 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); |
| 3158 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 3073 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 3159 delegate.get(), -1234, bounds, root_window())); | 3074 delegate.get(), -1234, bounds, root_window())); |
| 3160 TimedEvents tes; | 3075 TimedEvents tes; |
| 3161 | 3076 |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3193 EXPECT_FALSE(delegate->tap_down()); | 3108 EXPECT_FALSE(delegate->tap_down()); |
| 3194 EXPECT_FALSE(delegate->tap_cancel()); | 3109 EXPECT_FALSE(delegate->tap_cancel()); |
| 3195 EXPECT_FALSE(delegate->begin()); | 3110 EXPECT_FALSE(delegate->begin()); |
| 3196 EXPECT_TRUE(delegate->end()); | 3111 EXPECT_TRUE(delegate->end()); |
| 3197 EXPECT_FALSE(delegate->scroll_begin()); | 3112 EXPECT_FALSE(delegate->scroll_begin()); |
| 3198 EXPECT_FALSE(delegate->scroll_update()); | 3113 EXPECT_FALSE(delegate->scroll_update()); |
| 3199 EXPECT_FALSE(delegate->scroll_end()); | 3114 EXPECT_FALSE(delegate->scroll_end()); |
| 3200 } | 3115 } |
| 3201 | 3116 |
| 3202 // Tests the behavior of 2F scroll when all the touch-move events are consumed. | 3117 // Tests the behavior of 2F scroll when all the touch-move events are consumed. |
| 3203 TEST_P(GestureRecognizerTest, GestureEventScrollTwoFingerTouchMoveConsumed) { | 3118 TEST_F(GestureRecognizerTest, GestureEventScrollTwoFingerTouchMoveConsumed) { |
| 3204 // TODO(tdresser): enable this test with unified GR once two finger tap is | |
| 3205 // supported. See crbug.com/354396. | |
| 3206 if (UsingUnifiedGR()) | |
| 3207 return; | |
| 3208 | |
| 3209 scoped_ptr<ConsumesTouchMovesDelegate> delegate( | 3119 scoped_ptr<ConsumesTouchMovesDelegate> delegate( |
| 3210 new ConsumesTouchMovesDelegate()); | 3120 new ConsumesTouchMovesDelegate()); |
| 3211 const int kWindowWidth = 123; | 3121 const int kWindowWidth = 123; |
| 3212 const int kWindowHeight = 100; | 3122 const int kWindowHeight = 100; |
| 3213 const int kTouchId1 = 2; | 3123 const int kTouchId1 = 2; |
| 3214 const int kTouchId2 = 3; | 3124 const int kTouchId2 = 3; |
| 3215 TimedEvents tes; | 3125 TimedEvents tes; |
| 3216 | 3126 |
| 3217 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); | 3127 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); |
| 3218 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 3128 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3305 EXPECT_TRUE(delegate->fling()); | 3215 EXPECT_TRUE(delegate->fling()); |
| 3306 | 3216 |
| 3307 EXPECT_FALSE(delegate->pinch_begin()); | 3217 EXPECT_FALSE(delegate->pinch_begin()); |
| 3308 EXPECT_FALSE(delegate->pinch_update()); | 3218 EXPECT_FALSE(delegate->pinch_update()); |
| 3309 EXPECT_FALSE(delegate->pinch_end()); | 3219 EXPECT_FALSE(delegate->pinch_end()); |
| 3310 } | 3220 } |
| 3311 | 3221 |
| 3312 // Like as GestureEventTouchMoveConsumed but tests the different behavior | 3222 // Like as GestureEventTouchMoveConsumed but tests the different behavior |
| 3313 // depending on whether the events were consumed before or after the scroll | 3223 // depending on whether the events were consumed before or after the scroll |
| 3314 // started. | 3224 // started. |
| 3315 TEST_P(GestureRecognizerTest, GestureEventScrollTouchMovePartialConsumed) { | 3225 TEST_F(GestureRecognizerTest, GestureEventScrollTouchMovePartialConsumed) { |
| 3316 scoped_ptr<ConsumesTouchMovesDelegate> delegate( | 3226 scoped_ptr<ConsumesTouchMovesDelegate> delegate( |
| 3317 new ConsumesTouchMovesDelegate()); | 3227 new ConsumesTouchMovesDelegate()); |
| 3318 const int kWindowWidth = 123; | 3228 const int kWindowWidth = 123; |
| 3319 const int kWindowHeight = 45; | 3229 const int kWindowHeight = 45; |
| 3320 const int kTouchId = 5; | 3230 const int kTouchId = 5; |
| 3321 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); | 3231 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); |
| 3322 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 3232 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 3323 delegate.get(), -1234, bounds, root_window())); | 3233 delegate.get(), -1234, bounds, root_window())); |
| 3324 TimedEvents tes; | 3234 TimedEvents tes; |
| 3325 | 3235 |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3399 EXPECT_FALSE(delegate->tap_cancel()); | 3309 EXPECT_FALSE(delegate->tap_cancel()); |
| 3400 EXPECT_FALSE(delegate->begin()); | 3310 EXPECT_FALSE(delegate->begin()); |
| 3401 EXPECT_TRUE(delegate->end()); | 3311 EXPECT_TRUE(delegate->end()); |
| 3402 EXPECT_FALSE(delegate->scroll_begin()); | 3312 EXPECT_FALSE(delegate->scroll_begin()); |
| 3403 EXPECT_FALSE(delegate->scroll_update()); | 3313 EXPECT_FALSE(delegate->scroll_update()); |
| 3404 EXPECT_FALSE(delegate->scroll_end()); | 3314 EXPECT_FALSE(delegate->scroll_end()); |
| 3405 EXPECT_FALSE(delegate->fling()); | 3315 EXPECT_FALSE(delegate->fling()); |
| 3406 } | 3316 } |
| 3407 | 3317 |
| 3408 // Check that appropriate touch events generate double tap gesture events. | 3318 // Check that appropriate touch events generate double tap gesture events. |
| 3409 TEST_P(GestureRecognizerTest, GestureEventDoubleTap) { | 3319 TEST_F(GestureRecognizerTest, GestureEventDoubleTap) { |
| 3410 // TODO(tdresser): enable this test with unified GR once double / triple tap | |
| 3411 // gestures work. See crbug.com/357270. | |
| 3412 if (UsingUnifiedGR()) | |
| 3413 return; | |
| 3414 | |
| 3415 scoped_ptr<GestureEventConsumeDelegate> delegate( | 3320 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 3416 new GestureEventConsumeDelegate()); | 3321 new GestureEventConsumeDelegate()); |
| 3417 const int kWindowWidth = 123; | 3322 const int kWindowWidth = 123; |
| 3418 const int kWindowHeight = 45; | 3323 const int kWindowHeight = 45; |
| 3419 const int kTouchId = 2; | 3324 const int kTouchId = 2; |
| 3420 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); | 3325 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); |
| 3421 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 3326 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 3422 delegate.get(), -1234, bounds, root_window())); | 3327 delegate.get(), -1234, bounds, root_window())); |
| 3423 TimedEvents tes; | 3328 TimedEvents tes; |
| 3424 | 3329 |
| (...skipping 20 matching lines...) Expand all Loading... |
| 3445 EXPECT_TRUE(delegate->begin()); | 3350 EXPECT_TRUE(delegate->begin()); |
| 3446 EXPECT_TRUE(delegate->end()); | 3351 EXPECT_TRUE(delegate->end()); |
| 3447 EXPECT_FALSE(delegate->scroll_begin()); | 3352 EXPECT_FALSE(delegate->scroll_begin()); |
| 3448 EXPECT_FALSE(delegate->scroll_update()); | 3353 EXPECT_FALSE(delegate->scroll_update()); |
| 3449 EXPECT_FALSE(delegate->scroll_end()); | 3354 EXPECT_FALSE(delegate->scroll_end()); |
| 3450 | 3355 |
| 3451 EXPECT_EQ(2, delegate->tap_count()); | 3356 EXPECT_EQ(2, delegate->tap_count()); |
| 3452 } | 3357 } |
| 3453 | 3358 |
| 3454 // Check that appropriate touch events generate triple tap gesture events. | 3359 // Check that appropriate touch events generate triple tap gesture events. |
| 3455 TEST_P(GestureRecognizerTest, GestureEventTripleTap) { | 3360 TEST_F(GestureRecognizerTest, GestureEventTripleTap) { |
| 3456 // TODO(tdresser): enable this test with unified GR once double / triple tap | |
| 3457 // gestures work. See crbug.com/357270. | |
| 3458 if (UsingUnifiedGR()) | |
| 3459 return; | |
| 3460 | |
| 3461 scoped_ptr<GestureEventConsumeDelegate> delegate( | 3361 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 3462 new GestureEventConsumeDelegate()); | 3362 new GestureEventConsumeDelegate()); |
| 3463 const int kWindowWidth = 123; | 3363 const int kWindowWidth = 123; |
| 3464 const int kWindowHeight = 45; | 3364 const int kWindowHeight = 45; |
| 3465 const int kTouchId = 2; | 3365 const int kTouchId = 2; |
| 3466 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); | 3366 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); |
| 3467 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 3367 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 3468 delegate.get(), -1234, bounds, root_window())); | 3368 delegate.get(), -1234, bounds, root_window())); |
| 3469 TimedEvents tes; | 3369 TimedEvents tes; |
| 3470 | 3370 |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3505 EXPECT_TRUE(delegate->begin()); | 3405 EXPECT_TRUE(delegate->begin()); |
| 3506 EXPECT_TRUE(delegate->end()); | 3406 EXPECT_TRUE(delegate->end()); |
| 3507 EXPECT_FALSE(delegate->scroll_begin()); | 3407 EXPECT_FALSE(delegate->scroll_begin()); |
| 3508 EXPECT_FALSE(delegate->scroll_update()); | 3408 EXPECT_FALSE(delegate->scroll_update()); |
| 3509 EXPECT_FALSE(delegate->scroll_end()); | 3409 EXPECT_FALSE(delegate->scroll_end()); |
| 3510 | 3410 |
| 3511 EXPECT_EQ(3, delegate->tap_count()); | 3411 EXPECT_EQ(3, delegate->tap_count()); |
| 3512 } | 3412 } |
| 3513 | 3413 |
| 3514 // Check that we don't get a double tap when the two taps are far apart. | 3414 // Check that we don't get a double tap when the two taps are far apart. |
| 3515 TEST_P(GestureRecognizerTest, TwoTapsFarApart) { | 3415 TEST_F(GestureRecognizerTest, TwoTapsFarApart) { |
| 3516 scoped_ptr<GestureEventConsumeDelegate> delegate( | 3416 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 3517 new GestureEventConsumeDelegate()); | 3417 new GestureEventConsumeDelegate()); |
| 3518 const int kWindowWidth = 123; | 3418 const int kWindowWidth = 123; |
| 3519 const int kWindowHeight = 45; | 3419 const int kWindowHeight = 45; |
| 3520 const int kTouchId = 2; | 3420 const int kTouchId = 2; |
| 3521 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); | 3421 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); |
| 3522 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 3422 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 3523 delegate.get(), -1234, bounds, root_window())); | 3423 delegate.get(), -1234, bounds, root_window())); |
| 3524 TimedEvents tes; | 3424 TimedEvents tes; |
| 3525 | 3425 |
| (...skipping 21 matching lines...) Expand all Loading... |
| 3547 EXPECT_TRUE(delegate->end()); | 3447 EXPECT_TRUE(delegate->end()); |
| 3548 EXPECT_FALSE(delegate->scroll_begin()); | 3448 EXPECT_FALSE(delegate->scroll_begin()); |
| 3549 EXPECT_FALSE(delegate->scroll_update()); | 3449 EXPECT_FALSE(delegate->scroll_update()); |
| 3550 EXPECT_FALSE(delegate->scroll_end()); | 3450 EXPECT_FALSE(delegate->scroll_end()); |
| 3551 | 3451 |
| 3552 EXPECT_EQ(1, delegate->tap_count()); | 3452 EXPECT_EQ(1, delegate->tap_count()); |
| 3553 } | 3453 } |
| 3554 | 3454 |
| 3555 // Check that we don't get a double tap when the two taps have a long enough | 3455 // Check that we don't get a double tap when the two taps have a long enough |
| 3556 // delay in between. | 3456 // delay in between. |
| 3557 TEST_P(GestureRecognizerTest, TwoTapsWithDelayBetween) { | 3457 TEST_F(GestureRecognizerTest, TwoTapsWithDelayBetween) { |
| 3558 scoped_ptr<GestureEventConsumeDelegate> delegate( | 3458 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 3559 new GestureEventConsumeDelegate()); | 3459 new GestureEventConsumeDelegate()); |
| 3560 const int kWindowWidth = 123; | 3460 const int kWindowWidth = 123; |
| 3561 const int kWindowHeight = 45; | 3461 const int kWindowHeight = 45; |
| 3562 const int kTouchId = 2; | 3462 const int kTouchId = 2; |
| 3563 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); | 3463 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); |
| 3564 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 3464 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 3565 delegate.get(), -1234, bounds, root_window())); | 3465 delegate.get(), -1234, bounds, root_window())); |
| 3566 TimedEvents tes; | 3466 TimedEvents tes; |
| 3567 | 3467 |
| (...skipping 22 matching lines...) Expand all Loading... |
| 3590 EXPECT_FALSE(delegate->scroll_begin()); | 3490 EXPECT_FALSE(delegate->scroll_begin()); |
| 3591 EXPECT_FALSE(delegate->scroll_update()); | 3491 EXPECT_FALSE(delegate->scroll_update()); |
| 3592 EXPECT_FALSE(delegate->scroll_end()); | 3492 EXPECT_FALSE(delegate->scroll_end()); |
| 3593 | 3493 |
| 3594 EXPECT_EQ(1, delegate->tap_count()); | 3494 EXPECT_EQ(1, delegate->tap_count()); |
| 3595 } | 3495 } |
| 3596 | 3496 |
| 3597 // Checks that if the bounding-box of a gesture changes because of change in | 3497 // Checks that if the bounding-box of a gesture changes because of change in |
| 3598 // radius of a touch-point, and not because of change in position, then there | 3498 // radius of a touch-point, and not because of change in position, then there |
| 3599 // are not gesture events from that. | 3499 // are not gesture events from that. |
| 3600 TEST_P(GestureRecognizerTest, BoundingBoxRadiusChange) { | 3500 TEST_F(GestureRecognizerTest, BoundingBoxRadiusChange) { |
| 3601 // TODO(tdresser): enable this test with unified GR when (if?) bounding box | |
| 3602 // behavior is unified. | |
| 3603 if (UsingUnifiedGR()) | |
| 3604 return; | |
| 3605 | |
| 3606 scoped_ptr<GestureEventConsumeDelegate> delegate( | 3501 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 3607 new GestureEventConsumeDelegate()); | 3502 new GestureEventConsumeDelegate()); |
| 3608 const int kWindowWidth = 234; | 3503 const int kWindowWidth = 234; |
| 3609 const int kWindowHeight = 345; | 3504 const int kWindowHeight = 345; |
| 3610 const int kTouchId = 5, kTouchId2 = 7; | 3505 const int kTouchId = 5, kTouchId2 = 7; |
| 3611 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); | 3506 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); |
| 3612 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 3507 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 3613 delegate.get(), -1234, bounds, root_window())); | 3508 delegate.get(), -1234, bounds, root_window())); |
| 3614 TimedEvents tes; | 3509 TimedEvents tes; |
| 3615 | 3510 |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3649 EXPECT_FALSE(delegate->tap()); | 3544 EXPECT_FALSE(delegate->tap()); |
| 3650 EXPECT_FALSE(delegate->tap_cancel()); | 3545 EXPECT_FALSE(delegate->tap_cancel()); |
| 3651 EXPECT_FALSE(delegate->scroll_update()); | 3546 EXPECT_FALSE(delegate->scroll_update()); |
| 3652 EXPECT_FALSE(delegate->pinch_update()); | 3547 EXPECT_FALSE(delegate->pinch_update()); |
| 3653 | 3548 |
| 3654 delegate->Reset(); | 3549 delegate->Reset(); |
| 3655 } | 3550 } |
| 3656 | 3551 |
| 3657 // Checks that slow scrolls deliver the correct deltas. | 3552 // Checks that slow scrolls deliver the correct deltas. |
| 3658 // In particular, fix for http;//crbug.com/150573. | 3553 // In particular, fix for http;//crbug.com/150573. |
| 3659 TEST_P(GestureRecognizerTest, NoDriftInScroll) { | 3554 TEST_F(GestureRecognizerTest, NoDriftInScroll) { |
| 3660 ui::GestureConfiguration::set_max_touch_move_in_pixels_for_click(3); | 3555 ui::GestureConfiguration::set_max_touch_move_in_pixels_for_click(3); |
| 3661 ui::GestureConfiguration::set_min_scroll_delta_squared(9); | 3556 ui::GestureConfiguration::set_min_scroll_delta_squared(9); |
| 3662 scoped_ptr<GestureEventConsumeDelegate> delegate( | 3557 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 3663 new GestureEventConsumeDelegate()); | 3558 new GestureEventConsumeDelegate()); |
| 3664 const int kWindowWidth = 234; | 3559 const int kWindowWidth = 234; |
| 3665 const int kWindowHeight = 345; | 3560 const int kWindowHeight = 345; |
| 3666 const int kTouchId = 5; | 3561 const int kTouchId = 5; |
| 3667 TimedEvents tes; | 3562 TimedEvents tes; |
| 3668 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); | 3563 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); |
| 3669 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 3564 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3707 DispatchEventUsingWindowDispatcher(&move4); | 3602 DispatchEventUsingWindowDispatcher(&move4); |
| 3708 EXPECT_TRUE(delegate->scroll_update()); | 3603 EXPECT_TRUE(delegate->scroll_update()); |
| 3709 EXPECT_EQ(-1, delegate->scroll_y()); | 3604 EXPECT_EQ(-1, delegate->scroll_y()); |
| 3710 | 3605 |
| 3711 delegate->Reset(); | 3606 delegate->Reset(); |
| 3712 } | 3607 } |
| 3713 | 3608 |
| 3714 // Ensure that move events which are preventDefaulted will cause a tap | 3609 // Ensure that move events which are preventDefaulted will cause a tap |
| 3715 // cancel gesture event to be fired if the move would normally cause a | 3610 // cancel gesture event to be fired if the move would normally cause a |
| 3716 // scroll. See bug http://crbug.com/146397. | 3611 // scroll. See bug http://crbug.com/146397. |
| 3717 TEST_P(GestureRecognizerTest, GestureEventConsumedTouchMoveCanFireTapCancel) { | 3612 TEST_F(GestureRecognizerTest, GestureEventConsumedTouchMoveCanFireTapCancel) { |
| 3718 scoped_ptr<ConsumesTouchMovesDelegate> delegate( | 3613 scoped_ptr<ConsumesTouchMovesDelegate> delegate( |
| 3719 new ConsumesTouchMovesDelegate()); | 3614 new ConsumesTouchMovesDelegate()); |
| 3720 const int kTouchId = 5; | 3615 const int kTouchId = 5; |
| 3721 gfx::Rect bounds(100, 200, 123, 45); | 3616 gfx::Rect bounds(100, 200, 123, 45); |
| 3722 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 3617 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 3723 delegate.get(), -1234, bounds, root_window())); | 3618 delegate.get(), -1234, bounds, root_window())); |
| 3724 TimedEvents tes; | 3619 TimedEvents tes; |
| 3725 | 3620 |
| 3726 delegate->Reset(); | 3621 delegate->Reset(); |
| 3727 ui::TouchEvent press(ui::ET_TOUCH_PRESSED, gfx::Point(101, 201), | 3622 ui::TouchEvent press(ui::ET_TOUCH_PRESSED, gfx::Point(101, 201), |
| 3728 kTouchId, tes.Now()); | 3623 kTouchId, tes.Now()); |
| 3729 | 3624 |
| 3730 delegate->set_consume_touch_move(false); | 3625 delegate->set_consume_touch_move(false); |
| 3731 DispatchEventUsingWindowDispatcher(&press); | 3626 DispatchEventUsingWindowDispatcher(&press); |
| 3732 delegate->set_consume_touch_move(true); | 3627 delegate->set_consume_touch_move(true); |
| 3733 delegate->Reset(); | 3628 delegate->Reset(); |
| 3734 // Move the touch-point enough so that it would normally be considered a | 3629 // Move the touch-point enough so that it would normally be considered a |
| 3735 // scroll. But since the touch-moves will be consumed, the scroll should not | 3630 // scroll. But since the touch-moves will be consumed, the scroll should not |
| 3736 // start. | 3631 // start. |
| 3737 tes.SendScrollEvent(event_processor(), 130, 230, kTouchId, delegate.get()); | 3632 tes.SendScrollEvent(event_processor(), 130, 230, kTouchId, delegate.get()); |
| 3738 EXPECT_FALSE(delegate->tap()); | 3633 EXPECT_FALSE(delegate->tap()); |
| 3739 EXPECT_FALSE(delegate->tap_down()); | 3634 EXPECT_FALSE(delegate->tap_down()); |
| 3740 EXPECT_TRUE(delegate->tap_cancel()); | 3635 EXPECT_TRUE(delegate->tap_cancel()); |
| 3741 EXPECT_FALSE(delegate->begin()); | 3636 EXPECT_FALSE(delegate->begin()); |
| 3742 EXPECT_FALSE(delegate->scroll_begin()); | 3637 EXPECT_FALSE(delegate->scroll_begin()); |
| 3743 EXPECT_FALSE(delegate->scroll_update()); | 3638 EXPECT_FALSE(delegate->scroll_update()); |
| 3744 EXPECT_FALSE(delegate->scroll_end()); | 3639 EXPECT_FALSE(delegate->scroll_end()); |
| 3745 } | 3640 } |
| 3746 | 3641 |
| 3747 TEST_P(GestureRecognizerTest, | 3642 TEST_F(GestureRecognizerTest, |
| 3748 TransferEventDispatchesTouchCancel) { | 3643 TransferEventDispatchesTouchCancel) { |
| 3749 scoped_ptr<GestureEventConsumeDelegate> delegate( | 3644 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 3750 new GestureEventConsumeDelegate()); | 3645 new GestureEventConsumeDelegate()); |
| 3751 TimedEvents tes; | 3646 TimedEvents tes; |
| 3752 const int kWindowWidth = 800; | 3647 const int kWindowWidth = 800; |
| 3753 const int kWindowHeight = 600; | 3648 const int kWindowHeight = 600; |
| 3754 const int kTouchId = 2; | 3649 const int kTouchId = 2; |
| 3755 gfx::Rect bounds(0, 0, kWindowWidth, kWindowHeight); | 3650 gfx::Rect bounds(0, 0, kWindowWidth, kWindowHeight); |
| 3756 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 3651 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 3757 delegate.get(), -1234, bounds, root_window())); | 3652 delegate.get(), -1234, bounds, root_window())); |
| (...skipping 22 matching lines...) Expand all Loading... |
| 3780 gesture_recognizer->GetTouchLockedTarget(press)); | 3675 gesture_recognizer->GetTouchLockedTarget(press)); |
| 3781 gesture_recognizer->TransferEventsTo(window.get(), NULL); | 3676 gesture_recognizer->TransferEventsTo(window.get(), NULL); |
| 3782 EXPECT_EQ(NULL, | 3677 EXPECT_EQ(NULL, |
| 3783 gesture_recognizer->GetTouchLockedTarget(press)); | 3678 gesture_recognizer->GetTouchLockedTarget(press)); |
| 3784 // The event-handler removes |window| from its parent on the first | 3679 // The event-handler removes |window| from its parent on the first |
| 3785 // touch-cancel event, so it won't receive the second touch-cancel event. | 3680 // touch-cancel event, so it won't receive the second touch-cancel event. |
| 3786 EXPECT_EQ(1, handler->touch_cancelled_count()); | 3681 EXPECT_EQ(1, handler->touch_cancelled_count()); |
| 3787 } | 3682 } |
| 3788 | 3683 |
| 3789 // Check that appropriate touch events generate show press events | 3684 // Check that appropriate touch events generate show press events |
| 3790 TEST_P(GestureRecognizerTest, GestureEventShowPress) { | 3685 TEST_F(GestureRecognizerTest, GestureEventShowPress) { |
| 3791 scoped_ptr<GestureEventConsumeDelegate> delegate( | 3686 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 3792 new GestureEventConsumeDelegate()); | 3687 new GestureEventConsumeDelegate()); |
| 3793 TimedEvents tes; | 3688 TimedEvents tes; |
| 3794 const int kWindowWidth = 123; | 3689 const int kWindowWidth = 123; |
| 3795 const int kWindowHeight = 45; | 3690 const int kWindowHeight = 45; |
| 3796 const int kTouchId = 2; | 3691 const int kTouchId = 2; |
| 3797 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); | 3692 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); |
| 3798 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 3693 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 3799 delegate.get(), -1234, bounds, root_window())); | 3694 delegate.get(), -1234, bounds, root_window())); |
| 3800 | 3695 |
| (...skipping 18 matching lines...) Expand all Loading... |
| 3819 delegate->WaitUntilReceivedGesture(ui::ET_GESTURE_SHOW_PRESS); | 3714 delegate->WaitUntilReceivedGesture(ui::ET_GESTURE_SHOW_PRESS); |
| 3820 EXPECT_TRUE(delegate->show_press()); | 3715 EXPECT_TRUE(delegate->show_press()); |
| 3821 EXPECT_FALSE(delegate->tap_cancel()); | 3716 EXPECT_FALSE(delegate->tap_cancel()); |
| 3822 | 3717 |
| 3823 delegate->Reset(); | 3718 delegate->Reset(); |
| 3824 ui::TouchEvent release1(ui::ET_TOUCH_RELEASED, gfx::Point(101, 201), | 3719 ui::TouchEvent release1(ui::ET_TOUCH_RELEASED, gfx::Point(101, 201), |
| 3825 kTouchId, tes.Now()); | 3720 kTouchId, tes.Now()); |
| 3826 DispatchEventUsingWindowDispatcher(&release1); | 3721 DispatchEventUsingWindowDispatcher(&release1); |
| 3827 EXPECT_FALSE(delegate->long_press()); | 3722 EXPECT_FALSE(delegate->long_press()); |
| 3828 | 3723 |
| 3829 // Note the tap isn't dispatched until the release | 3724 // Note the tap down isn't cancelled until the release |
| 3830 EXPECT_FALSE(delegate->tap_cancel()); | 3725 EXPECT_TRUE(delegate->tap_cancel()); |
| 3831 EXPECT_TRUE(delegate->tap()); | |
| 3832 } | 3726 } |
| 3833 | 3727 |
| 3834 // Check that scrolling cancels a show press | 3728 // Check that scrolling cancels a show press |
| 3835 TEST_P(GestureRecognizerTest, GestureEventShowPressCancelledByScroll) { | 3729 TEST_F(GestureRecognizerTest, GestureEventShowPressCancelledByScroll) { |
| 3836 scoped_ptr<GestureEventConsumeDelegate> delegate( | 3730 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 3837 new GestureEventConsumeDelegate()); | 3731 new GestureEventConsumeDelegate()); |
| 3838 TimedEvents tes; | 3732 TimedEvents tes; |
| 3839 const int kWindowWidth = 123; | 3733 const int kWindowWidth = 123; |
| 3840 const int kWindowHeight = 45; | 3734 const int kWindowHeight = 45; |
| 3841 const int kTouchId = 6; | 3735 const int kTouchId = 6; |
| 3842 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); | 3736 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); |
| 3843 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 3737 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 3844 delegate.get(), -1234, bounds, root_window())); | 3738 delegate.get(), -1234, bounds, root_window())); |
| 3845 | 3739 |
| (...skipping 26 matching lines...) Expand all Loading... |
| 3872 | 3766 |
| 3873 delegate->Reset(); | 3767 delegate->Reset(); |
| 3874 ui::TouchEvent release1(ui::ET_TOUCH_RELEASED, gfx::Point(101, 201), | 3768 ui::TouchEvent release1(ui::ET_TOUCH_RELEASED, gfx::Point(101, 201), |
| 3875 kTouchId, tes.LeapForward(10)); | 3769 kTouchId, tes.LeapForward(10)); |
| 3876 DispatchEventUsingWindowDispatcher(&release1); | 3770 DispatchEventUsingWindowDispatcher(&release1); |
| 3877 EXPECT_FALSE(delegate->show_press()); | 3771 EXPECT_FALSE(delegate->show_press()); |
| 3878 EXPECT_FALSE(delegate->tap_cancel()); | 3772 EXPECT_FALSE(delegate->tap_cancel()); |
| 3879 } | 3773 } |
| 3880 | 3774 |
| 3881 // Test that show press events are sent immediately on tap | 3775 // Test that show press events are sent immediately on tap |
| 3882 TEST_P(GestureRecognizerTest, GestureEventShowPressSentOnTap) { | 3776 TEST_F(GestureRecognizerTest, GestureEventShowPressSentOnTap) { |
| 3883 scoped_ptr<GestureEventConsumeDelegate> delegate( | 3777 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 3884 new GestureEventConsumeDelegate()); | 3778 new GestureEventConsumeDelegate()); |
| 3885 TimedEvents tes; | 3779 TimedEvents tes; |
| 3886 const int kWindowWidth = 123; | 3780 const int kWindowWidth = 123; |
| 3887 const int kWindowHeight = 45; | 3781 const int kWindowHeight = 45; |
| 3888 const int kTouchId = 6; | 3782 const int kTouchId = 6; |
| 3889 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); | 3783 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); |
| 3890 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 3784 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 3891 delegate.get(), -1234, bounds, root_window())); | 3785 delegate.get(), -1234, bounds, root_window())); |
| 3892 | 3786 |
| (...skipping 11 matching lines...) Expand all Loading... |
| 3904 delegate->Reset(); | 3798 delegate->Reset(); |
| 3905 ui::TouchEvent release1(ui::ET_TOUCH_RELEASED, gfx::Point(101, 201), | 3799 ui::TouchEvent release1(ui::ET_TOUCH_RELEASED, gfx::Point(101, 201), |
| 3906 kTouchId, tes.LeapForward(50)); | 3800 kTouchId, tes.LeapForward(50)); |
| 3907 DispatchEventUsingWindowDispatcher(&release1); | 3801 DispatchEventUsingWindowDispatcher(&release1); |
| 3908 EXPECT_TRUE(delegate->show_press()); | 3802 EXPECT_TRUE(delegate->show_press()); |
| 3909 EXPECT_FALSE(delegate->tap_cancel()); | 3803 EXPECT_FALSE(delegate->tap_cancel()); |
| 3910 EXPECT_TRUE(delegate->tap()); | 3804 EXPECT_TRUE(delegate->tap()); |
| 3911 } | 3805 } |
| 3912 | 3806 |
| 3913 // Test that consuming the first move touch event prevents a scroll. | 3807 // Test that consuming the first move touch event prevents a scroll. |
| 3914 TEST_P(GestureRecognizerTest, GestureEventConsumedTouchMoveScrollTest) { | 3808 TEST_F(GestureRecognizerTest, GestureEventConsumedTouchMoveScrollTest) { |
| 3915 scoped_ptr<QueueTouchEventDelegate> delegate( | 3809 scoped_ptr<QueueTouchEventDelegate> delegate( |
| 3916 new QueueTouchEventDelegate(host()->dispatcher())); | 3810 new QueueTouchEventDelegate(host()->dispatcher())); |
| 3917 TimedEvents tes; | 3811 TimedEvents tes; |
| 3918 const int kTouchId = 7; | 3812 const int kTouchId = 7; |
| 3919 gfx::Rect bounds(0, 0, 1000, 1000); | 3813 gfx::Rect bounds(0, 0, 1000, 1000); |
| 3920 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 3814 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 3921 delegate.get(), -1234, bounds, root_window())); | 3815 delegate.get(), -1234, bounds, root_window())); |
| 3922 | 3816 |
| 3923 ui::TouchEvent press(ui::ET_TOUCH_PRESSED, gfx::Point(0, 0), | 3817 ui::TouchEvent press(ui::ET_TOUCH_PRESSED, gfx::Point(0, 0), |
| 3924 kTouchId, tes.Now()); | 3818 kTouchId, tes.Now()); |
| 3925 DispatchEventUsingWindowDispatcher(&press); | 3819 DispatchEventUsingWindowDispatcher(&press); |
| 3926 delegate->ReceivedAck(); | 3820 delegate->ReceivedAck(); |
| 3927 | 3821 |
| 3928 // A touch move within the slop region is never consumed in web contents. The | 3822 ui::TouchEvent move1(ui::ET_TOUCH_MOVED, gfx::Point(2, 2), |
| 3929 // unified GR won't prevent scroll if a touch move within the slop region is | |
| 3930 // consumed, so make sure this touch move exceeds the slop region. | |
| 3931 ui::TouchEvent move1(ui::ET_TOUCH_MOVED, gfx::Point(10, 10), | |
| 3932 kTouchId, tes.Now()); | 3823 kTouchId, tes.Now()); |
| 3933 DispatchEventUsingWindowDispatcher(&move1); | 3824 DispatchEventUsingWindowDispatcher(&move1); |
| 3934 delegate->ReceivedAckPreventDefaulted(); | 3825 delegate->ReceivedAckPreventDefaulted(); |
| 3935 | 3826 |
| 3936 ui::TouchEvent move2(ui::ET_TOUCH_MOVED, gfx::Point(20, 20), | 3827 ui::TouchEvent move2(ui::ET_TOUCH_MOVED, gfx::Point(20, 20), |
| 3937 kTouchId, tes.Now()); | 3828 kTouchId, tes.Now()); |
| 3938 DispatchEventUsingWindowDispatcher(&move2); | 3829 DispatchEventUsingWindowDispatcher(&move2); |
| 3939 delegate->ReceivedAck(); | 3830 delegate->ReceivedAck(); |
| 3940 | 3831 |
| 3941 EXPECT_FALSE(delegate->scroll_begin()); | 3832 EXPECT_FALSE(delegate->scroll_begin()); |
| 3942 EXPECT_FALSE(delegate->scroll_update()); | 3833 EXPECT_FALSE(delegate->scroll_update()); |
| 3943 } | 3834 } |
| 3944 | 3835 |
| 3945 // Test that consuming the first touch move event of a touch point doesn't | 3836 // Test that consuming the first touch move event of a touch point doesn't |
| 3946 // prevent pinching once an additional touch has been pressed. | 3837 // prevent pinching once an additional touch has been pressed. |
| 3947 TEST_P(GestureRecognizerTest, GestureEventConsumedTouchMovePinchTest) { | 3838 TEST_F(GestureRecognizerTest, GestureEventConsumedTouchMovePinchTest) { |
| 3948 // Consuming moves within the touch slop and the the disposition handling of | |
| 3949 // pinch events behave differently between the Unified GR and the Aura GR. | |
| 3950 if (UsingUnifiedGR()) | |
| 3951 return; | |
| 3952 | |
| 3953 scoped_ptr<QueueTouchEventDelegate> delegate( | 3839 scoped_ptr<QueueTouchEventDelegate> delegate( |
| 3954 new QueueTouchEventDelegate(host()->dispatcher())); | 3840 new QueueTouchEventDelegate(host()->dispatcher())); |
| 3955 TimedEvents tes; | 3841 TimedEvents tes; |
| 3956 const int kTouchId1 = 7; | 3842 const int kTouchId1 = 7; |
| 3957 const int kTouchId2 = 4; | 3843 const int kTouchId2 = 4; |
| 3958 gfx::Rect bounds(0, 0, 1000, 1000); | 3844 gfx::Rect bounds(0, 0, 1000, 1000); |
| 3959 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 3845 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 3960 delegate.get(), -1234, bounds, root_window())); | 3846 delegate.get(), -1234, bounds, root_window())); |
| 3961 | 3847 |
| 3962 ui::TouchEvent press1(ui::ET_TOUCH_PRESSED, gfx::Point(0, 0), | 3848 ui::TouchEvent press1(ui::ET_TOUCH_PRESSED, gfx::Point(0, 0), |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3999 kTouchId2, tes.Now()); | 3885 kTouchId2, tes.Now()); |
| 4000 DispatchEventUsingWindowDispatcher(&move4); | 3886 DispatchEventUsingWindowDispatcher(&move4); |
| 4001 delegate->ReceivedAck(); | 3887 delegate->ReceivedAck(); |
| 4002 | 3888 |
| 4003 EXPECT_TRUE(delegate->pinch_update()); | 3889 EXPECT_TRUE(delegate->pinch_update()); |
| 4004 EXPECT_EQ(10, delegate->scroll_x()); | 3890 EXPECT_EQ(10, delegate->scroll_x()); |
| 4005 EXPECT_EQ(10, delegate->scroll_y()); | 3891 EXPECT_EQ(10, delegate->scroll_y()); |
| 4006 } | 3892 } |
| 4007 | 3893 |
| 4008 // Test that consuming the first move touch doesn't prevent a tap. | 3894 // Test that consuming the first move touch doesn't prevent a tap. |
| 4009 TEST_P(GestureRecognizerTest, GestureEventConsumedTouchMoveTapTest) { | 3895 TEST_F(GestureRecognizerTest, GestureEventConsumedTouchMoveTapTest) { |
| 4010 scoped_ptr<QueueTouchEventDelegate> delegate( | 3896 scoped_ptr<QueueTouchEventDelegate> delegate( |
| 4011 new QueueTouchEventDelegate(host()->dispatcher())); | 3897 new QueueTouchEventDelegate(host()->dispatcher())); |
| 4012 TimedEvents tes; | 3898 TimedEvents tes; |
| 4013 const int kTouchId = 7; | 3899 const int kTouchId = 7; |
| 4014 gfx::Rect bounds(0, 0, 1000, 1000); | 3900 gfx::Rect bounds(0, 0, 1000, 1000); |
| 4015 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 3901 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 4016 delegate.get(), -1234, bounds, root_window())); | 3902 delegate.get(), -1234, bounds, root_window())); |
| 4017 | 3903 |
| 4018 ui::TouchEvent press(ui::ET_TOUCH_PRESSED, gfx::Point(0, 0), | 3904 ui::TouchEvent press(ui::ET_TOUCH_PRESSED, gfx::Point(0, 0), |
| 4019 kTouchId, tes.Now()); | 3905 kTouchId, tes.Now()); |
| 4020 DispatchEventUsingWindowDispatcher(&press); | 3906 DispatchEventUsingWindowDispatcher(&press); |
| 4021 delegate->ReceivedAck(); | 3907 delegate->ReceivedAck(); |
| 4022 | 3908 |
| 4023 ui::TouchEvent move(ui::ET_TOUCH_MOVED, gfx::Point(2, 2), | 3909 ui::TouchEvent move(ui::ET_TOUCH_MOVED, gfx::Point(2, 2), |
| 4024 kTouchId, tes.Now()); | 3910 kTouchId, tes.Now()); |
| 4025 DispatchEventUsingWindowDispatcher(&move); | 3911 DispatchEventUsingWindowDispatcher(&move); |
| 4026 delegate->ReceivedAckPreventDefaulted(); | 3912 delegate->ReceivedAckPreventDefaulted(); |
| 4027 | 3913 |
| 4028 ui::TouchEvent release(ui::ET_TOUCH_RELEASED, gfx::Point(2, 2), | 3914 ui::TouchEvent release(ui::ET_TOUCH_RELEASED, gfx::Point(2, 2), |
| 4029 kTouchId, tes.LeapForward(50)); | 3915 kTouchId, tes.LeapForward(50)); |
| 4030 DispatchEventUsingWindowDispatcher(&release); | 3916 DispatchEventUsingWindowDispatcher(&release); |
| 4031 delegate->ReceivedAck(); | 3917 delegate->ReceivedAck(); |
| 4032 | 3918 |
| 4033 EXPECT_TRUE(delegate->tap()); | 3919 EXPECT_TRUE(delegate->tap()); |
| 4034 } | 3920 } |
| 4035 | 3921 |
| 4036 // Test that consuming the first move touch doesn't prevent a long press. | 3922 // Test that consuming the first move touch doesn't prevent a long press. |
| 4037 TEST_P(GestureRecognizerTest, GestureEventConsumedTouchMoveLongPressTest) { | 3923 TEST_F(GestureRecognizerTest, GestureEventConsumedTouchMoveLongPressTest) { |
| 4038 scoped_ptr<QueueTouchEventDelegate> delegate( | 3924 scoped_ptr<QueueTouchEventDelegate> delegate( |
| 4039 new QueueTouchEventDelegate(host()->dispatcher())); | 3925 new QueueTouchEventDelegate(host()->dispatcher())); |
| 4040 TimedEvents tes; | 3926 TimedEvents tes; |
| 4041 const int kWindowWidth = 123; | 3927 const int kWindowWidth = 123; |
| 4042 const int kWindowHeight = 45; | 3928 const int kWindowHeight = 45; |
| 4043 const int kTouchId = 2; | 3929 const int kTouchId = 2; |
| 4044 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); | 3930 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); |
| 4045 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 3931 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 4046 delegate.get(), -1234, bounds, root_window())); | 3932 delegate.get(), -1234, bounds, root_window())); |
| 4047 | 3933 |
| (...skipping 13 matching lines...) Expand all Loading... |
| 4061 kTouchId, tes.Now()); | 3947 kTouchId, tes.Now()); |
| 4062 DispatchEventUsingWindowDispatcher(&move); | 3948 DispatchEventUsingWindowDispatcher(&move); |
| 4063 delegate->ReceivedAckPreventDefaulted(); | 3949 delegate->ReceivedAckPreventDefaulted(); |
| 4064 | 3950 |
| 4065 // Wait until the timer runs out | 3951 // Wait until the timer runs out |
| 4066 delegate->WaitUntilReceivedGesture(ui::ET_GESTURE_LONG_PRESS); | 3952 delegate->WaitUntilReceivedGesture(ui::ET_GESTURE_LONG_PRESS); |
| 4067 EXPECT_TRUE(delegate->long_press()); | 3953 EXPECT_TRUE(delegate->long_press()); |
| 4068 } | 3954 } |
| 4069 | 3955 |
| 4070 // Tests that the deltas are correct when leaving the slop region very slowly. | 3956 // Tests that the deltas are correct when leaving the slop region very slowly. |
| 4071 TEST_P(GestureRecognizerTest, TestExceedingSlopSlowly) { | 3957 TEST_F(GestureRecognizerTest, TestExceedingSlopSlowly) { |
| 4072 // Disabled for unified GR due to subtle differences in touch slop handling. | |
| 4073 if (UsingUnifiedGR()) | |
| 4074 return; | |
| 4075 | |
| 4076 ui::GestureConfiguration::set_max_touch_move_in_pixels_for_click(3); | 3958 ui::GestureConfiguration::set_max_touch_move_in_pixels_for_click(3); |
| 4077 scoped_ptr<GestureEventConsumeDelegate> delegate( | 3959 scoped_ptr<GestureEventConsumeDelegate> delegate( |
| 4078 new GestureEventConsumeDelegate()); | 3960 new GestureEventConsumeDelegate()); |
| 4079 const int kWindowWidth = 234; | 3961 const int kWindowWidth = 234; |
| 4080 const int kWindowHeight = 345; | 3962 const int kWindowHeight = 345; |
| 4081 const int kTouchId = 5; | 3963 const int kTouchId = 5; |
| 4082 TimedEvents tes; | 3964 TimedEvents tes; |
| 4083 gfx::Rect bounds(0, 0, kWindowWidth, kWindowHeight); | 3965 gfx::Rect bounds(0, 0, kWindowWidth, kWindowHeight); |
| 4084 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 3966 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 4085 delegate.get(), -1234, bounds, root_window())); | 3967 delegate.get(), -1234, bounds, root_window())); |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4123 ui::TouchEvent move4(ui::ET_TOUCH_MOVED, gfx::Point(14, 10), kTouchId, | 4005 ui::TouchEvent move4(ui::ET_TOUCH_MOVED, gfx::Point(14, 10), kTouchId, |
| 4124 tes.LeapForward(40)); | 4006 tes.LeapForward(40)); |
| 4125 DispatchEventUsingWindowDispatcher(&move4); | 4007 DispatchEventUsingWindowDispatcher(&move4); |
| 4126 EXPECT_FALSE(delegate->scroll_begin()); | 4008 EXPECT_FALSE(delegate->scroll_begin()); |
| 4127 EXPECT_TRUE(delegate->scroll_update()); | 4009 EXPECT_TRUE(delegate->scroll_update()); |
| 4128 EXPECT_EQ(1, delegate->scroll_x()); | 4010 EXPECT_EQ(1, delegate->scroll_x()); |
| 4129 EXPECT_EQ(0, delegate->scroll_x_hint()); | 4011 EXPECT_EQ(0, delegate->scroll_x_hint()); |
| 4130 delegate->Reset(); | 4012 delegate->Reset(); |
| 4131 } | 4013 } |
| 4132 | 4014 |
| 4133 TEST_P(GestureRecognizerTest, ScrollAlternatelyConsumedTest) { | 4015 TEST_F(GestureRecognizerTest, ScrollAlternatelyConsumedTest) { |
| 4134 scoped_ptr<QueueTouchEventDelegate> delegate( | 4016 scoped_ptr<QueueTouchEventDelegate> delegate( |
| 4135 new QueueTouchEventDelegate(host()->dispatcher())); | 4017 new QueueTouchEventDelegate(host()->dispatcher())); |
| 4136 TimedEvents tes; | 4018 TimedEvents tes; |
| 4137 const int kWindowWidth = 3000; | 4019 const int kWindowWidth = 3000; |
| 4138 const int kWindowHeight = 3000; | 4020 const int kWindowHeight = 3000; |
| 4139 const int kTouchId = 2; | 4021 const int kTouchId = 2; |
| 4140 gfx::Rect bounds(0, 0, kWindowWidth, kWindowHeight); | 4022 gfx::Rect bounds(0, 0, kWindowWidth, kWindowHeight); |
| 4141 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 4023 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 4142 delegate.get(), -1234, bounds, root_window())); | 4024 delegate.get(), -1234, bounds, root_window())); |
| 4143 | 4025 |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4182 ui::TouchEvent move3( | 4064 ui::TouchEvent move3( |
| 4183 ui::ET_TOUCH_MOVED, gfx::Point(x, y), kTouchId, tes.Now()); | 4065 ui::ET_TOUCH_MOVED, gfx::Point(x, y), kTouchId, tes.Now()); |
| 4184 DispatchEventUsingWindowDispatcher(&move3); | 4066 DispatchEventUsingWindowDispatcher(&move3); |
| 4185 delegate->ReceivedAckPreventDefaulted(); | 4067 delegate->ReceivedAckPreventDefaulted(); |
| 4186 EXPECT_FALSE(delegate->scroll_begin()); | 4068 EXPECT_FALSE(delegate->scroll_begin()); |
| 4187 EXPECT_FALSE(delegate->scroll_update()); | 4069 EXPECT_FALSE(delegate->scroll_update()); |
| 4188 delegate->Reset(); | 4070 delegate->Reset(); |
| 4189 } | 4071 } |
| 4190 } | 4072 } |
| 4191 | 4073 |
| 4192 TEST_P(GestureRecognizerTest, PinchAlternatelyConsumedTest) { | 4074 TEST_F(GestureRecognizerTest, PinchAlternatelyConsumedTest) { |
| 4193 // Disabled for unified GR due to differences in when scroll update is | |
| 4194 // sent. The Aura GR will never send a ScrollUpdate with a ScrollBegin, but | |
| 4195 // the unified GR will. | |
| 4196 if (UsingUnifiedGR()) | |
| 4197 return; | |
| 4198 | |
| 4199 scoped_ptr<QueueTouchEventDelegate> delegate( | 4075 scoped_ptr<QueueTouchEventDelegate> delegate( |
| 4200 new QueueTouchEventDelegate(host()->dispatcher())); | 4076 new QueueTouchEventDelegate(host()->dispatcher())); |
| 4201 TimedEvents tes; | 4077 TimedEvents tes; |
| 4202 const int kWindowWidth = 3000; | 4078 const int kWindowWidth = 3000; |
| 4203 const int kWindowHeight = 3000; | 4079 const int kWindowHeight = 3000; |
| 4204 const int kTouchId1 = 5; | 4080 const int kTouchId1 = 5; |
| 4205 const int kTouchId2 = 7; | 4081 const int kTouchId2 = 7; |
| 4206 gfx::Rect bounds(0, 0, kWindowWidth, kWindowHeight); | 4082 gfx::Rect bounds(0, 0, kWindowWidth, kWindowHeight); |
| 4207 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | 4083 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( |
| 4208 delegate.get(), -1234, bounds, root_window())); | 4084 delegate.get(), -1234, bounds, root_window())); |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4272 EXPECT_FALSE(delegate->scroll_begin()); | 4148 EXPECT_FALSE(delegate->scroll_begin()); |
| 4273 EXPECT_FALSE(delegate->scroll_update()); | 4149 EXPECT_FALSE(delegate->scroll_update()); |
| 4274 EXPECT_FALSE(delegate->scroll_end()); | 4150 EXPECT_FALSE(delegate->scroll_end()); |
| 4275 EXPECT_FALSE(delegate->pinch_begin()); | 4151 EXPECT_FALSE(delegate->pinch_begin()); |
| 4276 EXPECT_FALSE(delegate->pinch_update()); | 4152 EXPECT_FALSE(delegate->pinch_update()); |
| 4277 EXPECT_FALSE(delegate->pinch_end()); | 4153 EXPECT_FALSE(delegate->pinch_end()); |
| 4278 delegate->Reset(); | 4154 delegate->Reset(); |
| 4279 } | 4155 } |
| 4280 } | 4156 } |
| 4281 | 4157 |
| 4282 // Test that touch event flags are passed through to the gesture event. | |
| 4283 TEST_P(GestureRecognizerTest, GestureEventFlagsPassedFromTouchEvent) { | |
| 4284 scoped_ptr<GestureEventConsumeDelegate> delegate( | |
| 4285 new GestureEventConsumeDelegate()); | |
| 4286 TimedEvents tes; | |
| 4287 const int kWindowWidth = 123; | |
| 4288 const int kWindowHeight = 45; | |
| 4289 const int kTouchId = 6; | |
| 4290 gfx::Rect bounds(100, 200, kWindowWidth, kWindowHeight); | |
| 4291 scoped_ptr<aura::Window> window(CreateTestWindowWithDelegate( | |
| 4292 delegate.get(), -1234, bounds, root_window())); | |
| 4293 | |
| 4294 delegate->Reset(); | |
| 4295 | |
| 4296 ui::TouchEvent press1(ui::ET_TOUCH_PRESSED, gfx::Point(101, 201), | |
| 4297 kTouchId, tes.Now()); | |
| 4298 DispatchEventUsingWindowDispatcher(&press1); | |
| 4299 EXPECT_TRUE(delegate->tap_down()); | |
| 4300 | |
| 4301 int default_flags = delegate->flags(); | |
| 4302 | |
| 4303 ui::TouchEvent move1( | |
| 4304 ui::ET_TOUCH_MOVED, gfx::Point(397, 149), kTouchId, tes.LeapForward(50)); | |
| 4305 move1.set_flags(992); | |
| 4306 | |
| 4307 DispatchEventUsingWindowDispatcher(&move1); | |
| 4308 EXPECT_NE(default_flags, delegate->flags()); | |
| 4309 } | |
| 4310 | |
| 4311 INSTANTIATE_TEST_CASE_P(GestureRecognizer, | |
| 4312 GestureRecognizerTest, | |
| 4313 ::testing::Bool()); | |
| 4314 | |
| 4315 } // namespace test | 4158 } // namespace test |
| 4316 } // namespace aura | 4159 } // namespace aura |
| OLD | NEW |