1// Copyright (c) 2012 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 PPAPI_TESTS_TEST_INPUT_EVENT_H_
6#define PPAPI_TESTS_TEST_INPUT_EVENT_H_
7
8#include <string>
9#include <vector>
10
11#include "ppapi/c/ppb_input_event.h"
12#include "ppapi/c/private/ppb_testing_private.h"
13#include "ppapi/cpp/input_event.h"
14#include "ppapi/cpp/point.h"
15#include "ppapi/cpp/private/input_event_private.h"
16#include "ppapi/cpp/rect.h"
17#include "ppapi/tests/test_case.h"
18#include "ppapi/tests/test_utils.h"
19
20class TestInputEvent : public TestCase {
21 public:
22  explicit TestInputEvent(TestingInstance* instance);
23  ~TestInputEvent();
24
25  virtual bool HandleInputEvent(const pp::InputEvent& input_event);
26  virtual void HandleMessage(const pp::Var& message_data);
27  virtual void DidChangeView(const pp::View& view);
28
29  // TestCase implementation.
30  virtual bool Init();
31  virtual void RunTests(const std::string& test_filter);
32
33 private:
34  pp::InputEvent CreateMouseEvent(PP_InputEvent_Type type,
35                                  PP_InputEvent_MouseButton buttons);
36  pp::InputEvent CreateWheelEvent();
37  pp::InputEvent CreateKeyEvent(PP_InputEvent_Type type,
38                                uint32_t key_code, const std::string& code);
39  pp::InputEvent CreateCharEvent(const std::string& text);
40  pp::InputEvent CreateTouchEvent(PP_InputEvent_Type type,
41                                  const pp::FloatPoint& location);
42
43  void PostMessageBarrier();
44  bool SimulateInputEvent(const pp::InputEvent& input_event);
45  bool AreEquivalentEvents(PP_Resource first, PP_Resource second);
46
47  std::string TestEvents();
48  std::string TestEventsLatencyTracking();
49  std::string TestAcceptTouchEvent_1();
50  std::string TestAcceptTouchEvent_2();
51  std::string TestAcceptTouchEvent_3();
52  std::string TestAcceptTouchEvent_4();
53
54  const PPB_InputEvent* input_event_interface_;
55  const PPB_InputEvent_Private* input_event_private_interface_;
56  const PPB_MouseInputEvent* mouse_input_event_interface_;
57  const PPB_WheelInputEvent* wheel_input_event_interface_;
58  const PPB_KeyboardInputEvent* keyboard_input_event_interface_;
59  const PPB_TouchInputEvent* touch_input_event_interface_;
60
61  NestedEvent nested_event_;
62
63  pp::Rect view_rect_;
64  pp::InputEvent expected_input_event_;
65  bool received_expected_event_;
66  bool received_finish_message_;
67  bool enable_latency_tracking_;
68  bool last_latency_tracking_successful_;
69};
70
71#endif  // PPAPI_TESTS_TEST_INPUT_EVENT_H_
72