Merge "Merge "Fixing QS blinking when going from unlocked to AOD in split shade" into tm-qpr-dev am: 9a0ed1afe1 am: 8ff8a6fbaa"

This commit is contained in:
Automerger Merge Worker
2022-10-04 17:24:17 +00:00
committed by Android (Google) Code Review
2 changed files with 40 additions and 12 deletions

View File

@@ -60,6 +60,7 @@ import com.android.systemui.qs.footer.ui.binder.FooterActionsViewBinder;
import com.android.systemui.qs.footer.ui.viewmodel.FooterActionsViewModel;
import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.statusbar.StatusBarState;
import com.android.systemui.statusbar.SysuiStatusBarStateController;
import com.android.systemui.statusbar.notification.stack.StackStateAnimator;
import com.android.systemui.statusbar.phone.KeyguardBypassController;
import com.android.systemui.statusbar.policy.BrightnessMirrorController;
@@ -82,7 +83,7 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca
private static final String EXTRA_VISIBLE = "visible";
private final Rect mQsBounds = new Rect();
private final StatusBarStateController mStatusBarStateController;
private final SysuiStatusBarStateController mStatusBarStateController;
private final FalsingManager mFalsingManager;
private final KeyguardBypassController mBypassController;
private boolean mQsExpanded;
@@ -159,7 +160,7 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca
* Progress of pull down from the center of the lock screen.
* @see com.android.systemui.statusbar.LockscreenShadeTransitionController
*/
private float mFullShadeProgress;
private float mLockscreenToShadeProgress;
private boolean mOverScrolling;
@@ -177,7 +178,7 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca
@Inject
public QSFragment(RemoteInputQuickSettingsDisabler remoteInputQsDisabler,
QSTileHost qsTileHost,
StatusBarStateController statusBarStateController, CommandQueue commandQueue,
SysuiStatusBarStateController statusBarStateController, CommandQueue commandQueue,
@Named(QS_PANEL) MediaHost qsMediaHost,
@Named(QUICK_QS_PANEL) MediaHost qqsMediaHost,
KeyguardBypassController keyguardBypassController,
@@ -585,7 +586,7 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca
mTransitioningToFullShade = isTransitioningToFullShade;
updateShowCollapsedOnKeyguard();
}
mFullShadeProgress = qsTransitionFraction;
mLockscreenToShadeProgress = qsTransitionFraction;
setQsExpansion(mLastQSExpansion, mLastPanelFraction, mLastHeaderTranslation,
isTransitioningToFullShade ? qsSquishinessFraction : mSquishinessFraction);
}
@@ -709,10 +710,13 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca
}
if (mInSplitShade) {
// Large screens in landscape.
if (mTransitioningToFullShade || isKeyguardState()) {
// Need to check upcoming state as for unlocked -> AOD transition current state is
// not updated yet, but we're transitioning and UI should already follow KEYGUARD state
if (mTransitioningToFullShade || mStatusBarStateController.getCurrentOrUpcomingState()
== StatusBarState.KEYGUARD) {
// Always use "mFullShadeProgress" on keyguard, because
// "panelExpansionFractions" is always 1 on keyguard split shade.
return mFullShadeProgress;
return mLockscreenToShadeProgress;
} else {
return panelExpansionFraction;
}
@@ -721,7 +725,7 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca
if (mTransitioningToFullShade) {
// Only use this value during the standard lock screen shade expansion. During the
// "quick" expansion from top, this value is 0.
return mFullShadeProgress;
return mLockscreenToShadeProgress;
} else {
return panelExpansionFraction;
}
@@ -929,7 +933,7 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca
indentingPw.println("mLastHeaderTranslation: " + mLastHeaderTranslation);
indentingPw.println("mInSplitShade: " + mInSplitShade);
indentingPw.println("mTransitioningToFullShade: " + mTransitioningToFullShade);
indentingPw.println("mFullShadeProgress: " + mFullShadeProgress);
indentingPw.println("mLockscreenToShadeProgress: " + mLockscreenToShadeProgress);
indentingPw.println("mOverScrolling: " + mOverScrolling);
indentingPw.println("isCustomizing: " + mQSCustomizerController.isCustomizing());
View view = getView();

View File

@@ -14,6 +14,9 @@
package com.android.systemui.qs;
import static com.android.systemui.statusbar.StatusBarState.KEYGUARD;
import static com.android.systemui.statusbar.StatusBarState.SHADE;
import static com.google.common.truth.Truth.assertThat;
import static org.junit.Assert.assertTrue;
@@ -49,13 +52,13 @@ import com.android.systemui.flags.FakeFeatureFlags;
import com.android.systemui.flags.Flags;
import com.android.systemui.media.MediaHost;
import com.android.systemui.plugins.FalsingManager;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.qs.customize.QSCustomizerController;
import com.android.systemui.qs.dagger.QSFragmentComponent;
import com.android.systemui.qs.external.TileServiceRequestController;
import com.android.systemui.qs.footer.ui.viewmodel.FooterActionsViewModel;
import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.statusbar.StatusBarState;
import com.android.systemui.statusbar.SysuiStatusBarStateController;
import com.android.systemui.statusbar.phone.KeyguardBypassController;
import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.systemui.statusbar.policy.RemoteInputQuickSettingsDisabler;
@@ -93,7 +96,7 @@ public class QSFragmentTest extends SysuiBaseFragmentTest {
@Mock private QSPanel.QSTileLayout mQsTileLayout;
@Mock private QSPanel.QSTileLayout mQQsTileLayout;
@Mock private QSAnimator mQSAnimator;
@Mock private StatusBarStateController mStatusBarStateController;
@Mock private SysuiStatusBarStateController mStatusBarStateController;
@Mock private QSSquishinessController mSquishinessController;
private View mQsFragmentView;
@@ -158,7 +161,7 @@ public class QSFragmentTest extends SysuiBaseFragmentTest {
public void
transitionToFullShade_onKeyguard_noBouncer_setsAlphaUsingLinearInterpolator() {
QSFragment fragment = resumeAndGetFragment();
setStatusBarState(StatusBarState.KEYGUARD);
setStatusBarState(KEYGUARD);
when(mQSPanelController.isBouncerInTransit()).thenReturn(false);
boolean isTransitioningToFullShade = true;
float transitionProgress = 0.5f;
@@ -174,7 +177,7 @@ public class QSFragmentTest extends SysuiBaseFragmentTest {
public void
transitionToFullShade_onKeyguard_bouncerActive_setsAlphaUsingBouncerInterpolator() {
QSFragment fragment = resumeAndGetFragment();
setStatusBarState(StatusBarState.KEYGUARD);
setStatusBarState(KEYGUARD);
when(mQSPanelController.isBouncerInTransit()).thenReturn(true);
boolean isTransitioningToFullShade = true;
float transitionProgress = 0.5f;
@@ -261,6 +264,27 @@ public class QSFragmentTest extends SysuiBaseFragmentTest {
verify(mQSFooterActionController).setExpansion(expansion);
}
@Test
public void setQsExpansion_inSplitShade_whenTransitioningToKeyguard_setsAlphaBasedOnShadeTransitionProgress() {
QSFragment fragment = resumeAndGetFragment();
enableSplitShade();
when(mStatusBarStateController.getState()).thenReturn(SHADE);
when(mStatusBarStateController.getCurrentOrUpcomingState()).thenReturn(KEYGUARD);
boolean isTransitioningToFullShade = false;
float transitionProgress = 0;
float squishinessFraction = 0f;
fragment.setTransitionToFullShadeProgress(isTransitioningToFullShade, transitionProgress,
squishinessFraction);
// trigger alpha refresh with non-zero expansion and fraction values
fragment.setQsExpansion(/* expansion= */ 1, /* panelExpansionFraction= */1,
/* proposedTranslation= */ 0, /* squishinessFraction= */ 1);
// alpha should follow lockscreen to shade progress, not panel expansion fraction
assertThat(mQsFragmentView.getAlpha()).isEqualTo(transitionProgress);
}
@Test
public void getQsMinExpansionHeight_notInSplitShade_returnsHeaderHeight() {
QSFragment fragment = resumeAndGetFragment();