143dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis// Copyright 2013 The Chromium Authors. All rights reserved. 243dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis// Use of this source code is governed by a BSD-style license that can be 343dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis// found in the LICENSE file. 443dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis 543dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis#include "content/browser/renderer_host/input/synthetic_gesture.h" 643dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis 743dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis#include "base/logging.h" 843dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis#include "content/browser/renderer_host/input/synthetic_gesture_target.h" 943dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis#include "content/browser/renderer_host/input/synthetic_pinch_gesture.h" 1043dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis#include "content/browser/renderer_host/input/synthetic_smooth_scroll_gesture.h" 1143dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis#include "content/browser/renderer_host/input/synthetic_tap_gesture.h" 1243dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis 1343dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidisnamespace content { 1443dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidisnamespace { 1543dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis 1643dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidistemplate <typename GestureType, typename GestureParamsType> 172e471a3e476396be1ddca4ab8b9df721bcfc9437Argyrios Kyrtzidisstatic scoped_ptr<SyntheticGesture> CreateGesture( 1843dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis const SyntheticGestureParams& gesture_params) { 199fb9474c5b267400d4abfbff63c8b39f378235d4Argyrios Kyrtzidis return scoped_ptr<SyntheticGesture>( 20769ce3e93ad35bd9ac28e4d8b8f035ae4fd9a5b5Argyrios Kyrtzidis new GestureType(*GestureParamsType::Cast(&gesture_params))); 219fb9474c5b267400d4abfbff63c8b39f378235d4Argyrios Kyrtzidis} 2243dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis 2343dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis} // namespace 249fb9474c5b267400d4abfbff63c8b39f378235d4Argyrios Kyrtzidis 25769ce3e93ad35bd9ac28e4d8b8f035ae4fd9a5b5Argyrios KyrtzidisSyntheticGesture::SyntheticGesture() {} 26e1bfb7ae0dd0762c88e1fd94746e973c37f2e04eArgyrios Kyrtzidis 2743dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios KyrtzidisSyntheticGesture::~SyntheticGesture() {} 2843dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis 2943dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidisscoped_ptr<SyntheticGesture> SyntheticGesture::Create( 309fb9474c5b267400d4abfbff63c8b39f378235d4Argyrios Kyrtzidis const SyntheticGestureParams& gesture_params) { 319fb9474c5b267400d4abfbff63c8b39f378235d4Argyrios Kyrtzidis switch (gesture_params.GetGestureType()) { 32769ce3e93ad35bd9ac28e4d8b8f035ae4fd9a5b5Argyrios Kyrtzidis case SyntheticGestureParams::SMOOTH_SCROLL_GESTURE: 33769ce3e93ad35bd9ac28e4d8b8f035ae4fd9a5b5Argyrios Kyrtzidis return CreateGesture<SyntheticSmoothScrollGesture, 34769ce3e93ad35bd9ac28e4d8b8f035ae4fd9a5b5Argyrios Kyrtzidis SyntheticSmoothScrollGestureParams>(gesture_params); 35e1bfb7ae0dd0762c88e1fd94746e973c37f2e04eArgyrios Kyrtzidis case SyntheticGestureParams::PINCH_GESTURE: 36769ce3e93ad35bd9ac28e4d8b8f035ae4fd9a5b5Argyrios Kyrtzidis return CreateGesture<SyntheticPinchGesture, 3730726c6baee1417307236e854f1474fdb3cedb98Argyrios Kyrtzidis SyntheticPinchGestureParams>(gesture_params); 38769ce3e93ad35bd9ac28e4d8b8f035ae4fd9a5b5Argyrios Kyrtzidis case SyntheticGestureParams::TAP_GESTURE: 39769ce3e93ad35bd9ac28e4d8b8f035ae4fd9a5b5Argyrios Kyrtzidis return CreateGesture<SyntheticTapGesture, 40e1bfb7ae0dd0762c88e1fd94746e973c37f2e04eArgyrios Kyrtzidis SyntheticTapGestureParams>(gesture_params); 41e1bfb7ae0dd0762c88e1fd94746e973c37f2e04eArgyrios Kyrtzidis } 42e1bfb7ae0dd0762c88e1fd94746e973c37f2e04eArgyrios Kyrtzidis NOTREACHED() << "Invalid synthetic gesture type"; 43e1bfb7ae0dd0762c88e1fd94746e973c37f2e04eArgyrios Kyrtzidis return scoped_ptr<SyntheticGesture>(); 44e1bfb7ae0dd0762c88e1fd94746e973c37f2e04eArgyrios Kyrtzidis} 45e1bfb7ae0dd0762c88e1fd94746e973c37f2e04eArgyrios Kyrtzidis 46769ce3e93ad35bd9ac28e4d8b8f035ae4fd9a5b5Argyrios Kyrtzidis// static 47769ce3e93ad35bd9ac28e4d8b8f035ae4fd9a5b5Argyrios Kyrtzidisdouble SyntheticGesture::ConvertTimestampToSeconds( 48769ce3e93ad35bd9ac28e4d8b8f035ae4fd9a5b5Argyrios Kyrtzidis const base::TimeTicks& timestamp) { 49769ce3e93ad35bd9ac28e4d8b8f035ae4fd9a5b5Argyrios Kyrtzidis return (timestamp - base::TimeTicks()).InSecondsF(); 50769ce3e93ad35bd9ac28e4d8b8f035ae4fd9a5b5Argyrios Kyrtzidis} 51769ce3e93ad35bd9ac28e4d8b8f035ae4fd9a5b5Argyrios Kyrtzidis 52769ce3e93ad35bd9ac28e4d8b8f035ae4fd9a5b5Argyrios Kyrtzidis} // namespace content 53769ce3e93ad35bd9ac28e4d8b8f035ae4fd9a5b5Argyrios Kyrtzidis