• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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.
4 
5 #ifndef CONTENT_BROWSER_RENDERER_HOST_INPUT_SYNTHETIC_GESTURE_TARGET_ANDROID_H_
6 #define CONTENT_BROWSER_RENDERER_HOST_INPUT_SYNTHETIC_GESTURE_TARGET_ANDROID_H_
7 
8 #include "base/android/jni_android.h"
9 #include "base/time/time.h"
10 #include "content/browser/renderer_host/input/synthetic_gesture_target_base.h"
11 
12 namespace content {
13 
14 class ContentViewCoreImpl;
15 
16 class SyntheticGestureTargetAndroid : public SyntheticGestureTargetBase {
17  public:
18   SyntheticGestureTargetAndroid(
19       RenderWidgetHostImpl* host,
20       base::android::ScopedJavaLocalRef<jobject> touch_event_synthesizer);
21   virtual ~SyntheticGestureTargetAndroid();
22 
23   static bool RegisterTouchEventSynthesizer(JNIEnv* env);
24 
25   virtual void DispatchWebTouchEventToPlatform(
26       const blink::WebTouchEvent& web_touch,
27       const ui::LatencyInfo& latency_info) OVERRIDE;
28 
29   // SyntheticGestureTarget:
30   virtual SyntheticGestureParams::GestureSourceType
31       GetDefaultSyntheticGestureSourceType() const OVERRIDE;
32   virtual bool SupportsSyntheticGestureSourceType(
33       SyntheticGestureParams::GestureSourceType gesture_source_type) const
34       OVERRIDE;
35 
36   virtual int GetTouchSlopInDips() const OVERRIDE;
37 
38  private:
39   // Enum values below need to be kept in sync with TouchEventSynthesizer.java
40   enum Action {
41     ActionInvalid = -1,
42     ActionStart = 0,
43     ActionMove = 1,
44     ActionCancel = 2,
45     ActionEnd = 3
46   };
47 
48   void TouchSetPointer(JNIEnv* env, int index, int x, int y, int id);
49   void TouchInject(JNIEnv* env, Action action, int pointer_count);
50 
51   base::android::ScopedJavaGlobalRef<jobject> touch_event_synthesizer_;
52 
53   DISALLOW_COPY_AND_ASSIGN(SyntheticGestureTargetAndroid);
54 };
55 
56 }  // namespace content
57 
58 #endif  // CONTENT_BROWSER_RENDERER_HOST_INPUT_SYNTHETIC_GESTURE_TARGET_ANDROID_H_
59