Upstream version 7.36.149.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(
43       blink::WebInputEvent::Type type,
44       blink::WebGestureEvent::SourceDevice source_device);
45   static blink::WebGestureEvent BuildScrollBegin(float dx_hint,
46                                                  float dy_hint);
47   static blink::WebGestureEvent BuildScrollUpdate(float dx,
48                                                   float dy,
49                                                   int modifiers);
50   static blink::WebGestureEvent BuildPinchUpdate(
51       float scale,
52       float anchor_x,
53       float anchor_y,
54       int modifiers,
55       blink::WebGestureEvent::SourceDevice source_device);
56   static blink::WebGestureEvent BuildFling(
57       float velocity_x,
58       float velocity_y,
59       blink::WebGestureEvent::SourceDevice source_device);
60 };
61
62 class CONTENT_EXPORT SyntheticWebTouchEvent
63     : public NON_EXPORTED_BASE(blink::WebTouchEvent) {
64  public:
65   SyntheticWebTouchEvent();
66
67   // Mark all the points as stationary, and remove any released points.
68   void ResetPoints();
69
70   // Adds an additional point to the touch list, returning the point's index.
71   int PressPoint(float x, float y);
72   void MovePoint(int index, float x, float y);
73   void ReleasePoint(int index);
74   void CancelPoint(int index);
75
76   void SetTimestamp(base::TimeDelta timestamp);
77 };
78
79 }  // namespace content
80
81 #endif  // CONTENT_COMMON_INPUT_SYNTHETIC_WEB_INPUT_EVENT_BUILDERS_H_