summaryrefslogtreecommitdiffstats
path: root/components/html_viewer/touch_handler.h
diff options
context:
space:
mode:
Diffstat (limited to 'components/html_viewer/touch_handler.h')
-rw-r--r--components/html_viewer/touch_handler.h62
1 files changed, 62 insertions, 0 deletions
diff --git a/components/html_viewer/touch_handler.h b/components/html_viewer/touch_handler.h
new file mode 100644
index 0000000..460a3d5
--- /dev/null
+++ b/components/html_viewer/touch_handler.h
@@ -0,0 +1,62 @@
+// Copyright 2015 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 COMPONENTS_HTML_VIEWER_TOUCH_HANDLER_H_
+#define COMPONENTS_HTML_VIEWER_TOUCH_HANDLER_H_
+
+#include "base/basictypes.h"
+#include "ui/events/gesture_detection/filtered_gesture_provider.h"
+
+namespace blink {
+class WebView;
+}
+
+namespace mojo {
+class Event;
+}
+
+namespace ui {
+class MotionEventGeneric;
+}
+
+namespace html_viewer {
+
+// TouchHandler is responsible for converting touch events into gesture events.
+// It does this by converting mojo::Events into a MotionEventGeneric and using
+// FilteredGestureProvider.
+class TouchHandler : public ui::GestureProviderClient {
+ public:
+ explicit TouchHandler(blink::WebView* web_view);
+ ~TouchHandler() override;
+
+ void OnTouchEvent(const mojo::Event& event);
+
+ // ui::GestureProviderClient implementation.
+ void OnGestureEvent(const ui::GestureEventData& gesture) override;
+
+ private:
+ // Updates |current_motion_event_| from |event|. Returns true on success.
+ bool UpdateMotionEvent(const mojo::Event& event);
+
+ // Sends |current_motion_event_| to the GestureProvider and WebView.
+ void SendMotionEventToGestureProvider();
+
+ // Does post processing after sending |current_motion_event_| to the
+ // GestureProvider.
+ void PostProcessMotionEvent(const mojo::Event& event);
+
+ blink::WebView* web_view_;
+
+ ui::FilteredGestureProvider gesture_provider_;
+
+ // As touch events are received they are converted to this event. If null no
+ // touch events are in progress.
+ scoped_ptr<ui::MotionEventGeneric> current_motion_event_;
+
+ DISALLOW_COPY_AND_ASSIGN(TouchHandler);
+};
+
+} // namespace html_viewer
+
+#endif // COMPONENTS_HTML_VIEWER_TOUCH_HANDLER_H_