Merge "Reset shade over scroll state when split shade enabled changes" into tm-qpr-dev am: ca9896a79d am: ea8f6faf1d
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/21912029 Change-Id: I94a6e81d039fd90e40bd77b406013b68190d4ff9 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -1219,6 +1219,12 @@ public final class NotificationPanelViewController implements Dumpable {
|
||||
|
||||
private void onSplitShadeEnabledChanged() {
|
||||
mShadeLog.logSplitShadeChanged(mSplitShadeEnabled);
|
||||
// Reset any left over overscroll state. It is a rare corner case but can happen.
|
||||
mQsController.setOverScrollAmount(0);
|
||||
mScrimController.setNotificationsOverScrollAmount(0);
|
||||
mNotificationStackScrollLayoutController.setOverExpansion(0);
|
||||
mNotificationStackScrollLayoutController.setOverScrollAmount(0);
|
||||
|
||||
// when we switch between split shade and regular shade we want to enforce setting qs to
|
||||
// the default state: expanded for split shade and collapsed otherwise
|
||||
if (!isOnKeyguard() && mPanelExpanded) {
|
||||
|
||||
@@ -37,6 +37,7 @@ import static org.mockito.Mockito.clearInvocations;
|
||||
import static org.mockito.Mockito.inOrder;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.never;
|
||||
import static org.mockito.Mockito.reset;
|
||||
import static org.mockito.Mockito.times;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
@@ -940,6 +941,38 @@ public class NotificationPanelViewControllerTest extends NotificationPanelViewCo
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onSplitShadeChanged_duringShadeExpansion_resetsOverScrollState() {
|
||||
// There was a bug where there was left-over overscroll state after going from split shade
|
||||
// to single shade.
|
||||
// Since on single shade we don't set overscroll values on QS nor Scrim, those values that
|
||||
// were there from split shade were never reset.
|
||||
// To prevent this, we will reset all overscroll state.
|
||||
enableSplitShade(true);
|
||||
reset(mQsController, mScrimController, mNotificationStackScrollLayoutController);
|
||||
|
||||
mNotificationPanelViewController.setOverExpansion(123);
|
||||
verify(mQsController).setOverScrollAmount(123);
|
||||
verify(mScrimController).setNotificationsOverScrollAmount(123);
|
||||
verify(mNotificationStackScrollLayoutController).setOverExpansion(123);
|
||||
|
||||
enableSplitShade(false);
|
||||
verify(mQsController).setOverScrollAmount(0);
|
||||
verify(mScrimController).setNotificationsOverScrollAmount(0);
|
||||
verify(mNotificationStackScrollLayoutController).setOverExpansion(0);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onSplitShadeChanged_alwaysResetsOverScrollState() {
|
||||
enableSplitShade(true);
|
||||
enableSplitShade(false);
|
||||
|
||||
verify(mQsController, times(2)).setOverScrollAmount(0);
|
||||
verify(mScrimController, times(2)).setNotificationsOverScrollAmount(0);
|
||||
verify(mNotificationStackScrollLayoutController, times(2)).setOverExpansion(0);
|
||||
verify(mNotificationStackScrollLayoutController, times(2)).setOverScrollAmount(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* When shade is flinging to close and this fling is not intercepted,
|
||||
* {@link AmbientState#setIsClosing(boolean)} should be called before
|
||||
|
||||
Reference in New Issue
Block a user