Fix overexpand panel motion

Expanding was already set to false when we decided which QS
overscroll animation to run. We can't change the order of expanding
finished/tracking finished because of another bug. Instead, let the
stack scroller know about tracking state and combine both of them.

Bug: 21705230
Change-Id: I041ff1fabc6c939c233528f9d08d804ead64bbab
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java b/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java
index f98840b..7040864 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java
@@ -163,6 +163,7 @@
     private boolean mChildrenUpdateRequested;
     private SpeedBumpView mSpeedBumpView;
     private boolean mIsExpansionChanging;
+    private boolean mPanelTracking;
     private boolean mExpandingNotification;
     private boolean mExpandedInThisMotion;
     private boolean mScrollingEnabled;
@@ -1513,7 +1514,7 @@
         }
         if (mExpandedInThisMotion) {
             return RUBBER_BAND_FACTOR_AFTER_EXPAND;
-        } else if (mIsExpansionChanging) {
+        } else if (mIsExpansionChanging || mPanelTracking) {
             return RUBBER_BAND_FACTOR_ON_PANEL_EXPAND;
         } else if (mScrolledToTopOnFirstDown) {
             return 1.0f;
@@ -1527,7 +1528,7 @@
      * overscroll view (e.g. expand QS).
      */
     private boolean isRubberbanded(boolean onTop) {
-        return !onTop || mExpandedInThisMotion || mIsExpansionChanging
+        return !onTop || mExpandedInThisMotion || mIsExpansionChanging || mPanelTracking
                 || !mScrolledToTopOnFirstDown;
     }
 
@@ -2249,6 +2250,13 @@
         }
     }
 
+    public void onPanelTrackingStarted() {
+        mPanelTracking = true;
+    }
+    public void onPanelTrackingStopped() {
+        mPanelTracking = false;
+    }
+
     public void resetScrollPosition() {
         mScroller.abortAnimation();
         mOwnScrollY = 0;