summaryrefslogtreecommitdiffstats
path: root/content/browser/android/touch_point.cc
diff options
context:
space:
mode:
authoryusufo@chromium.org <yusufo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-01-22 22:21:48 +0000
committeryusufo@chromium.org <yusufo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-01-22 22:21:48 +0000
commit42e4b2199f5a72111b720a76a1f3ab859d3cbcf2 (patch)
tree01c1d87791e72d71e811a51057623473354fa6f0 /content/browser/android/touch_point.cc
parent7024538f9b008ab42274bfc248ae7ed98d18ea42 (diff)
downloadchromium_src-42e4b2199f5a72111b720a76a1f3ab859d3cbcf2.zip
chromium_src-42e4b2199f5a72111b720a76a1f3ab859d3cbcf2.tar.gz
chromium_src-42e4b2199f5a72111b720a76a1f3ab859d3cbcf2.tar.bz2
Fix touch points to scale down by DPI when creating WebTouchEvents
When changing the gesture related calls to scale down by dpi_scale we had missed to do the same for TouchEvents. Adding it to touch_point so that the scaling works when dpi_scale is not 1. BUG=168929 Review URL: https://chromiumcodereview.appspot.com/12038025 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@178126 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/browser/android/touch_point.cc')
-rw-r--r--content/browser/android/touch_point.cc23
1 files changed, 15 insertions, 8 deletions
diff --git a/content/browser/android/touch_point.cc b/content/browser/android/touch_point.cc
index 70ed9db..d76de6e 100644
--- a/content/browser/android/touch_point.cc
+++ b/content/browser/android/touch_point.cc
@@ -15,7 +15,10 @@ using WebKit::WebTouchPoint;
namespace {
-void MaybeAddTouchPoint(JNIEnv* env, jobject pt, WebKit::WebTouchEvent& event) {
+void MaybeAddTouchPoint(JNIEnv* env,
+ jobject pt,
+ float dpi_scale,
+ WebKit::WebTouchEvent& event) {
WebTouchPoint::State state = static_cast<WebTouchPoint::State>(
Java_TouchPoint_getState(env, pt));
if (state == WebTouchPoint::StateUndefined)
@@ -34,8 +37,8 @@ void MaybeAddTouchPoint(JNIEnv* env, jobject pt, WebKit::WebTouchEvent& event) {
WebTouchPoint wtp;
wtp.id = Java_TouchPoint_getId(env, pt);
wtp.state = state;
- wtp.position.x = Java_TouchPoint_getX(env, pt);
- wtp.position.y = Java_TouchPoint_getY(env, pt);
+ wtp.position.x = Java_TouchPoint_getX(env, pt) / dpi_scale;
+ wtp.position.y = Java_TouchPoint_getY(env, pt) / dpi_scale;
// TODO(joth): Raw event co-ordinates.
wtp.screenPosition = wtp.position;
wtp.force = Java_TouchPoint_getPressure(env, pt);
@@ -50,8 +53,8 @@ void MaybeAddTouchPoint(JNIEnv* env, jobject pt, WebKit::WebTouchEvent& event) {
const static double SCALE_FACTOR = 1024.0;
const int radius = static_cast<int>(
(sqrt(Java_TouchPoint_getSize(env, pt)) / PI) * SCALE_FACTOR);
- wtp.radiusX = radius;
- wtp.radiusY = radius;
+ wtp.radiusX = radius / dpi_scale;
+ wtp.radiusY = radius / dpi_scale;
// Since our radii are equal, a rotation angle doesn't mean anything.
wtp.rotationAngle = 0.0;
@@ -64,8 +67,12 @@ void MaybeAddTouchPoint(JNIEnv* env, jobject pt, WebKit::WebTouchEvent& event) {
namespace content {
-void TouchPoint::BuildWebTouchEvent(JNIEnv* env, jint type, jlong time_ms,
- jobjectArray pts, WebKit::WebTouchEvent& event) {
+void TouchPoint::BuildWebTouchEvent(JNIEnv* env,
+ jint type,
+ jlong time_ms,
+ float dpi_scale,
+ jobjectArray pts,
+ WebKit::WebTouchEvent& event) {
event.type = static_cast<WebTouchEvent::Type>(type);
event.timeStampSeconds =
static_cast<double>(time_ms) / base::Time::kMillisecondsPerSecond;
@@ -74,7 +81,7 @@ void TouchPoint::BuildWebTouchEvent(JNIEnv* env, jint type, jlong time_ms,
// array has been filled
for (int i = 0; i < arrayLength; i++) {
jobject pt = env->GetObjectArrayElement(pts, i);
- MaybeAddTouchPoint(env, pt, event);
+ MaybeAddTouchPoint(env, pt, dpi_scale, event);
if (event.touchesLength >= event.touchesLengthCap)
break;
}