// Copyright 2013 The Chromium Authors. All rights reserved. // 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_PARAMS_H_ #define CONTENT_COMMON_INPUT_SYNTHETIC_GESTURE_PARAMS_H_ #include "base/memory/scoped_ptr.h" #include "content/common/content_export.h" namespace content { // Base class for storing parameters of synthetic gestures. Sending an object // over IPC is handled by encapsulating it in a SyntheticGesturePacket object. // // The subclasses of this class only store data on synthetic gestures. // The logic for dispatching input events that implement the gesture lives // in separate classes in content/browser/renderer_host/input/. // // Adding new gesture types involves the following steps: // 1) Create a new sub-type of SyntheticGestureParams with the parameters // needed for the new gesture. // 2) Use IPC macros to create serialization methods for the new type in // content/common/input_messages.h. // 3) Extend ParamTraits::Write/Read/Log in // content/common/input/input_param_traits.cc. // 4) Add a new unit test to make sure that sending the type over IPC works // correctly. // The details of each step should become clear when looking at other types. struct CONTENT_EXPORT SyntheticGestureParams { SyntheticGestureParams(); SyntheticGestureParams(const SyntheticGestureParams& other); virtual ~SyntheticGestureParams(); // Describes which type of input events synthetic gesture objects should // generate. When specifying DEFAULT_INPUT the platform will be queried for // the preferred input event type. enum GestureSourceType { DEFAULT_INPUT, TOUCH_INPUT, MOUSE_INPUT, GESTURE_SOURCE_TYPE_MAX = MOUSE_INPUT }; GestureSourceType gesture_source_type; enum GestureType { SMOOTH_SCROLL_GESTURE, PINCH_GESTURE, TAP_GESTURE, SYNTHETIC_GESTURE_TYPE_MAX = TAP_GESTURE }; virtual GestureType GetGestureType() const = 0; // Returns true if the specific gesture source type is supported on this // platform. static bool IsGestureSourceTypeSupported( GestureSourceType gesture_source_type); }; } // namespace content #endif // CONTENT_COMMON_INPUT_SYNTHETIC_GESTURE_PARAMS_H_