Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(46)

Side by Side Diff: content/browser/renderer_host/input/motion_event_android.cc

Issue 178193022: [Android] Always insert a TouchCancel if window or tab focus is lost (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 "base/android/jni_android.h" 7 #include "base/android/jni_android.h"
8 #include "jni/MotionEvent_jni.h" 8 #include "jni/MotionEvent_jni.h"
9 9
10 using base::android::AttachCurrentThread; 10 using base::android::AttachCurrentThread;
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
71 cached_pointer_count_(Java_MotionEvent_getPointerCount(env, event)), 71 cached_pointer_count_(Java_MotionEvent_getPointerCount(env, event)),
72 cached_history_size_(Java_MotionEvent_getHistorySize(env, event)), 72 cached_history_size_(Java_MotionEvent_getHistorySize(env, event)),
73 cached_action_index_(Java_MotionEvent_getActionIndex(env, event)), 73 cached_action_index_(Java_MotionEvent_getActionIndex(env, event)),
74 cached_x_(Java_MotionEvent_getXF(env, event)), 74 cached_x_(Java_MotionEvent_getXF(env, event)),
75 cached_y_(Java_MotionEvent_getYF(env, event)), 75 cached_y_(Java_MotionEvent_getYF(env, event)),
76 should_recycle_(recycle) { 76 should_recycle_(recycle) {
77 event_.Reset(env, event); 77 event_.Reset(env, event);
78 DCHECK(event_.obj()); 78 DCHECK(event_.obj());
79 } 79 }
80 80
81 MotionEventAndroid::MotionEventAndroid(const MotionEventAndroid& other, 81 MotionEventAndroid::MotionEventAndroid(const MotionEventAndroid& other)
82 bool clone) 82 : event_(Obtain(other)),
83 : cached_time_(other.cached_time_), 83 cached_time_(other.cached_time_),
84 cached_action_(other.cached_action_), 84 cached_action_(other.cached_action_),
85 cached_pointer_count_(other.cached_pointer_count_), 85 cached_pointer_count_(other.cached_pointer_count_),
86 cached_history_size_(other.cached_history_size_), 86 cached_history_size_(other.cached_history_size_),
87 cached_action_index_(other.cached_action_index_), 87 cached_action_index_(other.cached_action_index_),
88 cached_x_(other.cached_x_), 88 cached_x_(other.cached_x_),
89 cached_y_(other.cached_y_), 89 cached_y_(other.cached_y_),
90 should_recycle_(clone) { 90 should_recycle_(true) {
91 // An event with a pending recycle should never be copied (only cloned). 91 DCHECK(event_.obj());
92 DCHECK(clone || !other.should_recycle_);
93 if (clone)
94 event_.Reset(Obtain(other));
95 else
96 event_.Reset(other.event_);
97 } 92 }
98 93
99 MotionEventAndroid::~MotionEventAndroid() { 94 MotionEventAndroid::~MotionEventAndroid() {
100 if (should_recycle_) 95 if (should_recycle_)
101 Java_MotionEvent_recycle(AttachCurrentThread(), event_.obj()); 96 Java_MotionEvent_recycle(AttachCurrentThread(), event_.obj());
102 } 97 }
103 98
104 MotionEventAndroid::Action MotionEventAndroid::GetAction() const { 99 MotionEventAndroid::Action MotionEventAndroid::GetAction() const {
105 return cached_action_; 100 return cached_action_;
106 } 101 }
(...skipping 27 matching lines...) Expand all
134 return Java_MotionEvent_getYF_I( 129 return Java_MotionEvent_getYF_I(
135 AttachCurrentThread(), event_.obj(), pointer_index); 130 AttachCurrentThread(), event_.obj(), pointer_index);
136 } 131 }
137 132
138 float MotionEventAndroid::GetTouchMajor(size_t pointer_index) const { 133 float MotionEventAndroid::GetTouchMajor(size_t pointer_index) const {
139 DCHECK_LT(pointer_index, cached_pointer_count_); 134 DCHECK_LT(pointer_index, cached_pointer_count_);
140 return Java_MotionEvent_getTouchMajorF_I( 135 return Java_MotionEvent_getTouchMajorF_I(
141 AttachCurrentThread(), event_.obj(), pointer_index); 136 AttachCurrentThread(), event_.obj(), pointer_index);
142 } 137 }
143 138
139 float MotionEventAndroid::GetPressure(size_t pointer_index) const {
140 DCHECK_LT(pointer_index, cached_pointer_count_);
141 return Java_MotionEvent_getPressureF_I(
142 AttachCurrentThread(), event_.obj(), pointer_index);
143 }
144
144 base::TimeTicks MotionEventAndroid::GetEventTime() const { 145 base::TimeTicks MotionEventAndroid::GetEventTime() const {
145 return cached_time_; 146 return cached_time_;
146 } 147 }
147 148
148 size_t MotionEventAndroid::GetHistorySize() const { 149 size_t MotionEventAndroid::GetHistorySize() const {
149 return cached_history_size_; 150 return cached_history_size_;
150 } 151 }
151 152
152 base::TimeTicks MotionEventAndroid::GetHistoricalEventTime( 153 base::TimeTicks MotionEventAndroid::GetHistoricalEventTime(
153 size_t historical_index) const { 154 size_t historical_index) const {
(...skipping 14 matching lines...) Expand all
168 AttachCurrentThread(), event_.obj(), pointer_index, historical_index); 169 AttachCurrentThread(), event_.obj(), pointer_index, historical_index);
169 } 170 }
170 171
171 float MotionEventAndroid::GetHistoricalY(size_t pointer_index, 172 float MotionEventAndroid::GetHistoricalY(size_t pointer_index,
172 size_t historical_index) const { 173 size_t historical_index) const {
173 return Java_MotionEvent_getHistoricalYF_I_I( 174 return Java_MotionEvent_getHistoricalYF_I_I(
174 AttachCurrentThread(), event_.obj(), pointer_index, historical_index); 175 AttachCurrentThread(), event_.obj(), pointer_index, historical_index);
175 } 176 }
176 177
177 scoped_ptr<ui::MotionEvent> MotionEventAndroid::Clone() const { 178 scoped_ptr<ui::MotionEvent> MotionEventAndroid::Clone() const {
178 return scoped_ptr<MotionEvent>(new MotionEventAndroid(*this, true)); 179 return scoped_ptr<MotionEvent>(new MotionEventAndroid(*this));
179 } 180 }
180 181
181 scoped_ptr<ui::MotionEvent> MotionEventAndroid::Cancel() const { 182 scoped_ptr<ui::MotionEvent> MotionEventAndroid::Cancel() const {
182 return scoped_ptr<MotionEvent>(new MotionEventAndroid( 183 return scoped_ptr<MotionEvent>(new MotionEventAndroid(
183 AttachCurrentThread(), 184 AttachCurrentThread(),
184 Obtain(GetDownTime(), 185 Obtain(GetDownTime(),
185 GetEventTime(), 186 GetEventTime(),
186 MotionEventAndroid::ACTION_CANCEL, 187 MotionEventAndroid::ACTION_CANCEL,
187 GetX(0), 188 GetX(0),
188 GetY(0)).obj(), 189 GetY(0)).obj(),
189 true)); 190 true));
190 } 191 }
191 192
192 float MotionEventAndroid::GetPressure(size_t pointer_index) const {
193 return Java_MotionEvent_getPressureF_I(
194 AttachCurrentThread(), event_.obj(), pointer_index);
195 }
196
197 float MotionEventAndroid::GetTouchMinor(size_t pointer_index) const { 193 float MotionEventAndroid::GetTouchMinor(size_t pointer_index) const {
198 return Java_MotionEvent_getTouchMinorF_I( 194 return Java_MotionEvent_getTouchMinorF_I(
199 AttachCurrentThread(), event_.obj(), pointer_index); 195 AttachCurrentThread(), event_.obj(), pointer_index);
200 } 196 }
201 197
202 float MotionEventAndroid::GetOrientation() const { 198 float MotionEventAndroid::GetOrientation() const {
203 return Java_MotionEvent_getOrientationF(AttachCurrentThread(), event_.obj()); 199 return Java_MotionEvent_getOrientationF(AttachCurrentThread(), event_.obj());
204 } 200 }
205 201
206 base::TimeTicks MotionEventAndroid::GetDownTime() const { 202 base::TimeTicks MotionEventAndroid::GetDownTime() const {
(...skipping 23 matching lines...) Expand all
230 return Java_MotionEvent_obtainAVME_J_J_I_F_F_I(AttachCurrentThread(), 226 return Java_MotionEvent_obtainAVME_J_J_I_F_F_I(AttachCurrentThread(),
231 ToAndroidTime(down_time), 227 ToAndroidTime(down_time),
232 ToAndroidTime(event_time), 228 ToAndroidTime(event_time),
233 ToAndroidAction(action), 229 ToAndroidAction(action),
234 x, 230 x,
235 y, 231 y,
236 0); 232 0);
237 } 233 }
238 234
239 } // namespace content 235 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/renderer_host/input/motion_event_android.h ('k') | content/browser/renderer_host/input/motion_event_web.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698