Deprecate ScrollerCompat after minSdk 14 bump.

ScrollerCompat can be completely replaced by OverScroller that was
added in API14 which ScrollerCompat wraps.

Bug: 32794064
Test: ./gradlew assemble
Change-Id: Ice79dd122b00e1b3c92dea3a95446ac897135a84
diff --git a/api/current.txt b/api/current.txt
index b767ee7..aa8f97d 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -8626,25 +8626,25 @@
     method public void setViewResource(int);
   }
 
-  public final class ScrollerCompat {
-    method public void abortAnimation();
-    method public boolean computeScrollOffset();
-    method public static android.support.v4.widget.ScrollerCompat create(android.content.Context);
-    method public static android.support.v4.widget.ScrollerCompat create(android.content.Context, android.view.animation.Interpolator);
-    method public void fling(int, int, int, int, int, int, int, int);
-    method public void fling(int, int, int, int, int, int, int, int, int, int);
-    method public float getCurrVelocity();
-    method public int getCurrX();
-    method public int getCurrY();
-    method public int getFinalX();
-    method public int getFinalY();
-    method public boolean isFinished();
-    method public boolean isOverScrolled();
-    method public void notifyHorizontalEdgeReached(int, int, int);
-    method public void notifyVerticalEdgeReached(int, int, int);
-    method public boolean springBack(int, int, int, int, int, int);
-    method public void startScroll(int, int, int, int);
-    method public void startScroll(int, int, int, int, int);
+  public final deprecated class ScrollerCompat {
+    method public deprecated void abortAnimation();
+    method public deprecated boolean computeScrollOffset();
+    method public static deprecated android.support.v4.widget.ScrollerCompat create(android.content.Context);
+    method public static deprecated android.support.v4.widget.ScrollerCompat create(android.content.Context, android.view.animation.Interpolator);
+    method public deprecated void fling(int, int, int, int, int, int, int, int);
+    method public deprecated void fling(int, int, int, int, int, int, int, int, int, int);
+    method public deprecated float getCurrVelocity();
+    method public deprecated int getCurrX();
+    method public deprecated int getCurrY();
+    method public deprecated int getFinalX();
+    method public deprecated int getFinalY();
+    method public deprecated boolean isFinished();
+    method public deprecated boolean isOverScrolled();
+    method public deprecated void notifyHorizontalEdgeReached(int, int, int);
+    method public deprecated void notifyVerticalEdgeReached(int, int, int);
+    method public deprecated boolean springBack(int, int, int, int, int, int);
+    method public deprecated void startScroll(int, int, int, int);
+    method public deprecated void startScroll(int, int, int, int, int);
   }
 
   public final deprecated class SearchViewCompat {
diff --git a/compat/ics/android/support/v4/widget/ScrollerCompatIcs.java b/compat/ics/android/support/v4/widget/ScrollerCompatIcs.java
deleted file mode 100644
index cce00c6..0000000
--- a/compat/ics/android/support/v4/widget/ScrollerCompatIcs.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.support.v4.widget;
-
-import android.support.annotation.RequiresApi;
-import android.widget.OverScroller;
-
-/**
- * ICS API access for ScrollerCompat
- */
-
-@RequiresApi(14)
-class ScrollerCompatIcs {
-    public static float getCurrVelocity(Object scroller) {
-        return ((OverScroller) scroller).getCurrVelocity();
-    }
-}
diff --git a/compat/java/android/support/v4/widget/ScrollerCompat.java b/compat/java/android/support/v4/widget/ScrollerCompat.java
index 0161574..8e8645c 100644
--- a/compat/java/android/support/v4/widget/ScrollerCompat.java
+++ b/compat/java/android/support/v4/widget/ScrollerCompat.java
@@ -17,11 +17,8 @@
 package android.support.v4.widget;
 
 import android.content.Context;
-import android.os.Build;
-import android.view.animation.AnimationUtils;
 import android.view.animation.Interpolator;
 import android.widget.OverScroller;
-import android.widget.Scroller;
 
 /**
  * Provides access to new {@link android.widget.Scroller Scroller} APIs when available.
@@ -29,25 +26,34 @@
  * <p>This class provides a platform version-independent mechanism for obeying the
  * current device's preferred scroll physics and fling behavior. It offers a subset of
  * the APIs from Scroller or OverScroller.</p>
+ *
+ * @deprecated Use {@link OverScroller} directly.
  */
+@Deprecated
 public final class ScrollerCompat {
     OverScroller mScroller;
-    private final boolean mIsIcsOrNewer;
 
+    /**
+     * @deprecated Use {@link OverScroller} constructor directly.
+     */
+    @Deprecated
     public static ScrollerCompat create(Context context) {
         return create(context, null);
     }
 
+    /**
+     * @deprecated Use {@link OverScroller} constructor directly.
+     */
+    @Deprecated
     public static ScrollerCompat create(Context context, Interpolator interpolator) {
-        return new ScrollerCompat(Build.VERSION.SDK_INT >= 14, context, interpolator);
+        return new ScrollerCompat(context, interpolator);
     }
 
     /**
      * Package protected constructor that allows to specify if API version is newer than ICS.
      * It is useful for unit testing.
      */
-    ScrollerCompat(boolean isIcsOrNewer, Context context, Interpolator interpolator) {
-        mIsIcsOrNewer = isIcsOrNewer;
+    ScrollerCompat(Context context, Interpolator interpolator) {
         mScroller = interpolator != null ?
                 new OverScroller(context, interpolator) : new OverScroller(context);
     }
@@ -56,7 +62,10 @@
      * Returns whether the scroller has finished scrolling.
      *
      * @return True if the scroller has finished scrolling, false otherwise.
+     *
+     * @deprecated Use {@link OverScroller#isFinished()} directly.
      */
+    @Deprecated
     public boolean isFinished() {
         return mScroller.isFinished();
     }
@@ -65,7 +74,10 @@
      * Returns the current X offset in the scroll.
      *
      * @return The new X offset as an absolute distance from the origin.
+     *
+     * @deprecated Use {@link OverScroller#getCurrX()} directly.
      */
+    @Deprecated
     public int getCurrX() {
         return mScroller.getCurrX();
     }
@@ -74,21 +86,30 @@
      * Returns the current Y offset in the scroll.
      *
      * @return The new Y offset as an absolute distance from the origin.
+     *
+     * @deprecated Use {@link OverScroller#getCurrY()} directly.
      */
+    @Deprecated
     public int getCurrY() {
         return mScroller.getCurrY();
     }
 
     /**
      * @return The final X position for the scroll in progress, if known.
+     *
+     * @deprecated Use {@link OverScroller#getFinalX()} directly.
      */
+    @Deprecated
     public int getFinalX() {
         return mScroller.getFinalX();
     }
 
     /**
      * @return The final Y position for the scroll in progress, if known.
+     *
+     * @deprecated Use {@link OverScroller#getFinalY()} directly.
      */
+    @Deprecated
     public int getFinalY() {
         return mScroller.getFinalY();
     }
@@ -96,22 +117,27 @@
     /**
      * Returns the current velocity on platform versions that support it.
      *
-     * <p>The device must support at least API level 14 (Ice Cream Sandwich).
-     * On older platform versions this method will return 0. This method should
-     * only be used as input for nonessential visual effects such as {@link EdgeEffectCompat}.</p>
+     * <p> This method should only be used as input for nonessential visual effects such as
+     * {@link EdgeEffectCompat}.</p>
      *
      * @return The original velocity less the deceleration. Result may be
      * negative.
+     *
+     * @deprecated Use {@link OverScroller#getCurrVelocity()} directly.
      */
+    @Deprecated
     public float getCurrVelocity() {
-        return mIsIcsOrNewer ? ScrollerCompatIcs.getCurrVelocity(mScroller) : 0;
+        return mScroller.getCurrVelocity();
     }
 
     /**
      * Call this when you want to know the new location.  If it returns true,
      * the animation is not yet finished.  loc will be altered to provide the
      * new location.
+     *
+     * @deprecated Use {@link OverScroller#computeScrollOffset()} directly.
      */
+    @Deprecated
     public boolean computeScrollOffset() {
         return mScroller.computeScrollOffset();
     }
@@ -129,7 +155,10 @@
      *        content to the left.
      * @param dy Vertical distance to travel. Positive numbers will scroll the
      *        content up.
+     *
+     * @deprecated Use {@link OverScroller#getCurrX()} directly.
      */
+    @Deprecated
     public void startScroll(int startX, int startY, int dx, int dy) {
         mScroller.startScroll(startX, startY, dx, dy);
     }
@@ -146,7 +175,10 @@
      * @param dy Vertical distance to travel. Positive numbers will scroll the
      *        content up.
      * @param duration Duration of the scroll in milliseconds.
+     *
+     * @deprecated Use {@link OverScroller#startScroll(int, int, int, int, int)} directly.
      */
+    @Deprecated
     public void startScroll(int startX, int startY, int dx, int dy, int duration) {
         mScroller.startScroll(startX, startY, dx, dy, duration);
     }
@@ -169,7 +201,10 @@
      *        point.
      * @param maxY Maximum Y value. The scroller will not scroll past this
      *        point.
+     *
+     * @deprecated Use {@link OverScroller#fling(int, int, int, int, int, int, int, int)} directly.
      */
+    @Deprecated
     public void fling(int startX, int startY, int velocityX, int velocityY,
             int minX, int maxX, int minY, int maxY) {
         mScroller.fling(startX, startY, velocityX, velocityY, minX, maxX, minY, maxY);
@@ -197,7 +232,11 @@
      *            direction will be possible.
      * @param overY Overfling range. If > 0, vertical overfling in either
      *            direction will be possible.
+     *
+     * @deprecated Use {@link OverScroller#fling(int, int, int, int, int, int, int, int, int, int)}
+     * directly.
      */
+    @Deprecated
     public void fling(int startX, int startY, int velocityX, int velocityY,
             int minX, int maxX, int minY, int maxY, int overX, int overY) {
         mScroller.fling(startX, startY, velocityX, velocityY,
@@ -215,7 +254,10 @@
      * @param maxY Maximum valid Y value
      * @return true if a springback was initiated, false if startX and startY were
      *          already within the valid range.
+     *
+     * @deprecated Use {@link OverScroller#springBack(int, int, int, int, int, int)} directly.
      */
+    @Deprecated
     public boolean springBack(int startX, int startY, int minX, int maxX, int minY, int maxY) {
         return mScroller.springBack(startX, startY, minX, maxX, minY, maxY);
     }
@@ -223,7 +265,10 @@
     /**
      * Stops the animation. Aborting the animation causes the scroller to move to the final x and y
      * position.
+     *
+     * @deprecated Use {@link OverScroller#abortAnimation()} directly.
      */
+    @Deprecated
     public void abortAnimation() {
         mScroller.abortAnimation();
     }
@@ -241,7 +286,10 @@
      * @param finalX Desired final X position
      * @param overX Magnitude of overscroll allowed. This should be the maximum
      *              desired distance from finalX. Absolute value - must be positive.
+     *
+     * @deprecated Use {@link OverScroller#notifyHorizontalEdgeReached(int, int, int)} directly.
      */
+    @Deprecated
     public void notifyHorizontalEdgeReached(int startX, int finalX, int overX) {
         mScroller.notifyHorizontalEdgeReached(startX, finalX, overX);
     }
@@ -258,7 +306,10 @@
      * @param finalY Desired final Y position
      * @param overY Magnitude of overscroll allowed. This should be the maximum
      *              desired distance from finalY. Absolute value - must be positive.
+     *
+     * @deprecated Use {@link OverScroller#notifyVerticalEdgeReached(int, int, int)} directly.
      */
+    @Deprecated
     public void notifyVerticalEdgeReached(int startY, int finalY, int overY) {
         mScroller.notifyVerticalEdgeReached(startY, finalY, overY);
     }
@@ -275,7 +326,10 @@
      *
      * @return true when the current position is overscrolled and in the process of
      *         interpolating back to a valid value.
+     *
+     * @deprecated Use {@link OverScroller#isOverScrolled()} directly.
      */
+    @Deprecated
     public boolean isOverScrolled() {
         return mScroller.isOverScrolled();
     }
diff --git a/compat/tests/java/android/support/v4/widget/GingerbreadScrollerCompatTest.java b/compat/tests/java/android/support/v4/widget/GingerbreadScrollerCompatTest.java
deleted file mode 100644
index b1642f3..0000000
--- a/compat/tests/java/android/support/v4/widget/GingerbreadScrollerCompatTest.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Copyright (C) 2014 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package android.support.v4.widget;
-
-public class GingerbreadScrollerCompatTest extends ScrollerCompatTestBase {
-    public GingerbreadScrollerCompatTest() {
-        super(false);
-    }
-}
diff --git a/compat/tests/java/android/support/v4/widget/IcsScrollerCompatTest.java b/compat/tests/java/android/support/v4/widget/IcsScrollerCompatTest.java
deleted file mode 100644
index 1516d54..0000000
--- a/compat/tests/java/android/support/v4/widget/IcsScrollerCompatTest.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Copyright (C) 2014 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package android.support.v4.widget;
-
-public class IcsScrollerCompatTest extends ScrollerCompatTestBase {
-    public IcsScrollerCompatTest() {
-        super(true);
-    }
-}
diff --git a/compat/tests/java/android/support/v4/widget/ScrollerCompatTestBase.java b/compat/tests/java/android/support/v4/widget/ScrollerCompatTestBase.java
index ac6cdd0..41821ee 100644
--- a/compat/tests/java/android/support/v4/widget/ScrollerCompatTestBase.java
+++ b/compat/tests/java/android/support/v4/widget/ScrollerCompatTestBase.java
@@ -32,26 +32,19 @@
 
 @RunWith(AndroidJUnit4.class)
 @MediumTest
-public abstract class ScrollerCompatTestBase {
+public class ScrollerCompatTestBase {
 
     private static final boolean DEBUG = false;
 
-    private final String TAG;
-
-    private final boolean mIsIcsOrNewer;
+    private static final String TAG = "ScrollerCompatTest";
 
     private ScrollerCompat mScroller;
 
-    public ScrollerCompatTestBase(boolean isIcsOrNewer) {
-        mIsIcsOrNewer = isIcsOrNewer;
-        TAG = "ScrollerCompatTest ICS or newer:" + isIcsOrNewer;
-    }
 
     protected void createScroller(Interpolator interpolator)
             throws NoSuchMethodException, IllegalAccessException, InvocationTargetException,
             InstantiationException {
-        mScroller = new ScrollerCompat(mIsIcsOrNewer, InstrumentationRegistry.getContext(),
-                interpolator);
+        mScroller = new ScrollerCompat(InstrumentationRegistry.getContext(), interpolator);
     }
 
     @Test
diff --git a/core-ui/java/android/support/v4/widget/NestedScrollView.java b/core-ui/java/android/support/v4/widget/NestedScrollView.java
index 2bc09d1..709165f 100644
--- a/core-ui/java/android/support/v4/widget/NestedScrollView.java
+++ b/core-ui/java/android/support/v4/widget/NestedScrollView.java
@@ -53,6 +53,7 @@
 import android.view.animation.AnimationUtils;
 import android.widget.EdgeEffect;
 import android.widget.FrameLayout;
+import android.widget.OverScroller;
 import android.widget.ScrollView;
 
 import java.util.List;
@@ -95,7 +96,7 @@
     private long mLastScroll;
 
     private final Rect mTempRect = new Rect();
-    private ScrollerCompat mScroller;
+    private OverScroller mScroller;
     private EdgeEffect mEdgeGlowTop;
     private EdgeEffect mEdgeGlowBottom;
 
@@ -355,7 +356,7 @@
     }
 
     private void initScrollView() {
-        mScroller = ScrollerCompat.create(getContext(), null);
+        mScroller = new OverScroller(getContext());
         setFocusable(true);
         setDescendantFocusability(FOCUS_AFTER_DESCENDANTS);
         setWillNotDraw(false);
diff --git a/core-ui/java/android/support/v4/widget/ViewDragHelper.java b/core-ui/java/android/support/v4/widget/ViewDragHelper.java
index 58cb414..cd16c08 100644
--- a/core-ui/java/android/support/v4/widget/ViewDragHelper.java
+++ b/core-ui/java/android/support/v4/widget/ViewDragHelper.java
@@ -26,6 +26,7 @@
 import android.view.ViewConfiguration;
 import android.view.ViewGroup;
 import android.view.animation.Interpolator;
+import android.widget.OverScroller;
 
 import java.util.Arrays;
 
@@ -128,7 +129,7 @@
     private int mEdgeSize;
     private int mTrackingEdges;
 
-    private ScrollerCompat mScroller;
+    private OverScroller mScroller;
 
     private final Callback mCallback;
 
@@ -389,7 +390,7 @@
         mTouchSlop = vc.getScaledTouchSlop();
         mMaxVelocity = vc.getScaledMaximumFlingVelocity();
         mMinVelocity = vc.getScaledMinimumFlingVelocity();
-        mScroller = ScrollerCompat.create(context, sInterpolator);
+        mScroller = new OverScroller(context, sInterpolator);
     }
 
     /**
diff --git a/design/src/android/support/design/widget/HeaderBehavior.java b/design/src/android/support/design/widget/HeaderBehavior.java
index 3420bd4..abb64e2 100644
--- a/design/src/android/support/design/widget/HeaderBehavior.java
+++ b/design/src/android/support/design/widget/HeaderBehavior.java
@@ -19,12 +19,12 @@
 import android.content.Context;
 import android.support.design.widget.CoordinatorLayout.Behavior;
 import android.support.v4.view.ViewCompat;
-import android.support.v4.widget.ScrollerCompat;
 import android.util.AttributeSet;
 import android.view.MotionEvent;
 import android.view.VelocityTracker;
 import android.view.View;
 import android.view.ViewConfiguration;
+import android.widget.OverScroller;
 
 /**
  * The {@link Behavior} for a view that sits vertically above scrolling a view.
@@ -35,7 +35,7 @@
     private static final int INVALID_POINTER = -1;
 
     private Runnable mFlingRunnable;
-    ScrollerCompat mScroller;
+    OverScroller mScroller;
 
     private boolean mIsBeingDragged;
     private int mActivePointerId = INVALID_POINTER;
@@ -230,7 +230,7 @@
         }
 
         if (mScroller == null) {
-            mScroller = ScrollerCompat.create(layout.getContext());
+            mScroller = new OverScroller(layout.getContext());
         }
 
         mScroller.fling(
diff --git a/v7/appcompat/src/android/support/v7/widget/ActionBarOverlayLayout.java b/v7/appcompat/src/android/support/v7/widget/ActionBarOverlayLayout.java
index 6f4e8ce..fff6b99 100644
--- a/v7/appcompat/src/android/support/v7/widget/ActionBarOverlayLayout.java
+++ b/v7/appcompat/src/android/support/v7/widget/ActionBarOverlayLayout.java
@@ -32,7 +32,6 @@
 import android.support.v4.view.NestedScrollingParent;
 import android.support.v4.view.NestedScrollingParentHelper;
 import android.support.v4.view.ViewCompat;
-import android.support.v4.widget.ScrollerCompat;
 import android.support.v7.app.AppCompatDelegate;
 import android.support.v7.appcompat.R;
 import android.support.v7.view.menu.MenuPresenter;
@@ -43,6 +42,7 @@
 import android.view.ViewGroup;
 import android.view.ViewPropertyAnimator;
 import android.view.Window;
+import android.widget.OverScroller;
 
 /**
  * Special layout for the containing of an overlay action bar (and its content) to correctly handle
@@ -87,7 +87,7 @@
 
     private final int ACTION_BAR_ANIMATE_DELAY = 600; // ms
 
-    private ScrollerCompat mFlingEstimator;
+    private OverScroller mFlingEstimator;
 
     ViewPropertyAnimator mCurrentActionBarTopAnimator;
 
@@ -150,7 +150,7 @@
         mIgnoreWindowContentOverlay = context.getApplicationInfo().targetSdkVersion <
                 Build.VERSION_CODES.KITKAT;
 
-        mFlingEstimator = ScrollerCompat.create(context);
+        mFlingEstimator = new OverScroller(context);
     }
 
     @Override