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

Unified Diff: ui/events/gesture_detection/filtered_gesture_provider.cc

Issue 718153002: Indicate whether a touch event will cause scrolling (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 1 month 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 side-by-side diff with in-line comments
Download patch
Index: ui/events/gesture_detection/filtered_gesture_provider.cc
diff --git a/ui/events/gesture_detection/filtered_gesture_provider.cc b/ui/events/gesture_detection/filtered_gesture_provider.cc
index 239b66da131cfd0fba8dc9176d3c95245d9c58f5..78d1df481b2d16dba43851b3b9a47646f3172eb4 100644
--- a/ui/events/gesture_detection/filtered_gesture_provider.cc
+++ b/ui/events/gesture_detection/filtered_gesture_provider.cc
@@ -10,31 +10,41 @@
namespace ui {
+FilteredGestureProvider::TouchHandlingResult::TouchHandlingResult()
+ : succeeded(false), did_generate_scroll(false) {
+}
+
FilteredGestureProvider::FilteredGestureProvider(
const GestureProvider::Config& config,
GestureProviderClient* client)
: client_(client),
gesture_provider_(config, this),
gesture_filter_(this),
- handling_event_(false) {}
+ handling_event_(false),
+ last_touch_event_did_generate_scroll_(false) {
+}
-bool FilteredGestureProvider::OnTouchEvent(const MotionEvent& event) {
+FilteredGestureProvider::TouchHandlingResult
+FilteredGestureProvider::OnTouchEvent(const MotionEvent& event) {
DCHECK(!handling_event_);
base::AutoReset<bool> handling_event(&handling_event_, true);
pending_gesture_packet_ = GestureEventDataPacket::FromTouch(event);
-
+ last_touch_event_did_generate_scroll_ = false;
if (!gesture_provider_.OnTouchEvent(event))
- return false;
+ return TouchHandlingResult();
- TouchDispositionGestureFilter::PacketResult result =
+ TouchDispositionGestureFilter::PacketResult filter_result =
gesture_filter_.OnGesturePacket(pending_gesture_packet_);
- if (result != TouchDispositionGestureFilter::SUCCESS) {
+ if (filter_result != TouchDispositionGestureFilter::SUCCESS) {
NOTREACHED() << "Invalid touch gesture sequence detected.";
- return false;
+ return TouchHandlingResult();
}
- return true;
+ TouchHandlingResult result;
+ result.succeeded = true;
+ result.did_generate_scroll = last_touch_event_did_generate_scroll_;
+ return result;
}
void FilteredGestureProvider::OnTouchEventAck(bool event_consumed) {
@@ -65,6 +75,11 @@ const ui::MotionEvent* FilteredGestureProvider::GetCurrentDownEvent() const {
void FilteredGestureProvider::OnGestureEvent(const GestureEventData& event) {
if (handling_event_) {
+ if (event.details.type() == ui::ET_GESTURE_SCROLL_BEGIN ||
+ event.details.type() == ui::ET_GESTURE_SCROLL_UPDATE ||
+ event.details.type() == ui::ET_SCROLL_FLING_START) {
+ last_touch_event_did_generate_scroll_ = true;
+ }
pending_gesture_packet_.Push(event);
return;
}

Powered by Google App Engine
This is Rietveld 408576698