| Index: content/public/android/java/src/org/chromium/content/browser/RenderCoordinates.java
|
| diff --git a/content/public/android/java/src/org/chromium/content/browser/RenderCoordinates.java b/content/public/android/java/src/org/chromium/content/browser/RenderCoordinates.java
|
| index a971c681ec145ef91c1fa6ef92aeb96a5fb4a90a..2df4f974938fc00b0ed8930b8fab2d0c6fdca053 100644
|
| --- a/content/public/android/java/src/org/chromium/content/browser/RenderCoordinates.java
|
| +++ b/content/public/android/java/src/org/chromium/content/browser/RenderCoordinates.java
|
| @@ -4,7 +4,12 @@
|
|
|
| package org.chromium.content.browser;
|
|
|
| +import android.content.Context;
|
| +import android.util.TypedValue;
|
| +
|
| +import org.chromium.base.CommandLine;
|
| import org.chromium.base.VisibleForTesting;
|
| +import org.chromium.content.common.ContentSwitches;
|
|
|
| /**
|
| * Cached copy of all positions and scales (CSS-to-DIP-to-physical pixels)
|
| @@ -36,6 +41,10 @@ public class RenderCoordinates {
|
| // Cached device density.
|
| private float mDeviceScaleFactor;
|
|
|
| + // Multiplier that determines how many (device) pixels to scroll per mouse
|
| + // wheel tick. Defaults to the preferred list item height.
|
| + private float mWheelScrollFactor;
|
| +
|
| private float mTopContentOffsetYPix;
|
| private float mBottomContentOffsetYPix;
|
|
|
| @@ -53,8 +62,27 @@ public class RenderCoordinates {
|
| mContentHeightCss = contentHeightCss;
|
| }
|
|
|
| - void setDeviceScaleFactor(float deviceScaleFactor) {
|
| - mDeviceScaleFactor = deviceScaleFactor;
|
| + void setDeviceScaleFactor(Context context) {
|
| + String forceScaleFactor =
|
| + CommandLine.getInstance().getSwitchValue(ContentSwitches.FORCE_DEVICE_SCALE_FACTOR);
|
| + mDeviceScaleFactor = forceScaleFactor != null
|
| + ? Float.valueOf(forceScaleFactor)
|
| + : context.getResources().getDisplayMetrics().density;
|
| +
|
| + // The wheel scroll factor depends on the theme in the context.
|
| + // This code assumes that the theme won't change between this call and
|
| + // getWheelScrollScale().
|
| +
|
| + TypedValue outValue = new TypedValue();
|
| + // This is the same attribute used by Android Views to scale wheel
|
| + // event motion into scroll deltas.
|
| + if (context.getTheme().resolveAttribute(
|
| + android.R.attr.listPreferredItemHeight, outValue, true)) {
|
| + mWheelScrollFactor = outValue.getDimension(context.getResources().getDisplayMetrics());
|
| + } else {
|
| + // If attribute retrieval fails, just use a sensible default.
|
| + mWheelScrollFactor = 64 * mDeviceScaleFactor;
|
| + }
|
| }
|
|
|
| void updateFrameInfo(
|
| @@ -343,6 +371,13 @@ public class RenderCoordinates {
|
| }
|
|
|
| /**
|
| + * @return Current wheel scroll factor (physical pixels per mouse scroll click).
|
| + */
|
| + public float getWheelScrollFactor() {
|
| + return mWheelScrollFactor;
|
| + }
|
| +
|
| + /**
|
| * @return Maximum possible horizontal scroll in physical pixels.
|
| */
|
| public float getMaxHorizontalScrollPix() {
|
|
|