Merge "Fixing QS blinking when going from unlocked to AOD in split shade" into tm-qpr-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
9a0ed1afe1
@@ -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.qs.footer.ui.viewmodel.FooterActionsViewModel;
|
||||||
import com.android.systemui.statusbar.CommandQueue;
|
import com.android.systemui.statusbar.CommandQueue;
|
||||||
import com.android.systemui.statusbar.StatusBarState;
|
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.notification.stack.StackStateAnimator;
|
||||||
import com.android.systemui.statusbar.phone.KeyguardBypassController;
|
import com.android.systemui.statusbar.phone.KeyguardBypassController;
|
||||||
import com.android.systemui.statusbar.policy.BrightnessMirrorController;
|
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 static final String EXTRA_VISIBLE = "visible";
|
||||||
|
|
||||||
private final Rect mQsBounds = new Rect();
|
private final Rect mQsBounds = new Rect();
|
||||||
private final StatusBarStateController mStatusBarStateController;
|
private final SysuiStatusBarStateController mStatusBarStateController;
|
||||||
private final FalsingManager mFalsingManager;
|
private final FalsingManager mFalsingManager;
|
||||||
private final KeyguardBypassController mBypassController;
|
private final KeyguardBypassController mBypassController;
|
||||||
private boolean mQsExpanded;
|
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.
|
* Progress of pull down from the center of the lock screen.
|
||||||
* @see com.android.systemui.statusbar.LockscreenShadeTransitionController
|
* @see com.android.systemui.statusbar.LockscreenShadeTransitionController
|
||||||
*/
|
*/
|
||||||
private float mFullShadeProgress;
|
private float mLockscreenToShadeProgress;
|
||||||
|
|
||||||
private boolean mOverScrolling;
|
private boolean mOverScrolling;
|
||||||
|
|
||||||
@@ -177,7 +178,7 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca
|
|||||||
@Inject
|
@Inject
|
||||||
public QSFragment(RemoteInputQuickSettingsDisabler remoteInputQsDisabler,
|
public QSFragment(RemoteInputQuickSettingsDisabler remoteInputQsDisabler,
|
||||||
QSTileHost qsTileHost,
|
QSTileHost qsTileHost,
|
||||||
StatusBarStateController statusBarStateController, CommandQueue commandQueue,
|
SysuiStatusBarStateController statusBarStateController, CommandQueue commandQueue,
|
||||||
@Named(QS_PANEL) MediaHost qsMediaHost,
|
@Named(QS_PANEL) MediaHost qsMediaHost,
|
||||||
@Named(QUICK_QS_PANEL) MediaHost qqsMediaHost,
|
@Named(QUICK_QS_PANEL) MediaHost qqsMediaHost,
|
||||||
KeyguardBypassController keyguardBypassController,
|
KeyguardBypassController keyguardBypassController,
|
||||||
@@ -585,7 +586,7 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca
|
|||||||
mTransitioningToFullShade = isTransitioningToFullShade;
|
mTransitioningToFullShade = isTransitioningToFullShade;
|
||||||
updateShowCollapsedOnKeyguard();
|
updateShowCollapsedOnKeyguard();
|
||||||
}
|
}
|
||||||
mFullShadeProgress = qsTransitionFraction;
|
mLockscreenToShadeProgress = qsTransitionFraction;
|
||||||
setQsExpansion(mLastQSExpansion, mLastPanelFraction, mLastHeaderTranslation,
|
setQsExpansion(mLastQSExpansion, mLastPanelFraction, mLastHeaderTranslation,
|
||||||
isTransitioningToFullShade ? qsSquishinessFraction : mSquishinessFraction);
|
isTransitioningToFullShade ? qsSquishinessFraction : mSquishinessFraction);
|
||||||
}
|
}
|
||||||
@@ -709,10 +710,13 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca
|
|||||||
}
|
}
|
||||||
if (mInSplitShade) {
|
if (mInSplitShade) {
|
||||||
// Large screens in landscape.
|
// 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
|
// Always use "mFullShadeProgress" on keyguard, because
|
||||||
// "panelExpansionFractions" is always 1 on keyguard split shade.
|
// "panelExpansionFractions" is always 1 on keyguard split shade.
|
||||||
return mFullShadeProgress;
|
return mLockscreenToShadeProgress;
|
||||||
} else {
|
} else {
|
||||||
return panelExpansionFraction;
|
return panelExpansionFraction;
|
||||||
}
|
}
|
||||||
@@ -721,7 +725,7 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca
|
|||||||
if (mTransitioningToFullShade) {
|
if (mTransitioningToFullShade) {
|
||||||
// Only use this value during the standard lock screen shade expansion. During the
|
// Only use this value during the standard lock screen shade expansion. During the
|
||||||
// "quick" expansion from top, this value is 0.
|
// "quick" expansion from top, this value is 0.
|
||||||
return mFullShadeProgress;
|
return mLockscreenToShadeProgress;
|
||||||
} else {
|
} else {
|
||||||
return panelExpansionFraction;
|
return panelExpansionFraction;
|
||||||
}
|
}
|
||||||
@@ -929,7 +933,7 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca
|
|||||||
indentingPw.println("mLastHeaderTranslation: " + mLastHeaderTranslation);
|
indentingPw.println("mLastHeaderTranslation: " + mLastHeaderTranslation);
|
||||||
indentingPw.println("mInSplitShade: " + mInSplitShade);
|
indentingPw.println("mInSplitShade: " + mInSplitShade);
|
||||||
indentingPw.println("mTransitioningToFullShade: " + mTransitioningToFullShade);
|
indentingPw.println("mTransitioningToFullShade: " + mTransitioningToFullShade);
|
||||||
indentingPw.println("mFullShadeProgress: " + mFullShadeProgress);
|
indentingPw.println("mLockscreenToShadeProgress: " + mLockscreenToShadeProgress);
|
||||||
indentingPw.println("mOverScrolling: " + mOverScrolling);
|
indentingPw.println("mOverScrolling: " + mOverScrolling);
|
||||||
indentingPw.println("isCustomizing: " + mQSCustomizerController.isCustomizing());
|
indentingPw.println("isCustomizing: " + mQSCustomizerController.isCustomizing());
|
||||||
View view = getView();
|
View view = getView();
|
||||||
|
|||||||
@@ -14,6 +14,9 @@
|
|||||||
|
|
||||||
package com.android.systemui.qs;
|
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 com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
import static org.junit.Assert.assertTrue;
|
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.flags.Flags;
|
||||||
import com.android.systemui.media.MediaHost;
|
import com.android.systemui.media.MediaHost;
|
||||||
import com.android.systemui.plugins.FalsingManager;
|
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.customize.QSCustomizerController;
|
||||||
import com.android.systemui.qs.dagger.QSFragmentComponent;
|
import com.android.systemui.qs.dagger.QSFragmentComponent;
|
||||||
import com.android.systemui.qs.external.TileServiceRequestController;
|
import com.android.systemui.qs.external.TileServiceRequestController;
|
||||||
import com.android.systemui.qs.footer.ui.viewmodel.FooterActionsViewModel;
|
import com.android.systemui.qs.footer.ui.viewmodel.FooterActionsViewModel;
|
||||||
import com.android.systemui.statusbar.CommandQueue;
|
import com.android.systemui.statusbar.CommandQueue;
|
||||||
import com.android.systemui.statusbar.StatusBarState;
|
import com.android.systemui.statusbar.StatusBarState;
|
||||||
|
import com.android.systemui.statusbar.SysuiStatusBarStateController;
|
||||||
import com.android.systemui.statusbar.phone.KeyguardBypassController;
|
import com.android.systemui.statusbar.phone.KeyguardBypassController;
|
||||||
import com.android.systemui.statusbar.policy.ConfigurationController;
|
import com.android.systemui.statusbar.policy.ConfigurationController;
|
||||||
import com.android.systemui.statusbar.policy.RemoteInputQuickSettingsDisabler;
|
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 mQsTileLayout;
|
||||||
@Mock private QSPanel.QSTileLayout mQQsTileLayout;
|
@Mock private QSPanel.QSTileLayout mQQsTileLayout;
|
||||||
@Mock private QSAnimator mQSAnimator;
|
@Mock private QSAnimator mQSAnimator;
|
||||||
@Mock private StatusBarStateController mStatusBarStateController;
|
@Mock private SysuiStatusBarStateController mStatusBarStateController;
|
||||||
@Mock private QSSquishinessController mSquishinessController;
|
@Mock private QSSquishinessController mSquishinessController;
|
||||||
private View mQsFragmentView;
|
private View mQsFragmentView;
|
||||||
|
|
||||||
@@ -158,7 +161,7 @@ public class QSFragmentTest extends SysuiBaseFragmentTest {
|
|||||||
public void
|
public void
|
||||||
transitionToFullShade_onKeyguard_noBouncer_setsAlphaUsingLinearInterpolator() {
|
transitionToFullShade_onKeyguard_noBouncer_setsAlphaUsingLinearInterpolator() {
|
||||||
QSFragment fragment = resumeAndGetFragment();
|
QSFragment fragment = resumeAndGetFragment();
|
||||||
setStatusBarState(StatusBarState.KEYGUARD);
|
setStatusBarState(KEYGUARD);
|
||||||
when(mQSPanelController.isBouncerInTransit()).thenReturn(false);
|
when(mQSPanelController.isBouncerInTransit()).thenReturn(false);
|
||||||
boolean isTransitioningToFullShade = true;
|
boolean isTransitioningToFullShade = true;
|
||||||
float transitionProgress = 0.5f;
|
float transitionProgress = 0.5f;
|
||||||
@@ -174,7 +177,7 @@ public class QSFragmentTest extends SysuiBaseFragmentTest {
|
|||||||
public void
|
public void
|
||||||
transitionToFullShade_onKeyguard_bouncerActive_setsAlphaUsingBouncerInterpolator() {
|
transitionToFullShade_onKeyguard_bouncerActive_setsAlphaUsingBouncerInterpolator() {
|
||||||
QSFragment fragment = resumeAndGetFragment();
|
QSFragment fragment = resumeAndGetFragment();
|
||||||
setStatusBarState(StatusBarState.KEYGUARD);
|
setStatusBarState(KEYGUARD);
|
||||||
when(mQSPanelController.isBouncerInTransit()).thenReturn(true);
|
when(mQSPanelController.isBouncerInTransit()).thenReturn(true);
|
||||||
boolean isTransitioningToFullShade = true;
|
boolean isTransitioningToFullShade = true;
|
||||||
float transitionProgress = 0.5f;
|
float transitionProgress = 0.5f;
|
||||||
@@ -261,6 +264,27 @@ public class QSFragmentTest extends SysuiBaseFragmentTest {
|
|||||||
verify(mQSFooterActionController).setExpansion(expansion);
|
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
|
@Test
|
||||||
public void getQsMinExpansionHeight_notInSplitShade_returnsHeaderHeight() {
|
public void getQsMinExpansionHeight_notInSplitShade_returnsHeaderHeight() {
|
||||||
QSFragment fragment = resumeAndGetFragment();
|
QSFragment fragment = resumeAndGetFragment();
|
||||||
|
|||||||
Reference in New Issue
Block a user