Upstream version 5.34.104.0
[platform/framework/web/crosswalk.git] / src / content / browser / renderer_host / input / gesture_event_packet.h
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
3 // found in the LICENSE file.
4
5 #ifndef CONTENT_BROWSER_RENDERER_HOST_INPUT_GESTURE_EVENT_PACKET_H_
6 #define CONTENT_BROWSER_RENDERER_HOST_INPUT_GESTURE_EVENT_PACKET_H_
7
8 #include "content/common/content_export.h"
9 #include "third_party/WebKit/public/web/WebInputEvent.h"
10
11 namespace content {
12
13 // Acts as a transport container for gestures created (directly or indirectly)
14 // by a touch event.
15 class CONTENT_EXPORT GestureEventPacket {
16  public:
17   enum GestureSource {
18     UNDEFINED = -1,        // Used only for a default-constructed packet.
19     INVALID,               // The source of the gesture was invalid.
20     TOUCH_SEQUENCE_BEGIN,  // The start of a new gesture sequence.
21     TOUCH_SEQUENCE_END,    // The end of gesture sequence.
22     TOUCH_BEGIN,           // A touch down occured during a gesture sequence.
23     TOUCH_MOVE,            // A touch move occured during a gesture sequence.
24     TOUCH_END,             // A touch up occured during a gesture sequence.
25     TOUCH_TIMEOUT,         // Timeout from an existing gesture sequence.
26   };
27
28   GestureEventPacket();
29   GestureEventPacket(const GestureEventPacket& other);
30   ~GestureEventPacket();
31   GestureEventPacket& operator=(const GestureEventPacket& other);
32
33   // Factory methods for creating a packet from a particular event.
34   static GestureEventPacket FromTouch(const blink::WebTouchEvent& event);
35   static GestureEventPacket FromTouchTimeout(
36       const blink::WebGestureEvent& event);
37
38   void Push(const blink::WebGestureEvent& gesture);
39
40   const blink::WebGestureEvent& gesture(size_t i) const { return gestures_[i]; }
41   size_t gesture_count() const { return gesture_count_; }
42   GestureSource gesture_source() const { return gesture_source_; }
43
44 private:
45   explicit GestureEventPacket(GestureSource source);
46
47   enum { kMaxGesturesPerTouch = 5 };
48   blink::WebGestureEvent gestures_[kMaxGesturesPerTouch];
49   size_t gesture_count_;
50   GestureSource gesture_source_;
51 };
52
53 }  // namespace content
54
55 #endif  // CONTENT_BROWSER_RENDERER_HOST_INPUT_GESTURE_EVENT_PACKET_H_