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

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

Issue 181833003: [Android] Out with the Android GR, in with the new unified C++ GR (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 6 years, 10 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/SnapScrollController.java
diff --git a/content/public/android/java/src/org/chromium/content/browser/SnapScrollController.java b/content/public/android/java/src/org/chromium/content/browser/SnapScrollController.java
deleted file mode 100644
index 99a8b5c0b1563892a095ce3699c0fa06b62394b9..0000000000000000000000000000000000000000
--- a/content/public/android/java/src/org/chromium/content/browser/SnapScrollController.java
+++ /dev/null
@@ -1,138 +0,0 @@
-// Copyright 2013 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;
-
-import android.content.Context;
-import android.util.DisplayMetrics;
-import android.view.MotionEvent;
-
-/**
- * This objects controls the scroll snapping behavior based on scroll updates.
- */
-class SnapScrollController {
- private static final String TAG = "SnapScrollController";
- private static final int SNAP_NONE = 0;
- private static final int SNAP_HORIZ = 1;
- private static final int SNAP_VERT = 2;
- private static final int SNAP_BOUND = 16;
-
- private float mChannelDistance = 16f;
- private int mSnapScrollMode = SNAP_NONE;
- private int mFirstTouchX = -1;
- private int mFirstTouchY = -1;
- private float mDistanceX = 0;
- private float mDistanceY = 0;
-
- SnapScrollController(Context context) {
- calculateChannelDistance(context);
- }
-
- /**
- * Updates the snap scroll mode based on the given X and Y distance to be moved on scroll.
- * If the scroll update is above a threshold, the snapping behavior is reset.
- * @param distanceX X distance for the current scroll update.
- * @param distanceY Y distance for the current scroll update.
- */
- void updateSnapScrollMode(float distanceX, float distanceY) {
- if (mSnapScrollMode == SNAP_HORIZ || mSnapScrollMode == SNAP_VERT) {
- mDistanceX += Math.abs(distanceX);
- mDistanceY += Math.abs(distanceY);
- if (mSnapScrollMode == SNAP_HORIZ) {
- if (mDistanceY > mChannelDistance) {
- mSnapScrollMode = SNAP_NONE;
- } else if (mDistanceX > mChannelDistance) {
- mDistanceX = 0;
- mDistanceY = 0;
- }
- } else {
- if (mDistanceX > mChannelDistance) {
- mSnapScrollMode = SNAP_NONE;
- } else if (mDistanceY > mChannelDistance) {
- mDistanceX = 0;
- mDistanceY = 0;
- }
- }
- }
- }
-
- /**
- * Sets the snap scroll mode based on the event type.
- * @param event The received MotionEvent.
- */
- void setSnapScrollingMode(MotionEvent event, boolean isScaleGestureDetectionInProgress) {
- switch(event.getAction()) {
- case MotionEvent.ACTION_DOWN:
- mSnapScrollMode = SNAP_NONE;
- mFirstTouchX = (int) event.getX();
- mFirstTouchY = (int) event.getY();
- break;
- // Set scrolling mode to SNAP_X if scroll towards x-axis exceeds SNAP_BOUND
- // and movement towards y-axis is trivial.
- // Set scrolling mode to SNAP_Y if scroll towards y-axis exceeds SNAP_BOUND
- // and movement towards x-axis is trivial.
- // Scrolling mode will remain in SNAP_NONE for other conditions.
- case MotionEvent.ACTION_MOVE:
- if (!isScaleGestureDetectionInProgress &&
- mSnapScrollMode == SNAP_NONE) {
- int xDiff = (int) Math.abs(event.getX() - mFirstTouchX);
- int yDiff = (int) Math.abs(event.getY() - mFirstTouchY);
- if (xDiff > SNAP_BOUND && yDiff < SNAP_BOUND) {
- mSnapScrollMode = SNAP_HORIZ;
- } else if (xDiff < SNAP_BOUND && yDiff > SNAP_BOUND) {
- mSnapScrollMode = SNAP_VERT;
- }
- }
- break;
- case MotionEvent.ACTION_UP:
- case MotionEvent.ACTION_CANCEL:
- mFirstTouchX = -1;
- mFirstTouchY = -1;
- mDistanceX = 0;
- mDistanceY = 0;
- break;
- default:
- break;
- }
- }
-
- private void calculateChannelDistance(Context context) {
- // The channel distance is adjusted for density and screen size.
- final DisplayMetrics metrics = context.getResources().getDisplayMetrics();
- final double screenSize = Math.hypot((double) metrics.widthPixels / metrics.densityDpi,
- (double) metrics.heightPixels / metrics.densityDpi);
- if (screenSize < 3.0) {
- mChannelDistance = 16f;
- } else if (screenSize < 5.0) {
- mChannelDistance = 22f;
- } else if (screenSize < 7.0) {
- mChannelDistance = 28f;
- } else {
- mChannelDistance = 34f;
- }
- mChannelDistance = mChannelDistance * metrics.density;
- if (mChannelDistance < 16f) mChannelDistance = 16f;
- }
-
- /**
- * @return Whether current snap scroll mode is vertical.
- */
- boolean isSnapVertical() {
- return mSnapScrollMode == SNAP_VERT;
- }
-
- /**
- * @return Whether current snap scroll mode is horizontal.
- */
- boolean isSnapHorizontal() {
- return mSnapScrollMode == SNAP_HORIZ;
- }
-
- /**
- * @return Whether currently snapping scrolls.
- */
- boolean isSnappingScrolls() {
- return mSnapScrollMode != SNAP_NONE;
- }
-}

Powered by Google App Engine
This is Rietveld 408576698