// 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<content::SyntheticGesturePacket>::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_
