Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / content / browser / renderer_host / input / synthetic_gesture.cc
blob2e25288dc1359d729aa835a63c965230360865ea
1 // Copyright 2013 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.
5 #include "content/browser/renderer_host/input/synthetic_gesture.h"
7 #include "base/logging.h"
8 #include "content/browser/renderer_host/input/synthetic_gesture_target.h"
9 #include "content/browser/renderer_host/input/synthetic_pinch_gesture.h"
10 #include "content/browser/renderer_host/input/synthetic_smooth_drag_gesture.h"
11 #include "content/browser/renderer_host/input/synthetic_smooth_scroll_gesture.h"
12 #include "content/browser/renderer_host/input/synthetic_tap_gesture.h"
14 namespace content {
15 namespace {
17 template <typename GestureType, typename GestureParamsType>
18 static scoped_ptr<SyntheticGesture> CreateGesture(
19 const SyntheticGestureParams& gesture_params) {
20 return scoped_ptr<SyntheticGesture>(
21 new GestureType(*GestureParamsType::Cast(&gesture_params)));
24 } // namespace
26 SyntheticGesture::SyntheticGesture() {}
28 SyntheticGesture::~SyntheticGesture() {}
30 scoped_ptr<SyntheticGesture> SyntheticGesture::Create(
31 const SyntheticGestureParams& gesture_params) {
32 switch (gesture_params.GetGestureType()) {
33 case SyntheticGestureParams::SMOOTH_SCROLL_GESTURE:
34 return CreateGesture<SyntheticSmoothScrollGesture,
35 SyntheticSmoothScrollGestureParams>(gesture_params);
36 case SyntheticGestureParams::SMOOTH_DRAG_GESTURE:
37 return CreateGesture<SyntheticSmoothDragGesture,
38 SyntheticSmoothDragGestureParams>(gesture_params);
39 case SyntheticGestureParams::PINCH_GESTURE:
40 return CreateGesture<SyntheticPinchGesture,
41 SyntheticPinchGestureParams>(gesture_params);
42 case SyntheticGestureParams::TAP_GESTURE:
43 return CreateGesture<SyntheticTapGesture,
44 SyntheticTapGestureParams>(gesture_params);
46 NOTREACHED() << "Invalid synthetic gesture type";
47 return scoped_ptr<SyntheticGesture>();
50 // static
51 double SyntheticGesture::ConvertTimestampToSeconds(
52 const base::TimeTicks& timestamp) {
53 return (timestamp - base::TimeTicks()).InSecondsF();
56 } // namespace content