Attempt to fix infinite recursion.

When collapsing a panel without animating, it might be that an
overscroll animating was still running, and thus expandedHeight != 0
even if we set expandedFraction manually to 0, which sets the state
to STATE_OPEN again and tries to close it in an infinite loop.

Bug: 15721600
Change-Id: I14e0ee43fb4a47286d618cc97581d4e4a98fb2a2
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
index a6ce5d5..c684c9f 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
@@ -302,6 +302,8 @@
         mUnlockIconActive = false;
         mPageSwiper.reset();
         closeQs();
+        mNotificationStackScroller.setOverScrollAmount(0f, true /* onTop */, false /* animate */,
+                true /* cancelAnimators */);
     }
 
     public void closeQs() {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelBar.java
index b94f6f3..b4faaaf 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelBar.java
@@ -188,10 +188,10 @@
                 pv.collapse();
                 waiting = true;
             } else {
+                pv.resetViews();
                 pv.setExpandedFraction(0); // just in case
                 pv.setVisibility(View.GONE);
                 pv.cancelPeek();
-                pv.resetViews();
             }
         }
         if (DEBUG) LOG("collapseAllPanels: animate=%s waiting=%s", animate, waiting);