Upstream version 11.40.277.0
[platform/framework/web/crosswalk.git] / src / content / common / input / synthetic_web_input_event_builders.h
1 // Copyright 2013 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_COMMON_INPUT_SYNTHETIC_WEB_INPUT_EVENT_BUILDERS_H_
6 #define CONTENT_COMMON_INPUT_SYNTHETIC_WEB_INPUT_EVENT_BUILDERS_H_
7
8 #include "base/time/time.h"
9 #include "content/common/content_export.h"
10 #include "third_party/WebKit/public/web/WebInputEvent.h"
11
12 // Provides sensible creation of default WebInputEvents for testing purposes.
13
14 namespace content {
15
16 class CONTENT_EXPORT SyntheticWebMouseEventBuilder {
17  public:
18   static blink::WebMouseEvent Build(blink::WebInputEvent::Type type);
19   static blink::WebMouseEvent Build(blink::WebInputEvent::Type type,
20                                     int window_x,
21                                     int window_y,
22                                     int modifiers);
23 };
24
25 class CONTENT_EXPORT SyntheticWebMouseWheelEventBuilder {
26  public:
27   static blink::WebMouseWheelEvent Build(
28       blink::WebMouseWheelEvent::Phase phase);
29   static blink::WebMouseWheelEvent Build(float dx,
30                                          float dy,
31                                          int modifiers,
32                                          bool precise);
33 };
34
35 class CONTENT_EXPORT SyntheticWebKeyboardEventBuilder {
36  public:
37   static blink::WebKeyboardEvent Build(blink::WebInputEvent::Type type);
38 };
39
40 class CONTENT_EXPORT SyntheticWebGestureEventBuilder {
41  public:
42   static blink::WebGestureEvent Build(blink::WebInputEvent::Type type,
43                                       blink::WebGestureDevice source_device);
44   static blink::WebGestureEvent BuildScrollBegin(float dx_hint,
45                                                  float dy_hint);
46   static blink::WebGestureEvent BuildScrollUpdate(float dx,
47                                                   float dy,
48                                                   int modifiers);
49   static blink::WebGestureEvent BuildPinchUpdate(
50       float scale,
51       float anchor_x,
52       float anchor_y,
53       int modifiers,
54       blink::WebGestureDevice source_device);
55   static blink::WebGestureEvent BuildFling(
56       float velocity_x,
57       float velocity_y,
58       blink::WebGestureDevice source_device);
59 };
60
61 class CONTENT_EXPORT SyntheticWebTouchEvent
62     : public NON_EXPORTED_BASE(blink::WebTouchEvent) {
63  public:
64   SyntheticWebTouchEvent();
65
66   // Mark all the points as stationary, and remove any released points.
67   void ResetPoints();
68
69   // Adds an additional point to the touch list, returning the point's index.
70   int PressPoint(float x, float y);
71   void MovePoint(int index, float x, float y);
72   void ReleasePoint(int index);
73   void CancelPoint(int index);
74
75   void SetTimestamp(base::TimeDelta timestamp);
76 };
77
78 }  // namespace content
79
80 #endif  // CONTENT_COMMON_INPUT_SYNTHETIC_WEB_INPUT_EVENT_BUILDERS_H_