// Copyright 2013 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CONTENT_COMMON_INPUT_SYNTHETIC_GESTURE_H_ #define CONTENT_COMMON_INPUT_SYNTHETIC_GESTURE_H_ #include <memory> #include "base/functional/callback_forward.h" #include "base/memory/weak_ptr.h" #include "base/time/time.h" #include "content/common/content_export.h" #include "content/common/input/synthetic_gesture_params.h" namespace content { class SyntheticGestureTarget; class SyntheticGestureController; // Abstract base class for synthetic gesture implementations. A synthetic // gesture class is responsible for forwarding InputEvents, simulating the // gesture, to a SyntheticGestureTarget. // // Adding new gesture types involved the following steps: // 1) Create a sub-type of SyntheticGestureBase that implements the gesture. // 2) Extend SyntheticGesture::Create with the new class. // 3) Add at least one unit test per supported input source type (touch, // mouse, etc) to SyntheticGestureController unit tests. The unit tests // only checks basic functionality and termination. If the gesture is // hooked up to Telemetry its correctness can additionally be tested there. class CONTENT_EXPORT SyntheticGesture { … }; template <class ParamType> class SyntheticGestureBase : public SyntheticGesture { … }; } // namespace content #endif // CONTENT_COMMON_INPUT_SYNTHETIC_GESTURE_H_