| Index: ui/events/gesture_detection/touch_disposition_gesture_filter_unittest.cc
|
| diff --git a/ui/events/gesture_detection/touch_disposition_gesture_filter_unittest.cc b/ui/events/gesture_detection/touch_disposition_gesture_filter_unittest.cc
|
| index 07cfb1754a3e4b09c9ab6c637faa504e9b883d95..2e37efb976b084e0e04558ecf6338b6ba3ee96c2 100644
|
| --- a/ui/events/gesture_detection/touch_disposition_gesture_filter_unittest.cc
|
| +++ b/ui/events/gesture_detection/touch_disposition_gesture_filter_unittest.cc
|
| @@ -11,6 +11,11 @@
|
| using ui::test::MockMotionEvent;
|
|
|
| namespace ui {
|
| +namespace {
|
| +
|
| +const int kDefaultEventFlags = EF_ALT_DOWN | EF_SHIFT_DOWN;
|
| +
|
| +} // namespace
|
|
|
| class TouchDispositionGestureFilterTest
|
| : public testing::Test,
|
| @@ -23,6 +28,7 @@ class TouchDispositionGestureFilterTest
|
| // testing::Test
|
| virtual void SetUp() OVERRIDE {
|
| queue_.reset(new TouchDispositionGestureFilter(this));
|
| + touch_event_.set_flags(kDefaultEventFlags);
|
| }
|
|
|
| virtual void TearDown() OVERRIDE {
|
| @@ -32,10 +38,8 @@ class TouchDispositionGestureFilterTest
|
| // TouchDispositionGestureFilterClient
|
| virtual void ForwardGestureEvent(const GestureEventData& event) OVERRIDE {
|
| ++sent_gesture_count_;
|
| - last_sent_gesture_time_ = event.time;
|
| + last_sent_gesture_.reset(new GestureEventData(event));
|
| sent_gestures_.push_back(event.type());
|
| - last_sent_gesture_location_ = gfx::PointF(event.x, event.y);
|
| - last_sent_gesture_raw_location_ = gfx::PointF(event.raw_x, event.raw_y);
|
| if (event.type() == ET_GESTURE_SHOW_PRESS)
|
| show_press_bounding_box_ = event.details.bounding_box();
|
| if (cancel_after_next_gesture_) {
|
| @@ -178,7 +182,8 @@ class TouchDispositionGestureFilterTest
|
| bool GesturesSent() const { return !sent_gestures_.empty(); }
|
|
|
| base::TimeTicks LastSentGestureTime() const {
|
| - return last_sent_gesture_time_;
|
| + CHECK(last_sent_gesture_);
|
| + return last_sent_gesture_->time;
|
| }
|
|
|
| base::TimeTicks CurrentTouchTime() const {
|
| @@ -193,12 +198,19 @@ class TouchDispositionGestureFilterTest
|
| return sent_gestures;
|
| }
|
|
|
| - const gfx::PointF& LastSentGestureLocation() const {
|
| - return last_sent_gesture_location_;
|
| + gfx::PointF LastSentGestureLocation() const {
|
| + CHECK(last_sent_gesture_);
|
| + return gfx::PointF(last_sent_gesture_->x, last_sent_gesture_->y);
|
| + }
|
| +
|
| + gfx::PointF LastSentGestureRawLocation() const {
|
| + CHECK(last_sent_gesture_);
|
| + return gfx::PointF(last_sent_gesture_->raw_x, last_sent_gesture_->raw_y);
|
| }
|
|
|
| - const gfx::PointF& LastSentGestureRawLocation() const {
|
| - return last_sent_gesture_raw_location_;
|
| + int LastSentGestureFlags() const {
|
| + CHECK(last_sent_gesture_);
|
| + return last_sent_gesture_->flags;
|
| }
|
|
|
| const gfx::RectF& ShowPressBoundingBox() const {
|
| @@ -227,7 +239,8 @@ class TouchDispositionGestureFilterTest
|
| touch_event_.GetRawX(0),
|
| touch_event_.GetRawY(0),
|
| 1,
|
| - gfx::RectF(x - diameter / 2, y - diameter / 2, diameter, diameter));
|
| + gfx::RectF(x - diameter / 2, y - diameter / 2, diameter, diameter),
|
| + kDefaultEventFlags);
|
| }
|
|
|
| private:
|
| @@ -236,11 +249,9 @@ class TouchDispositionGestureFilterTest
|
| MockMotionEvent touch_event_;
|
| GestureEventDataPacket pending_gesture_packet_;
|
| size_t sent_gesture_count_;
|
| - base::TimeTicks last_sent_gesture_time_;
|
| GestureList sent_gestures_;
|
| gfx::Vector2dF raw_offset_;
|
| - gfx::PointF last_sent_gesture_location_;
|
| - gfx::PointF last_sent_gesture_raw_location_;
|
| + scoped_ptr<GestureEventData> last_sent_gesture_;
|
| gfx::RectF show_press_bounding_box_;
|
| };
|
|
|
| @@ -1122,4 +1133,21 @@ TEST_F(TouchDispositionGestureFilterTest, TapCancelledBeforeGestureEnd) {
|
| GetAndResetSentGestures()));
|
| }
|
|
|
| +TEST_F(TouchDispositionGestureFilterTest, EventFlagPropagation) {
|
| + // Real gestures should propagate flags from their causal touches.
|
| + PushGesture(ET_GESTURE_TAP_DOWN);
|
| + PressTouchPoint(1, 1);
|
| + SendTouchNotConsumedAck();
|
| + EXPECT_TRUE(
|
| + GesturesMatch(Gestures(ET_GESTURE_TAP_DOWN), GetAndResetSentGestures()));
|
| + EXPECT_EQ(kDefaultEventFlags, LastSentGestureFlags());
|
| +
|
| + // Synthetic gestures lack flags.
|
| + PressTouchPoint(1, 1);
|
| + SendTouchNotConsumedAck();
|
| + EXPECT_TRUE(GesturesMatch(Gestures(ET_GESTURE_TAP_CANCEL),
|
| + GetAndResetSentGestures()));
|
| + EXPECT_EQ(0, LastSentGestureFlags());
|
| +}
|
| +
|
| } // namespace ui
|
|
|