summaryrefslogtreecommitdiffstats
path: root/chromium/ui/events/gestures/gesture_provider_aura.h
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/ui/events/gestures/gesture_provider_aura.h')
-rw-r--r--chromium/ui/events/gestures/gesture_provider_aura.h59
1 files changed, 59 insertions, 0 deletions
diff --git a/chromium/ui/events/gestures/gesture_provider_aura.h b/chromium/ui/events/gestures/gesture_provider_aura.h
new file mode 100644
index 00000000000..ff7befce15e
--- /dev/null
+++ b/chromium/ui/events/gestures/gesture_provider_aura.h
@@ -0,0 +1,59 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef UI_EVENTS_GESTURE_DETECTION_UI_GESTURE_PROVIDER_H_
+#define UI_EVENTS_GESTURE_DETECTION_UI_GESTURE_PROVIDER_H_
+
+#include "base/basictypes.h"
+#include "ui/events/event.h"
+#include "ui/events/events_export.h"
+#include "ui/events/gesture_detection/filtered_gesture_provider.h"
+#include "ui/events/gesture_detection/gesture_event_data_packet.h"
+#include "ui/events/gesture_detection/touch_disposition_gesture_filter.h"
+#include "ui/events/gestures/motion_event_aura.h"
+
+namespace ui {
+
+class EVENTS_EXPORT GestureProviderAuraClient {
+ public:
+ virtual ~GestureProviderAuraClient() {}
+ virtual void OnGestureEvent(GestureEvent* event) = 0;
+};
+
+// Provides gesture detection and dispatch given a sequence of touch events
+// and touch event acks.
+class EVENTS_EXPORT GestureProviderAura : public GestureProviderClient {
+ public:
+ GestureProviderAura(GestureProviderAuraClient* client);
+ virtual ~GestureProviderAura();
+
+ bool OnTouchEvent(const TouchEvent& event);
+ void OnTouchEventAck(bool event_consumed);
+ const MotionEventAura& pointer_state() { return pointer_state_; }
+ ScopedVector<GestureEvent>* GetAndResetPendingGestures();
+
+ // GestureProviderClient implementation
+ virtual void OnGestureEvent(const GestureEventData& gesture) OVERRIDE;
+
+ private:
+ bool IsConsideredDoubleTap(const GestureEventData& previous_tap,
+ const GestureEventData& current_tap) const;
+
+ scoped_ptr<GestureEventData> previous_tap_;
+
+ GestureProviderAuraClient* client_;
+ MotionEventAura pointer_state_;
+ FilteredGestureProvider filtered_gesture_provider_;
+
+ int last_touch_event_flags_;
+ ui::LatencyInfo last_touch_event_latency_info_;
+ bool handling_event_;
+ ScopedVector<GestureEvent> pending_gestures_;
+
+ DISALLOW_COPY_AND_ASSIGN(GestureProviderAura);
+};
+
+} // namespace ui
+
+#endif // UI_EVENTS_GESTURE_DETECTION_UI_GESTURE_PROVIDER_H_