Merge "Refreshing state in QS with upcoming state of KEYGUARD"
This commit is contained in:
committed by
Android (Google) Code Review
commit
d94e560a59
@@ -19,7 +19,8 @@ import static android.app.StatusBarManager.DISABLE2_QUICK_SETTINGS;
|
||||
import static com.android.systemui.media.dagger.MediaModule.QS_PANEL;
|
||||
import static com.android.systemui.media.dagger.MediaModule.QUICK_QS_PANEL;
|
||||
import static com.android.systemui.statusbar.disableflags.DisableFlagsLogger.DisableState;
|
||||
|
||||
import static com.android.systemui.statusbar.StatusBarState.KEYGUARD;
|
||||
import static com.android.systemui.statusbar.StatusBarState.SHADE_LOCKED;
|
||||
import android.animation.Animator;
|
||||
import android.animation.AnimatorListenerAdapter;
|
||||
import android.content.res.Configuration;
|
||||
@@ -124,7 +125,7 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca
|
||||
* we're on keyguard but use {@link #isKeyguardState()} instead since that is more accurate
|
||||
* during state transitions which often call into us.
|
||||
*/
|
||||
private int mState;
|
||||
private int mStatusBarState = -1;
|
||||
private QSContainerImplController mQSContainerImplController;
|
||||
private int[] mTmpLocation = new int[2];
|
||||
private int mLastViewHeight;
|
||||
@@ -457,7 +458,7 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca
|
||||
private boolean isKeyguardState() {
|
||||
// We want the freshest state here since otherwise we'll have some weirdness if earlier
|
||||
// listeners trigger updates
|
||||
return mStatusBarStateController.getState() == StatusBarState.KEYGUARD;
|
||||
return mStatusBarStateController.getCurrentOrUpcomingState() == KEYGUARD;
|
||||
}
|
||||
|
||||
private void updateShowCollapsedOnKeyguard() {
|
||||
@@ -672,8 +673,8 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca
|
||||
mQSAnimator.setPosition(expansion);
|
||||
}
|
||||
if (!mInSplitShade
|
||||
|| mStatusBarStateController.getState() == StatusBarState.KEYGUARD
|
||||
|| mStatusBarStateController.getState() == StatusBarState.SHADE_LOCKED) {
|
||||
|| mStatusBarStateController.getState() == KEYGUARD
|
||||
|| mStatusBarStateController.getState() == SHADE_LOCKED) {
|
||||
// At beginning, state is 0 and will apply wrong squishiness to MediaHost in lockscreen
|
||||
// and media player expect no change by squishiness in lock screen shade. Don't bother
|
||||
// squishing mQsMediaHost when not in split shade to prevent problems with stale state.
|
||||
@@ -703,8 +704,8 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca
|
||||
// Large screens in landscape.
|
||||
// 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) {
|
||||
if (mTransitioningToFullShade
|
||||
|| mStatusBarStateController.getCurrentOrUpcomingState() == KEYGUARD) {
|
||||
// Always use "mFullShadeProgress" on keyguard, because
|
||||
// "panelExpansionFractions" is always 1 on keyguard split shade.
|
||||
return mLockscreenToShadeProgress;
|
||||
@@ -757,8 +758,7 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca
|
||||
}
|
||||
|
||||
private boolean headerWillBeAnimating() {
|
||||
return mState == StatusBarState.KEYGUARD && mShowCollapsedOnKeyguard
|
||||
&& !isKeyguardState();
|
||||
return mStatusBarState == KEYGUARD && mShowCollapsedOnKeyguard && !isKeyguardState();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -890,10 +890,24 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca
|
||||
}
|
||||
};
|
||||
|
||||
@Override
|
||||
public void onUpcomingStateChanged(int upcomingState) {
|
||||
if (upcomingState == KEYGUARD) {
|
||||
// refresh state of QS as soon as possible - while it's still upcoming - so in case of
|
||||
// transition to KEYGUARD (e.g. from unlocked to AOD) all objects are aware they should
|
||||
// already behave like on keyguard. Otherwise we might be doing extra work,
|
||||
// e.g. QSAnimator making QS visible and then quickly invisible
|
||||
onStateChanged(upcomingState);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStateChanged(int newState) {
|
||||
mState = newState;
|
||||
setKeyguardShowing(newState == StatusBarState.KEYGUARD);
|
||||
if (newState == mStatusBarState) {
|
||||
return;
|
||||
}
|
||||
mStatusBarState = newState;
|
||||
setKeyguardShowing(newState == KEYGUARD);
|
||||
updateShowCollapsedOnKeyguard();
|
||||
}
|
||||
|
||||
@@ -921,7 +935,7 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca
|
||||
indentingPw.println("mTemp: " + Arrays.toString(mLocationTemp));
|
||||
indentingPw.println("mShowCollapsedOnKeyguard: " + mShowCollapsedOnKeyguard);
|
||||
indentingPw.println("mLastKeyguardAndExpanded: " + mLastKeyguardAndExpanded);
|
||||
indentingPw.println("mState: " + StatusBarState.toString(mState));
|
||||
indentingPw.println("mStatusBarState: " + StatusBarState.toString(mStatusBarState));
|
||||
indentingPw.println("mTmpLocation: " + Arrays.toString(mTmpLocation));
|
||||
indentingPw.println("mLastViewHeight: " + mLastViewHeight);
|
||||
indentingPw.println("mLastHeaderTranslation: " + mLastHeaderTranslation);
|
||||
|
||||
@@ -151,7 +151,7 @@ public class QSFragmentTest extends SysuiBaseFragmentTest {
|
||||
@Test
|
||||
public void transitionToFullShade_setsAlphaUsingShadeInterpolator() {
|
||||
QSFragment fragment = resumeAndGetFragment();
|
||||
setStatusBarState(StatusBarState.SHADE);
|
||||
setStatusBarCurrentAndUpcomingState(StatusBarState.SHADE);
|
||||
boolean isTransitioningToFullShade = true;
|
||||
float transitionProgress = 0.5f;
|
||||
float squishinessFraction = 0.5f;
|
||||
@@ -167,7 +167,7 @@ public class QSFragmentTest extends SysuiBaseFragmentTest {
|
||||
public void
|
||||
transitionToFullShade_onKeyguard_noBouncer_setsAlphaUsingLinearInterpolator() {
|
||||
QSFragment fragment = resumeAndGetFragment();
|
||||
setStatusBarState(KEYGUARD);
|
||||
setStatusBarCurrentAndUpcomingState(KEYGUARD);
|
||||
when(mQSPanelController.isBouncerInTransit()).thenReturn(false);
|
||||
boolean isTransitioningToFullShade = true;
|
||||
float transitionProgress = 0.5f;
|
||||
@@ -183,7 +183,7 @@ public class QSFragmentTest extends SysuiBaseFragmentTest {
|
||||
public void
|
||||
transitionToFullShade_onKeyguard_bouncerActive_setsAlphaUsingBouncerInterpolator() {
|
||||
QSFragment fragment = resumeAndGetFragment();
|
||||
setStatusBarState(KEYGUARD);
|
||||
setStatusBarCurrentAndUpcomingState(KEYGUARD);
|
||||
when(mQSPanelController.isBouncerInTransit()).thenReturn(true);
|
||||
boolean isTransitioningToFullShade = true;
|
||||
float transitionProgress = 0.5f;
|
||||
@@ -482,6 +482,15 @@ public class QSFragmentTest extends SysuiBaseFragmentTest {
|
||||
assertEquals(175, mediaHostClip.bottom);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testQsUpdatesQsAnimatorWithUpcomingState() {
|
||||
QSFragment fragment = resumeAndGetFragment();
|
||||
setStatusBarCurrentAndUpcomingState(SHADE);
|
||||
fragment.onUpcomingStateChanged(KEYGUARD);
|
||||
|
||||
verify(mQSAnimator).setOnKeyguard(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Fragment instantiate(Context context, String className, Bundle arguments) {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
@@ -591,8 +600,9 @@ public class QSFragmentTest extends SysuiBaseFragmentTest {
|
||||
return getFragment();
|
||||
}
|
||||
|
||||
private void setStatusBarState(int statusBarState) {
|
||||
private void setStatusBarCurrentAndUpcomingState(int statusBarState) {
|
||||
when(mStatusBarStateController.getState()).thenReturn(statusBarState);
|
||||
when(mStatusBarStateController.getCurrentOrUpcomingState()).thenReturn(statusBarState);
|
||||
getFragment().onStateChanged(statusBarState);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user