[Large screens] Do not animate clock when turning on display not on AOD
The problem was that the large clock was always being centered on large screens when the screen was off. The fix is to make sure that the large clock is only centered when AOD is enabled. Fixes: 233888543 Test: Manually Test: NotificationPanelViewControllerTest.java Change-Id: I29f5c6ddd0dde549f37a8eee9d5446b219b4fb9a
This commit is contained in:
committed by
Christian Go??llner
parent
4d334f4534
commit
a23f2dd5e9
@@ -1504,10 +1504,7 @@ public final class NotificationPanelViewController extends PanelViewController {
|
||||
}
|
||||
|
||||
private void updateKeyguardStatusViewAlignment(boolean animate) {
|
||||
boolean hasVisibleNotifications = mNotificationStackScrollLayoutController
|
||||
.getVisibleNotificationCount() != 0
|
||||
|| mMediaDataManager.hasActiveMediaOrRecommendation();
|
||||
boolean shouldBeCentered = !mSplitShadeEnabled || !hasVisibleNotifications || mDozing;
|
||||
boolean shouldBeCentered = shouldKeyguardStatusViewBeCentered();
|
||||
if (mStatusViewCentered != shouldBeCentered) {
|
||||
mStatusViewCentered = shouldBeCentered;
|
||||
ConstraintSet constraintSet = new ConstraintSet();
|
||||
@@ -1531,6 +1528,15 @@ public final class NotificationPanelViewController extends PanelViewController {
|
||||
mKeyguardUnfoldTransition.ifPresent(t -> t.setStatusViewCentered(mStatusViewCentered));
|
||||
}
|
||||
|
||||
private boolean shouldKeyguardStatusViewBeCentered() {
|
||||
boolean hasVisibleNotifications = mNotificationStackScrollLayoutController
|
||||
.getVisibleNotificationCount() != 0
|
||||
|| mMediaDataManager.hasActiveMediaOrRecommendation();
|
||||
boolean isOnAod = mDozing && mDozeParameters.getAlwaysOn();
|
||||
return !mSplitShadeEnabled || !hasVisibleNotifications || isOnAod
|
||||
|| hasPulsingNotifications();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the padding of the stackscroller when unlocked
|
||||
*/
|
||||
|
||||
@@ -47,6 +47,7 @@ import android.content.ContentResolver;
|
||||
import android.content.res.Configuration;
|
||||
import android.content.res.Resources;
|
||||
import android.database.ContentObserver;
|
||||
import android.graphics.PointF;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
import android.os.PowerManager;
|
||||
@@ -901,6 +902,76 @@ public class NotificationPanelViewControllerTest extends SysuiTestCase {
|
||||
.isEqualTo(ConstraintSet.PARENT_ID);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void keyguardStatusView_splitShade_dozing_alwaysDozingOn_isCentered() {
|
||||
when(mNotificationStackScrollLayoutController.getVisibleNotificationCount()).thenReturn(2);
|
||||
mStatusBarStateController.setState(KEYGUARD);
|
||||
enableSplitShade(/* enabled= */ true);
|
||||
|
||||
setDozing(/* dozing= */ true, /* dozingAlwaysOn= */ true);
|
||||
|
||||
assertThat(isKeyguardStatusViewCentered()).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void keyguardStatusView_splitShade_dozing_alwaysDozingOff_isNotCentered() {
|
||||
when(mNotificationStackScrollLayoutController.getVisibleNotificationCount()).thenReturn(2);
|
||||
mStatusBarStateController.setState(KEYGUARD);
|
||||
enableSplitShade(/* enabled= */ true);
|
||||
|
||||
setDozing(/* dozing= */ true, /* dozingAlwaysOn= */ false);
|
||||
|
||||
assertThat(isKeyguardStatusViewCentered()).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void keyguardStatusView_splitShade_notDozing_alwaysDozingOn_isNotCentered() {
|
||||
when(mNotificationStackScrollLayoutController.getVisibleNotificationCount()).thenReturn(2);
|
||||
mStatusBarStateController.setState(KEYGUARD);
|
||||
enableSplitShade(/* enabled= */ true);
|
||||
|
||||
setDozing(/* dozing= */ false, /* dozingAlwaysOn= */ true);
|
||||
|
||||
assertThat(isKeyguardStatusViewCentered()).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void keyguardStatusView_splitShade_pulsing_isCentered() {
|
||||
when(mNotificationStackScrollLayoutController.getVisibleNotificationCount()).thenReturn(2);
|
||||
when(mNotificationListContainer.hasPulsingNotifications()).thenReturn(true);
|
||||
mStatusBarStateController.setState(KEYGUARD);
|
||||
enableSplitShade(/* enabled= */ true);
|
||||
|
||||
setDozing(/* dozing= */ false, /* dozingAlwaysOn= */ true);
|
||||
|
||||
assertThat(isKeyguardStatusViewCentered()).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void keyguardStatusView_splitShade_notPulsing_isNotCentered() {
|
||||
when(mNotificationStackScrollLayoutController.getVisibleNotificationCount()).thenReturn(2);
|
||||
when(mNotificationListContainer.hasPulsingNotifications()).thenReturn(false);
|
||||
mStatusBarStateController.setState(KEYGUARD);
|
||||
enableSplitShade(/* enabled= */ true);
|
||||
|
||||
setDozing(/* dozing= */ false, /* dozingAlwaysOn= */ true);
|
||||
|
||||
assertThat(isKeyguardStatusViewCentered()).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void keyguardStatusView_singleShade_isCentered() {
|
||||
enableSplitShade(/* enabled= */ false);
|
||||
// The conditions below would make the clock NOT be centered on split shade.
|
||||
// On single shade it should always be centered though.
|
||||
when(mNotificationStackScrollLayoutController.getVisibleNotificationCount()).thenReturn(2);
|
||||
when(mNotificationListContainer.hasPulsingNotifications()).thenReturn(false);
|
||||
mStatusBarStateController.setState(KEYGUARD);
|
||||
setDozing(/* dozing= */ false, /* dozingAlwaysOn= */ false);
|
||||
|
||||
assertThat(isKeyguardStatusViewCentered()).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDisableUserSwitcherAfterEnabling_returnsViewStubToTheViewHierarchy() {
|
||||
givenViewAttached();
|
||||
@@ -1473,4 +1544,19 @@ public class NotificationPanelViewControllerTest extends SysuiTestCase {
|
||||
.thenReturn(splitShadeFullTransitionDistance);
|
||||
mNotificationPanelViewController.updateResources();
|
||||
}
|
||||
|
||||
private void setDozing(boolean dozing, boolean dozingAlwaysOn) {
|
||||
when(mDozeParameters.getAlwaysOn()).thenReturn(dozingAlwaysOn);
|
||||
mNotificationPanelViewController.setDozing(
|
||||
/* dozing= */ dozing,
|
||||
/* animate= */ false,
|
||||
/* wakeUpTouchLocation= */ new PointF()
|
||||
);
|
||||
}
|
||||
|
||||
private boolean isKeyguardStatusViewCentered() {
|
||||
mNotificationPanelViewController.updateResources();
|
||||
return getConstraintSetLayout(R.id.keyguard_status_view).endToEnd
|
||||
== ConstraintSet.PARENT_ID;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user