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

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

Issue 2869313003: Delete Android joystick zoom code. (Closed)
Patch Set: Rebase Created 3 years, 7 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/JoystickZoomProvider.java
diff --git a/content/public/android/java/src/org/chromium/content/browser/input/JoystickZoomProvider.java b/content/public/android/java/src/org/chromium/content/browser/input/JoystickZoomProvider.java
deleted file mode 100644
index 4e5608a09d56b359045818481b136004e29bca96..0000000000000000000000000000000000000000
--- a/content/public/android/java/src/org/chromium/content/browser/input/JoystickZoomProvider.java
+++ /dev/null
@@ -1,190 +0,0 @@
-// Copyright 2016 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package org.chromium.content.browser.input;
-
-import android.view.InputDevice;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.animation.AnimationUtils;
-
-import org.chromium.base.VisibleForTesting;
-
-/**
- * This class controls page zoomin/out using trigger joystick events.
- * Page Zoomin is proportional to RTRIGGER axis movement.
- * Page Zoomout is proportional to LTRIGGER axis movement.
- */
-public class JoystickZoomProvider {
- private static final String TAG = "JoystickZoomProvider";
-
- private static final float JOYSTICK_NOISE_THRESHOLD = 0.2f;
-
- private static final float ZOOM_SPEED = 1.65f;
-
- /**
- * Interface that provides the implementation of pinch zoom action.
- */
- public interface PinchZoomHandler {
- /**
- * Send start of pinch zoom gesture.
- *
- * @param xPix X-coordinate of location from which pinch zoom would start.
- * @param yPix Y-coordinate of location from which pinch zoom would start.
- * @return whether the pinch zoom start gesture was sent.
- */
- boolean pinchBegin(int xPix, int yPix);
-
- /**
- * Send pinch zoom gesture.
- *
- * @param xPix X-coordinate of pinch zoom location.
- * @param yPix Y-coordinate of pinch zoom location.
- * @param delta the factor by which the current page scale should be multiplied by.
- * @return whether the pinchby gesture was sent.
- */
- boolean pinchBy(int xPix, int yPix, float delta);
-
- /**
- * Stop pinch zoom gesture.
- *
- * @return whether the pinch stop gesture was sent.
- */
- boolean pinchEnd();
- }
- ;
-
- /**
- * Interface that provides last animation interval. Overriden for testing.
- */
- public interface AnimationIntervalProvider {
- /**
- * Returns last animation interval.
- */
- public long getLastAnimationFrameInterval();
- }
- ;
-
- protected final float mDeviceScaleFactor;
- protected View mContainerView;
- protected Runnable mZoomRunnable;
-
- private final int mZoomXcoord;
- private final int mZoomYcoord;
- private final PinchZoomHandler mPinchZoomHandler;
-
- private AnimationIntervalProvider mSystemAnimationIntervalProvider;
- private long mLastAnimateTimeMillis;
- private float mZoomInVelocity;
- private float mZoomOutVelocity;
-
- /**
- * Constructs a new JoystickZoomProvider.
- *
- * @param containerView The view to which the zoom action will be posted.
- * @param scaleFactor Device scale factor.
- * @param xcoord X position of the zoom point.
- * @param ycoord Y position of the zoom point.
- * @param pinchZoomHandler {@link PinchZoomHandler} implementation.
- */
- public JoystickZoomProvider(View containerView, float scaleFactor, int xcoord, int ycoord,
- PinchZoomHandler pinchZoomHandler) {
- mContainerView = containerView;
- mDeviceScaleFactor = scaleFactor;
- mZoomXcoord = xcoord;
- mZoomYcoord = ycoord;
- mPinchZoomHandler = pinchZoomHandler;
- mSystemAnimationIntervalProvider = new AnimationIntervalProvider() {
- @Override
- public long getLastAnimationFrameInterval() {
- return AnimationUtils.currentAnimationTimeMillis();
- }
- };
- }
-
- @VisibleForTesting
- public void setAnimationIntervalProviderForTesting(AnimationIntervalProvider intervalProvider) {
- mSystemAnimationIntervalProvider = intervalProvider;
- }
-
- public void setContainerView(View containerView) {
- mContainerView = containerView;
- }
-
- /**
- * This function processes motion event and computes new
- * page scale factor which is proportional to *_TRIGGER axes movement.
- * It also starts runnable to update current page scale to new page scale.
- *
- * @param event Motion event to be processed for zooming.
- * @return Whether zooming using *_TRIGGER axes is performed or not.
- */
- public boolean onMotion(MotionEvent event) {
- if ((event.getSource() & InputDevice.SOURCE_CLASS_JOYSTICK) == 0) return false;
-
- computeNewZoomVelocity(event);
- if (mZoomInVelocity == 0 && mZoomOutVelocity == 0) {
- stop();
- return false;
- }
- if (mZoomRunnable == null) {
- mZoomRunnable = new Runnable() {
- @Override
- public void run() {
- animateZoom();
- }
- };
- }
- if (mLastAnimateTimeMillis == 0) {
- mLastAnimateTimeMillis =
- mSystemAnimationIntervalProvider.getLastAnimationFrameInterval();
- mContainerView.postOnAnimation(mZoomRunnable);
- mPinchZoomHandler.pinchBegin(mZoomXcoord, mZoomYcoord);
- }
- return true;
- }
-
- protected void stop() {
- if (mLastAnimateTimeMillis != 0) {
- mPinchZoomHandler.pinchEnd();
- mLastAnimateTimeMillis = 0;
- }
- }
-
- private void computeNewZoomVelocity(MotionEvent event) {
- mZoomInVelocity = getFilteredAxisValue(event, MotionEvent.AXIS_RTRIGGER);
- mZoomOutVelocity = getFilteredAxisValue(event, MotionEvent.AXIS_LTRIGGER);
- }
-
- protected void animateZoom() {
- if (!mContainerView.hasFocus()) {
- stop();
- return;
- }
- if (mLastAnimateTimeMillis == 0) return;
-
- final long timeMillis = mSystemAnimationIntervalProvider.getLastAnimationFrameInterval();
- final long dt = timeMillis - mLastAnimateTimeMillis;
- final float zoomFactor = (float) Math.pow(
- ZOOM_SPEED, mDeviceScaleFactor * (mZoomInVelocity - mZoomOutVelocity) * dt / 1000f);
- mPinchZoomHandler.pinchBy(mZoomXcoord, mZoomYcoord, zoomFactor);
- mLastAnimateTimeMillis = timeMillis;
- mContainerView.postOnAnimation(mZoomRunnable);
- }
-
- /**
- * This function removes noise from motion events.
- * Joystick is very senstitive, it produces value (noise) along X/Y directions
- * even if gamepad button is pressed which is not acceptable.
- * Returns non-zero value only if event value is above noise threshold.
- *
- * @param event Motion event which needs noise processing.
- * @param axis Joystick axis (whether X_AXIS of Y_AXIS)
- * @return Processed joystick value.
- */
- private static float getFilteredAxisValue(MotionEvent event, int axis) {
- float axisValWithNoise = event.getAxisValue(axis);
- return (axisValWithNoise > JOYSTICK_NOISE_THRESHOLD) ? axisValWithNoise : 0f;
- }
-}

Powered by Google App Engine
This is Rietveld 408576698