| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "content/browser/renderer_host/input/motion_event_android.h" | 5 #include "content/browser/renderer_host/input/motion_event_android.h" |
| 6 | 6 |
| 7 #include <android/input.h> | 7 #include <android/input.h> |
| 8 | 8 |
| 9 #include "base/android/jni_android.h" | 9 #include "base/android/jni_android.h" |
| 10 #include "base/float_util.h" | 10 #include "base/float_util.h" |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 108 DCHECK_GE(history_size, 0); | 108 DCHECK_GE(history_size, 0); |
| 109 // While the spec states that only ACTION_MOVE events should contain | 109 // While the spec states that only ACTION_MOVE events should contain |
| 110 // historical entries, it's possible that an embedder could repurpose an | 110 // historical entries, it's possible that an embedder could repurpose an |
| 111 // ACTION_MOVE event into a different kind of event. In that case, the | 111 // ACTION_MOVE event into a different kind of event. In that case, the |
| 112 // historical values are meaningless, and should not be exposed. | 112 // historical values are meaningless, and should not be exposed. |
| 113 if (action != ui::MotionEvent::ACTION_MOVE) | 113 if (action != ui::MotionEvent::ACTION_MOVE) |
| 114 return 0; | 114 return 0; |
| 115 return history_size; | 115 return history_size; |
| 116 } | 116 } |
| 117 | 117 |
| 118 uint64 get_next_event_id() { |
| 119 // Set the first unique_id_ to 1 because we set id to 0 for other types |
| 120 // of events. |
| 121 static uint64 id = 1; |
| 122 if (id==0) |
| 123 id++; |
| 124 DCHECK_NE(id, 0UL); |
| 125 return id++; |
| 126 } |
| 127 |
| 118 } // namespace | 128 } // namespace |
| 119 | 129 |
| 120 MotionEventAndroid::Pointer::Pointer(jint id, | 130 MotionEventAndroid::Pointer::Pointer(jint id, |
| 121 jfloat pos_x_pixels, | 131 jfloat pos_x_pixels, |
| 122 jfloat pos_y_pixels, | 132 jfloat pos_y_pixels, |
| 123 jfloat touch_major_pixels, | 133 jfloat touch_major_pixels, |
| 124 jfloat touch_minor_pixels, | 134 jfloat touch_minor_pixels, |
| 125 jfloat orientation_rad, | 135 jfloat orientation_rad, |
| 126 jint tool_type) | 136 jint tool_type) |
| 127 : id(id), | 137 : id(id), |
| (...skipping 29 matching lines...) Expand all Loading... |
| 157 const Pointer& pointer1) | 167 const Pointer& pointer1) |
| 158 : pix_to_dip_(pix_to_dip), | 168 : pix_to_dip_(pix_to_dip), |
| 159 cached_time_(FromAndroidTime(time_ms)), | 169 cached_time_(FromAndroidTime(time_ms)), |
| 160 cached_action_(FromAndroidAction(android_action)), | 170 cached_action_(FromAndroidAction(android_action)), |
| 161 cached_pointer_count_(pointer_count), | 171 cached_pointer_count_(pointer_count), |
| 162 cached_history_size_(ToValidHistorySize(history_size, cached_action_)), | 172 cached_history_size_(ToValidHistorySize(history_size, cached_action_)), |
| 163 cached_action_index_(action_index), | 173 cached_action_index_(action_index), |
| 164 cached_button_state_(FromAndroidButtonState(android_button_state)), | 174 cached_button_state_(FromAndroidButtonState(android_button_state)), |
| 165 cached_flags_(FromAndroidMetaState(meta_state)), | 175 cached_flags_(FromAndroidMetaState(meta_state)), |
| 166 cached_raw_position_offset_(ToDips(raw_offset_x_pixels), | 176 cached_raw_position_offset_(ToDips(raw_offset_x_pixels), |
| 167 ToDips(raw_offset_y_pixels)) { | 177 ToDips(raw_offset_y_pixels)), |
| 178 unique_id_(get_next_event_id()) { |
| 168 DCHECK_GT(pointer_count, 0); | 179 DCHECK_GT(pointer_count, 0); |
| 169 | 180 |
| 170 event_.Reset(env, event); | 181 event_.Reset(env, event); |
| 171 if (cached_pointer_count_ > MAX_POINTERS_TO_CACHE || cached_history_size_ > 0) | 182 if (cached_pointer_count_ > MAX_POINTERS_TO_CACHE || cached_history_size_ > 0) |
| 172 DCHECK(event_.obj()); | 183 DCHECK(event_.obj()); |
| 173 | 184 |
| 174 cached_pointers_[0] = FromAndroidPointer(pointer0); | 185 cached_pointers_[0] = FromAndroidPointer(pointer0); |
| 175 cached_pointers_[1] = FromAndroidPointer(pointer1); | 186 cached_pointers_[1] = FromAndroidPointer(pointer1); |
| 176 } | 187 } |
| 177 | 188 |
| 178 MotionEventAndroid::~MotionEventAndroid() { | 189 MotionEventAndroid::~MotionEventAndroid() { |
| 179 } | 190 } |
| 180 | 191 |
| 181 int MotionEventAndroid::GetId() const { | 192 int MotionEventAndroid::GetId() const { |
| 182 return 0; | 193 return 0; |
| 183 } | 194 } |
| 184 | 195 |
| 196 uint64 MotionEventAndroid::GetUniqueId() const { |
| 197 return unique_id_; |
| 198 } |
| 199 |
| 185 MotionEventAndroid::Action MotionEventAndroid::GetAction() const { | 200 MotionEventAndroid::Action MotionEventAndroid::GetAction() const { |
| 186 return cached_action_; | 201 return cached_action_; |
| 187 } | 202 } |
| 188 | 203 |
| 189 int MotionEventAndroid::GetActionIndex() const { | 204 int MotionEventAndroid::GetActionIndex() const { |
| 190 DCHECK(cached_action_ == ACTION_POINTER_UP || | 205 DCHECK(cached_action_ == ACTION_POINTER_UP || |
| 191 cached_action_ == ACTION_POINTER_DOWN) | 206 cached_action_ == ACTION_POINTER_DOWN) |
| 192 << "Invalid action for GetActionIndex(): " << cached_action_; | 207 << "Invalid action for GetActionIndex(): " << cached_action_; |
| 193 DCHECK_GE(cached_action_index_, 0); | 208 DCHECK_GE(cached_action_index_, 0); |
| 194 DCHECK_LT(cached_action_index_, static_cast<int>(cached_pointer_count_)); | 209 DCHECK_LT(cached_action_index_, static_cast<int>(cached_pointer_count_)); |
| (...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 332 result.tool_type = FromAndroidToolType(pointer.tool_type); | 347 result.tool_type = FromAndroidToolType(pointer.tool_type); |
| 333 return result; | 348 return result; |
| 334 } | 349 } |
| 335 | 350 |
| 336 // static | 351 // static |
| 337 bool MotionEventAndroid::RegisterMotionEventAndroid(JNIEnv* env) { | 352 bool MotionEventAndroid::RegisterMotionEventAndroid(JNIEnv* env) { |
| 338 return JNI_MotionEvent::RegisterNativesImpl(env); | 353 return JNI_MotionEvent::RegisterNativesImpl(env); |
| 339 } | 354 } |
| 340 | 355 |
| 341 } // namespace content | 356 } // namespace content |
| OLD | NEW |