Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a23f2dd5 authored by Christian Göllner's avatar Christian Göllner Committed by Christian Go??llner
Browse files

[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
parent 4d334f45
Loading
Loading
Loading
Loading
+10 −4
Original line number Diff line number Diff line
@@ -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
     */
+86 −0
Original line number Diff line number Diff line
@@ -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;
    }
}