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

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/19460031

Change-Id: I190ac5c3b58a26bf48f7b20421a573ef85733b3e
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
TreeHugger Robot
2022-08-04 09:37:02 +00:00
committed by Automerger Merge Worker
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) {
boolean hasVisibleNotifications = mNotificationStackScrollLayoutController
.getVisibleNotificationCount() != 0
|| mMediaDataManager.hasActiveMediaOrRecommendation();
boolean shouldBeCentered = !mSplitShadeEnabled || !hasVisibleNotifications || mDozing;
boolean shouldBeCentered = shouldKeyguardStatusViewBeCentered();
if (mStatusViewCentered != shouldBeCentered) {
mStatusViewCentered = shouldBeCentered;
ConstraintSet constraintSet = new ConstraintSet();
@@ -1526,6 +1523,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
*/

View File

@@ -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;
}
}