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#include <vector>
6
7#include "base/basictypes.h"
8#include "base/time/time.h"
9#include "ui/events/gesture_detection/motion_event_generic.h"
10#include "ui/gfx/geometry/point_f.h"
11
12namespace ui {
13namespace test {
14
15struct MockMotionEvent : public MotionEventGeneric {
16  enum { TOUCH_MAJOR = 10 };
17
18  MockMotionEvent();
19  explicit MockMotionEvent(Action action);
20  MockMotionEvent(Action action, base::TimeTicks time, float x, float y);
21  MockMotionEvent(Action action,
22                  base::TimeTicks time,
23                  float x0,
24                  float y0,
25                  float x1,
26                  float y1);
27  MockMotionEvent(Action action,
28                  base::TimeTicks time,
29                  float x0,
30                  float y0,
31                  float x1,
32                  float y1,
33                  float x2,
34                  float y2);
35  MockMotionEvent(Action action,
36                  base::TimeTicks time,
37                  const std::vector<gfx::PointF>& positions);
38  MockMotionEvent(const MockMotionEvent& other);
39
40  virtual ~MockMotionEvent();
41
42  // MotionEvent methods.
43  virtual scoped_ptr<MotionEvent> Clone() const OVERRIDE;
44  virtual scoped_ptr<MotionEvent> Cancel() const OVERRIDE;
45
46  // Utility methods.
47  void PressPoint(float x, float y);
48  void MovePoint(size_t index, float x, float y);
49  void ReleasePoint();
50  void CancelPoint();
51  void SetTouchMajor(float new_touch_major);
52  void SetRawOffset(float raw_offset_x, float raw_offset_y);
53  void SetToolType(size_t index, ToolType tool_type);
54
55 private:
56  void PushPointer(float x, float y);
57  void ResolvePointers();
58};
59
60}  // namespace test
61}  // namespace ui
62