1a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
2a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// found in the LICENSE file.
4a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
55c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include <vector>
65c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
7a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "base/basictypes.h"
8a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "base/time/time.h"
95f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "ui/events/gesture_detection/motion_event_generic.h"
10a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "ui/gfx/geometry/point_f.h"
11a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
12a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)namespace ui {
13116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace test {
14a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)struct MockMotionEvent : public MotionEventGeneric {
160529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  enum { TOUCH_MAJOR = 10 };
17a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
18a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  MockMotionEvent();
19a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  explicit MockMotionEvent(Action action);
20a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  MockMotionEvent(Action action, base::TimeTicks time, float x, float y);
21a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  MockMotionEvent(Action action,
22a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                  base::TimeTicks time,
23a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                  float x0,
24a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                  float y0,
25a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                  float x1,
26a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                  float y1);
275c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  MockMotionEvent(Action action,
285c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu                  base::TimeTicks time,
295c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu                  float x0,
305c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu                  float y0,
315c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu                  float x1,
325c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu                  float y1,
335c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu                  float x2,
345c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu                  float y2);
355c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  MockMotionEvent(Action action,
365c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu                  base::TimeTicks time,
375c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu                  const std::vector<gfx::PointF>& positions);
38a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  MockMotionEvent(const MockMotionEvent& other);
39116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
40a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  virtual ~MockMotionEvent();
41a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
42a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  // MotionEvent methods.
43a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  virtual scoped_ptr<MotionEvent> Clone() const OVERRIDE;
44a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  virtual scoped_ptr<MotionEvent> Cancel() const OVERRIDE;
45a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
46a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  // Utility methods.
47a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  void PressPoint(float x, float y);
48a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  void MovePoint(size_t index, float x, float y);
49a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  void ReleasePoint();
50a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  void CancelPoint();
51f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  void SetTouchMajor(float new_touch_major);
526d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)  void SetRawOffset(float raw_offset_x, float raw_offset_y);
53116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  void SetToolType(size_t index, ToolType tool_type);
54f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
555f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) private:
565f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  void PushPointer(float x, float y);
575f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  void ResolvePointers();
58a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)};
59a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
60116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}  // namespace test
61a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)}  // namespace ui
62