event_forwarder.h 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. // Copyright 2017 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. #ifndef UI_ANDROID_EVENT_FORWARDER_H_
  5. #define UI_ANDROID_EVENT_FORWARDER_H_
  6. #include "base/android/scoped_java_ref.h"
  7. #include "base/memory/raw_ptr.h"
  8. namespace ui {
  9. class ViewAndroid;
  10. class EventForwarder {
  11. public:
  12. EventForwarder(const EventForwarder&) = delete;
  13. EventForwarder& operator=(const EventForwarder&) = delete;
  14. ~EventForwarder();
  15. base::android::ScopedJavaLocalRef<jobject> GetJavaWindowAndroid(
  16. JNIEnv* env,
  17. const base::android::JavaParamRef<jobject>& obj);
  18. jboolean OnTouchEvent(
  19. JNIEnv* env,
  20. const base::android::JavaParamRef<jobject>& obj,
  21. const base::android::JavaParamRef<jobject>& motion_event,
  22. jlong time_ms,
  23. jint android_action,
  24. jint pointer_count,
  25. jint history_size,
  26. jint action_index,
  27. jfloat pos_x_0,
  28. jfloat pos_y_0,
  29. jfloat pos_x_1,
  30. jfloat pos_y_1,
  31. jint pointer_id_0,
  32. jint pointer_id_1,
  33. jfloat touch_major_0,
  34. jfloat touch_major_1,
  35. jfloat touch_minor_0,
  36. jfloat touch_minor_1,
  37. jfloat orientation_0,
  38. jfloat orientation_1,
  39. jfloat tilt_0,
  40. jfloat tilt_1,
  41. jfloat raw_pos_x,
  42. jfloat raw_pos_y,
  43. jint android_tool_type_0,
  44. jint android_tool_type_1,
  45. jint android_gesture_classification,
  46. jint android_button_state,
  47. jint android_meta_state,
  48. jboolean is_touch_handle_event);
  49. void OnMouseEvent(JNIEnv* env,
  50. const base::android::JavaParamRef<jobject>& obj,
  51. jlong time_ms,
  52. jint android_action,
  53. jfloat x,
  54. jfloat y,
  55. jint pointer_id,
  56. jfloat pressure,
  57. jfloat orientation,
  58. jfloat tilt,
  59. jint android_changed_button,
  60. jint android_button_state,
  61. jint android_meta_state,
  62. jint tool_type);
  63. void OnDragEvent(JNIEnv* env,
  64. const base::android::JavaParamRef<jobject>& jobj,
  65. jint action,
  66. jfloat x,
  67. jfloat y,
  68. jfloat screen_x,
  69. jfloat screen_y,
  70. const base::android::JavaParamRef<jobjectArray>& j_mimeTypes,
  71. const base::android::JavaParamRef<jstring>& j_content);
  72. jboolean OnGestureEvent(JNIEnv* env,
  73. const base::android::JavaParamRef<jobject>& jobj,
  74. jint type,
  75. jlong time_ms,
  76. jfloat scale);
  77. jboolean OnGenericMotionEvent(
  78. JNIEnv* env,
  79. const base::android::JavaParamRef<jobject>& obj,
  80. const base::android::JavaParamRef<jobject>& motion_event,
  81. jlong time_ms);
  82. jboolean OnKeyUp(JNIEnv* env,
  83. const base::android::JavaParamRef<jobject>& obj,
  84. const base::android::JavaParamRef<jobject>& key_event,
  85. jint key_code);
  86. jboolean DispatchKeyEvent(
  87. JNIEnv* env,
  88. const base::android::JavaParamRef<jobject>& obj,
  89. const base::android::JavaParamRef<jobject>& motion_event);
  90. void ScrollBy(JNIEnv* env,
  91. const base::android::JavaParamRef<jobject>& jobj,
  92. jfloat delta_x,
  93. jfloat delta_y);
  94. void ScrollTo(JNIEnv* env,
  95. const base::android::JavaParamRef<jobject>& jobj,
  96. jfloat x,
  97. jfloat y);
  98. void DoubleTap(JNIEnv* env,
  99. const base::android::JavaParamRef<jobject>& jobj,
  100. jlong time_ms,
  101. jint x,
  102. jint y);
  103. void StartFling(JNIEnv* env,
  104. const base::android::JavaParamRef<jobject>& jobj,
  105. jlong time_ms,
  106. jfloat velocity_x,
  107. jfloat velocity_y,
  108. jboolean synthetic_scroll,
  109. jboolean prevent_boosting);
  110. void CancelFling(JNIEnv* env,
  111. const base::android::JavaParamRef<jobject>& jobj,
  112. jlong time_ms,
  113. jboolean prevent_boosting);
  114. private:
  115. friend class ViewAndroid;
  116. explicit EventForwarder(ViewAndroid* view);
  117. base::android::ScopedJavaLocalRef<jobject> GetJavaObject();
  118. const raw_ptr<ViewAndroid> view_;
  119. base::android::ScopedJavaGlobalRef<jobject> java_obj_;
  120. };
  121. } // namespace ui
  122. #endif // UI_ANDROID_EVENT_FORWARDER_H_