Home | History | Annotate | Download | only in input
      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_
     81