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

Unified Diff: content/public/android/java/src/org/chromium/content/browser/input/JoystickScrollProvider.java

Issue 1571043002: Simplify joystick scrolling code and reenable test. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address code review comments Created 4 years, 11 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 side-by-side diff with in-line comments
Download patch
Index: content/public/android/java/src/org/chromium/content/browser/input/JoystickScrollProvider.java
diff --git a/content/public/android/java/src/org/chromium/content/browser/input/JoystickScrollProvider.java b/content/public/android/java/src/org/chromium/content/browser/input/JoystickScrollProvider.java
index 1039c689d3478bf3eb7b231d5c7e7d3a65a74180..1336b78b3982b6630d0ad30e90bbc4cf88c6ee73 100644
--- a/content/public/android/java/src/org/chromium/content/browser/input/JoystickScrollProvider.java
+++ b/content/public/android/java/src/org/chromium/content/browser/input/JoystickScrollProvider.java
@@ -16,9 +16,9 @@ import org.chromium.content.browser.ContentViewCore;
* This class implements auto scrolling and panning for gamepad left joystick motion event.
*/
public class JoystickScrollProvider {
- private static final String TAG = "JoystickScrollProvider";
+ private static final String TAG = "JoystickScroll";
- private static final float JOYSTICK_SCROLL_FACTOR_MULTIPLIER = 25f;
+ private static final float JOYSTICK_SCROLL_FACTOR_MULTIPLIER = 20f;
// Joystick produces "noise", 0.20f has proven a safe value to
// remove noise and still allow reasonable input range.
private static final float JOYSTICK_SCROLL_DEADZONE = 0.2f;
@@ -32,8 +32,6 @@ public class JoystickScrollProvider {
private long mLastAnimateTimeMillis;
- private boolean mAutoScrollActive;
-
private boolean mEnabled;
private Runnable mScrollRunnable;
@@ -45,7 +43,6 @@ public class JoystickScrollProvider {
*/
public JoystickScrollProvider(ContentViewCore contentView) {
mView = contentView;
- mAutoScrollActive = false;
mEnabled = true;
}
@@ -72,6 +69,8 @@ public class JoystickScrollProvider {
public boolean onMotion(MotionEvent event) {
if (!mEnabled) return false;
if ((event.getSource() & InputDevice.SOURCE_CLASS_JOYSTICK) == 0) return false;
+ Log.d(TAG, "Joystick left stick axis: " + event.getAxisValue(MotionEvent.AXIS_X) + ","
+ + event.getAxisValue(MotionEvent.AXIS_Y));
computeNewScrollVelocity(event);
if (mScrollVelocityX == 0 && mScrollVelocityY == 0) {
@@ -86,37 +85,28 @@ public class JoystickScrollProvider {
}
};
}
- if (!mAutoScrollActive) {
+ if (mLastAnimateTimeMillis == 0) {
mView.getContainerView().postOnAnimation(mScrollRunnable);
- mAutoScrollActive = true;
+ mLastAnimateTimeMillis = AnimationUtils.currentAnimationTimeMillis();
}
return true;
}
private void animateScroll() {
- if (!mEnabled || !mView.getContainerView().hasFocus()) {
- stop();
+ if (mLastAnimateTimeMillis == 0) {
return;
}
-
final long timeMillis = AnimationUtils.currentAnimationTimeMillis();
- if (mLastAnimateTimeMillis != 0 && timeMillis > mLastAnimateTimeMillis) {
Ted C 2016/01/13 17:29:33 I guess the greater than check isn't needed becaus
aelias_OOO_until_Jul13 2016/01/13 20:18:22 Right. Also, if it did go backwards through some
- final long dt = timeMillis - mLastAnimateTimeMillis;
- final float dx = (mScrollVelocityX * dt / 1000.f);
- final float dy = (mScrollVelocityY * dt / 1000.f);
- mView.scrollBy(dx, dy, true);
- }
- assert mAutoScrollActive;
+ final long dt = timeMillis - mLastAnimateTimeMillis;
+ final float dx = (mScrollVelocityX * dt / 1000.f);
+ final float dy = (mScrollVelocityY * dt / 1000.f);
+ mView.scrollBy(dx, dy, true);
mLastAnimateTimeMillis = timeMillis;
mView.getContainerView().postOnAnimation(mScrollRunnable);
}
private void stop() {
mLastAnimateTimeMillis = 0;
- if (mAutoScrollActive) {
- mAutoScrollActive = false;
- mView.getContainerView().removeCallbacks(mScrollRunnable);
- }
}
/**
@@ -130,7 +120,7 @@ public class JoystickScrollProvider {
mScrollFactor = outValue.getDimension(
mView.getContext().getResources().getDisplayMetrics());
} else {
- Log.w(TAG, "Theme attribute listPreferredItemHeight not defined"
+ Log.d(TAG, "Theme attribute listPreferredItemHeight not defined"
+ "switching to fallback scroll factor ");
mScrollFactor = SCROLL_FACTOR_FALLBACK
* mView.getRenderCoordinates().getDeviceScaleFactor();
@@ -147,10 +137,9 @@ public class JoystickScrollProvider {
*/
private float getFilteredAxisValue(MotionEvent event, int axis) {
float axisValWithNoise = event.getAxisValue(axis);
- if (axisValWithNoise > JOYSTICK_SCROLL_DEADZONE) {
- return axisValWithNoise - JOYSTICK_SCROLL_DEADZONE;
- } else if (axisValWithNoise < -JOYSTICK_SCROLL_DEADZONE) {
- return axisValWithNoise + JOYSTICK_SCROLL_DEADZONE;
+ if (axisValWithNoise > JOYSTICK_SCROLL_DEADZONE
+ || axisValWithNoise < -JOYSTICK_SCROLL_DEADZONE) {
+ return axisValWithNoise;
}
return 0f;
}

Powered by Google App Engine
This is Rietveld 408576698