Index: content/browser/renderer_host/input/gesture_event_packet.cc |
diff --git a/content/browser/renderer_host/input/gesture_event_packet.cc b/content/browser/renderer_host/input/gesture_event_packet.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..26504633a306fcf32cb63568faee47118cf6501b |
--- /dev/null |
+++ b/content/browser/renderer_host/input/gesture_event_packet.cc |
@@ -0,0 +1,65 @@ |
+// Copyright 2013 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. |
+ |
+#include "content/browser/renderer_host/input/gesture_event_packet.h" |
+ |
+#include "base/logging.h" |
+ |
+using blink::WebGestureEvent; |
+using blink::WebInputEvent; |
+using blink::WebTouchEvent; |
+using blink::WebTouchPoint; |
+ |
+namespace content { |
+namespace { |
+ |
+bool IsTouchSequenceStart(const WebTouchEvent& event) { |
+ if (event.type != WebInputEvent::TouchStart) |
+ return false; |
+ if (!event.touchesLength) |
+ return false; |
+ for (size_t i = 0; i < event.touchesLength; i++) { |
+ if (event.touches[i].state != WebTouchPoint::StatePressed) |
+ return false; |
+ } |
+ return true; |
+} |
+ |
+GestureEventPacket::GestureSource |
+ToGestureSource(const WebTouchEvent& event) { |
+ // TODO(jdduke): Use GestureTapDown as a new sequence marker? |
+ return IsTouchSequenceStart(event) ? GestureEventPacket::TOUCH_BEGIN |
+ : GestureEventPacket::TOUCH; |
+} |
+ |
+} // namespace |
+ |
+GestureEventPacket::GestureEventPacket() |
+ : gesture_count_(0), |
+ gesture_source_(GESTURE_SOURCE_DEFAULT) {} |
+ |
+GestureEventPacket::GestureEventPacket(GestureSource source) |
+ : gesture_count_(0), |
+ gesture_source_(source) {} |
+ |
+GestureEventPacket::~GestureEventPacket() {} |
+ |
+void GestureEventPacket::Push(const blink::WebGestureEvent& gesture) { |
+ CHECK_LT(gesture_count_, kMaxGesturesPerTouch); |
+ gestures_[gesture_count_++] = gesture; |
+} |
+ |
+GestureEventPacket GestureEventPacket::FromTouch(const WebTouchEvent& event) { |
+ return GestureEventPacket(ToGestureSource(event)); |
+} |
+ |
+GestureEventPacket GestureEventPacket::FromGesture( |
+ GestureSource source, |
+ const WebGestureEvent& event) { |
+ GestureEventPacket packet(source); |
+ packet.Push(event); |
+ return packet; |
+} |
+ |
+} // namespace content |