Merge "[Large screens] Do not animate clock when turning on display not on AOD" into tm-qpr-dev

This commit is contained in:
TreeHugger Robot
2022-08-04 09:26:29 +00:00
committed by Android (Google) Code Review
2 changed files with 96 additions and 4 deletions

View File

@@ -1499,10 +1499,7 @@ public final class NotificationPanelViewController extends PanelViewController {
} }
private void updateKeyguardStatusViewAlignment(boolean animate) { private void updateKeyguardStatusViewAlignment(boolean animate) {
boolean hasVisibleNotifications = mNotificationStackScrollLayoutController boolean shouldBeCentered = shouldKeyguardStatusViewBeCentered();
.getVisibleNotificationCount() != 0
|| mMediaDataManager.hasActiveMediaOrRecommendation();
boolean shouldBeCentered = !mSplitShadeEnabled || !hasVisibleNotifications || mDozing;
if (mStatusViewCentered != shouldBeCentered) { if (mStatusViewCentered != shouldBeCentered) {
mStatusViewCentered = shouldBeCentered; mStatusViewCentered = shouldBeCentered;
ConstraintSet constraintSet = new ConstraintSet(); ConstraintSet constraintSet = new ConstraintSet();
@@ -1526,6 +1523,15 @@ public final class NotificationPanelViewController extends PanelViewController {
mKeyguardUnfoldTransition.ifPresent(t -> t.setStatusViewCentered(mStatusViewCentered)); 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 * @return the padding of the stackscroller when unlocked
*/ */

View File

@@ -47,6 +47,7 @@ import android.content.ContentResolver;
import android.content.res.Configuration; import android.content.res.Configuration;
import android.content.res.Resources; import android.content.res.Resources;
import android.database.ContentObserver; import android.database.ContentObserver;
import android.graphics.PointF;
import android.os.Handler; import android.os.Handler;
import android.os.Looper; import android.os.Looper;
import android.os.PowerManager; import android.os.PowerManager;
@@ -901,6 +902,76 @@ public class NotificationPanelViewControllerTest extends SysuiTestCase {
.isEqualTo(ConstraintSet.PARENT_ID); .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 @Test
public void testDisableUserSwitcherAfterEnabling_returnsViewStubToTheViewHierarchy() { public void testDisableUserSwitcherAfterEnabling_returnsViewStubToTheViewHierarchy() {
givenViewAttached(); givenViewAttached();
@@ -1473,4 +1544,19 @@ public class NotificationPanelViewControllerTest extends SysuiTestCase {
.thenReturn(splitShadeFullTransitionDistance); .thenReturn(splitShadeFullTransitionDistance);
mNotificationPanelViewController.updateResources(); 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;
}
} }