Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(191)

Side by Side Diff: ui/events/gesture_detection/gesture_provider.cc

Issue 1049383003: Postpone rail application for touch scrolling - chrome side. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ui/events/gesture_detection/gesture_provider.h" 5 #include "ui/events/gesture_detection/gesture_provider.h"
6 6
7 #include <cmath> 7 #include <cmath>
8 8
9 #include "base/auto_reset.h" 9 #include "base/auto_reset.h"
10 #include "base/trace_event/trace_event.h" 10 #include "base/trace_event/trace_event.h"
11 #include "ui/events/event_constants.h" 11 #include "ui/events/event_constants.h"
12 #include "ui/events/gesture_detection/gesture_detection_switches.h"
12 #include "ui/events/gesture_detection/gesture_event_data.h" 13 #include "ui/events/gesture_detection/gesture_event_data.h"
13 #include "ui/events/gesture_detection/gesture_listeners.h" 14 #include "ui/events/gesture_detection/gesture_listeners.h"
14 #include "ui/events/gesture_detection/motion_event.h" 15 #include "ui/events/gesture_detection/motion_event.h"
15 #include "ui/events/gesture_detection/motion_event_generic.h" 16 #include "ui/events/gesture_detection/motion_event_generic.h"
16 #include "ui/events/gesture_detection/scale_gesture_listeners.h" 17 #include "ui/events/gesture_detection/scale_gesture_listeners.h"
17 #include "ui/gfx/geometry/point_f.h" 18 #include "ui/gfx/geometry/point_f.h"
18 19
19 namespace ui { 20 namespace ui {
20 namespace { 21 namespace {
21 22
(...skipping 289 matching lines...) Expand 10 before | Expand all | Expand 10 after
311 e1.GetY(), 312 e1.GetY(),
312 e1.GetRawX(), 313 e1.GetRawX(),
313 e1.GetRawY(), 314 e1.GetRawY(),
314 e2.GetPointerCount(), 315 e2.GetPointerCount(),
315 GetBoundingBox(e2, scroll_details.type()), 316 GetBoundingBox(e2, scroll_details.type()),
316 e2.GetFlags())); 317 e2.GetFlags()));
317 DCHECK(scroll_event_sent_); 318 DCHECK(scroll_event_sent_);
318 } 319 }
319 320
320 snap_scroll_controller_.UpdateSnapScrollMode(distance_x, distance_y); 321 snap_scroll_controller_.UpdateSnapScrollMode(distance_x, distance_y);
321 if (snap_scroll_controller_.IsSnappingScrolls()) { 322
323 if (!PostponeRailApplication() &&
jdduke (slow) 2015/04/01 17:40:49 We've worked hard to keep globals out of the gestu
324 snap_scroll_controller_.IsSnappingScrolls()) {
322 if (snap_scroll_controller_.IsSnapHorizontal()) 325 if (snap_scroll_controller_.IsSnapHorizontal())
323 distance_y = 0; 326 distance_y = 0;
324 else 327 else
325 distance_x = 0; 328 distance_x = 0;
326 } 329 }
327 330
328 if (distance_x || distance_y) { 331 if (distance_x || distance_y) {
329 GestureEventDetails scroll_details( 332 GestureEventDetails scroll_details(
330 ET_GESTURE_SCROLL_UPDATE, -distance_x, -distance_y); 333 ET_GESTURE_SCROLL_UPDATE, -distance_x, -distance_y,
334 snap_scroll_controller_.ScrollRailState());
335
331 const gfx::RectF bounding_box = GetBoundingBox(e2, scroll_details.type()); 336 const gfx::RectF bounding_box = GetBoundingBox(e2, scroll_details.type());
332 const gfx::PointF center = bounding_box.CenterPoint(); 337 const gfx::PointF center = bounding_box.CenterPoint();
333 const gfx::PointF raw_center = 338 const gfx::PointF raw_center =
334 center + gfx::Vector2dF(e2.GetRawOffsetX(), e2.GetRawOffsetY()); 339 center + gfx::Vector2dF(e2.GetRawOffsetX(), e2.GetRawOffsetY());
335 Send(CreateGesture(scroll_details, 340 Send(CreateGesture(scroll_details,
336 e2.GetId(), 341 e2.GetId(),
337 e2.GetToolType(), 342 e2.GetToolType(),
338 e2.GetEventTime(), 343 e2.GetEventTime(),
339 center.x(), 344 center.x(),
340 center.y(), 345 center.y(),
341 raw_center.x(), 346 raw_center.x(),
342 raw_center.y(), 347 raw_center.y(),
343 e2.GetPointerCount(), 348 e2.GetPointerCount(),
344 bounding_box, 349 bounding_box,
345 e2.GetFlags())); 350 e2.GetFlags()));
346 } 351 }
347 352
348 return true; 353 return true;
349 } 354 }
350 355
351 bool OnFling(const MotionEvent& e1, 356 bool OnFling(const MotionEvent& e1,
352 const MotionEvent& e2, 357 const MotionEvent& e2,
353 float velocity_x, 358 float velocity_x,
354 float velocity_y) override { 359 float velocity_y) override {
355 if (snap_scroll_controller_.IsSnappingScrolls()) {
356 if (snap_scroll_controller_.IsSnapHorizontal()) {
357 velocity_y = 0;
358 } else {
359 velocity_x = 0;
360 }
361 }
362
363 if (!velocity_x && !velocity_y) 360 if (!velocity_x && !velocity_y)
364 return true; 361 return true;
365 362
366 if (!scroll_event_sent_) { 363 if (!scroll_event_sent_) {
367 // The native side needs a ET_GESTURE_SCROLL_BEGIN before 364 // The native side needs a ET_GESTURE_SCROLL_BEGIN before
368 // ET_SCROLL_FLING_START to send the fling to the correct target. 365 // ET_SCROLL_FLING_START to send the fling to the correct target.
369 // The distance traveled in one second is a reasonable scroll start hint. 366 // The distance traveled in one second is a reasonable scroll start hint.
370 GestureEventDetails scroll_details( 367 GestureEventDetails scroll_details(
371 ET_GESTURE_SCROLL_BEGIN, velocity_x, velocity_y); 368 ET_GESTURE_SCROLL_BEGIN, velocity_x, velocity_y);
372 Send(CreateGesture(scroll_details, e2)); 369 Send(CreateGesture(scroll_details, e2));
373 } 370 }
374 371
372 if (!PostponeRailApplication() &&
373 snap_scroll_controller_.IsSnappingScrolls()) {
374 if (snap_scroll_controller_.IsSnapHorizontal())
375 velocity_y = 0;
376 else
377 velocity_x = 0;
378 }
379
375 GestureEventDetails fling_details( 380 GestureEventDetails fling_details(
376 ET_SCROLL_FLING_START, velocity_x, velocity_y); 381 ET_SCROLL_FLING_START, velocity_x, velocity_y,
382 snap_scroll_controller_.ScrollRailState());
377 Send(CreateGesture(fling_details, e2)); 383 Send(CreateGesture(fling_details, e2));
378 return true; 384 return true;
379 } 385 }
380 386
381 bool OnSwipe(const MotionEvent& e1, 387 bool OnSwipe(const MotionEvent& e1,
382 const MotionEvent& e2, 388 const MotionEvent& e2,
383 float velocity_x, 389 float velocity_x,
384 float velocity_y) override { 390 float velocity_y) override {
385 GestureEventDetails swipe_details(ET_GESTURE_SWIPE, velocity_x, velocity_y); 391 GestureEventDetails swipe_details(ET_GESTURE_SWIPE, velocity_x, velocity_y);
386 Send(CreateGesture(swipe_details, e2)); 392 Send(CreateGesture(swipe_details, e2));
(...skipping 436 matching lines...) Expand 10 before | Expand all | Expand 10 after
823 // null'ing of the listener until the sequence has ended. 829 // null'ing of the listener until the sequence has ended.
824 if (current_down_event_) 830 if (current_down_event_)
825 return; 831 return;
826 832
827 const bool double_tap_enabled = 833 const bool double_tap_enabled =
828 double_tap_support_for_page_ && double_tap_support_for_platform_; 834 double_tap_support_for_page_ && double_tap_support_for_platform_;
829 gesture_listener_->SetDoubleTapEnabled(double_tap_enabled); 835 gesture_listener_->SetDoubleTapEnabled(double_tap_enabled);
830 } 836 }
831 837
832 } // namespace ui 838 } // namespace ui
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698