Loading packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/KeyguardStatusBarViewControllerTest.kt +123 −21 Original line number Diff line number Diff line Loading @@ -71,7 +71,6 @@ import com.android.systemui.user.data.repository.fakeUserRepository import com.android.systemui.util.concurrency.FakeExecutor import com.android.systemui.util.settings.SecureSettings import com.android.systemui.util.time.FakeSystemClock import com.google.common.truth.Truth import com.google.common.truth.Truth.assertThat import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.test.TestScope Loading Loading @@ -181,6 +180,7 @@ class KeyguardStatusBarViewControllerTest : SysuiTestCase() { as KeyguardStatusBarView ) whenever(keyguardStatusBarView.display).thenReturn(mContext.display) whenever(keyguardStatusBarView.isAttachedToWindow).thenReturn(true) } controller = createController() Loading Loading @@ -392,33 +392,32 @@ class KeyguardStatusBarViewControllerTest : SysuiTestCase() { controller.updateTopClipping(notificationPanelTop) Truth.assertThat(keyguardStatusBarView.clipBounds.top) .isEqualTo(notificationPanelTop - viewTop) assertThat(keyguardStatusBarView.clipBounds.top).isEqualTo(notificationPanelTop - viewTop) } @Test fun setNotTopClipping_viewClippingUpdatedToZero() { // Start out with some amount of top clipping. controller.updateTopClipping(50) Truth.assertThat(keyguardStatusBarView.clipBounds.top).isGreaterThan(0) assertThat(keyguardStatusBarView.clipBounds.top).isGreaterThan(0) controller.setNoTopClipping() Truth.assertThat(keyguardStatusBarView.clipBounds.top).isEqualTo(0) assertThat(keyguardStatusBarView.clipBounds.top).isEqualTo(0) } @Test @DisableSceneContainer fun updateViewState_alphaAndVisibilityGiven_viewUpdated() { // Verify the initial values so we know the method triggers changes. Truth.assertThat(keyguardStatusBarView.alpha).isEqualTo(1f) assertThat(keyguardStatusBarView.alpha).isEqualTo(1f) assertThat(keyguardStatusBarView.visibility).isEqualTo(View.VISIBLE) val newAlpha = 0.5f val newVisibility = View.INVISIBLE controller.updateViewState(newAlpha, newVisibility) Truth.assertThat(keyguardStatusBarView.alpha).isEqualTo(newAlpha) assertThat(keyguardStatusBarView.alpha).isEqualTo(newAlpha) assertThat(keyguardStatusBarView.visibility).isEqualTo(newVisibility) } Loading @@ -444,7 +443,7 @@ class KeyguardStatusBarViewControllerTest : SysuiTestCase() { controller.updateViewState() Truth.assertThat(keyguardStatusBarView.alpha).isEqualTo(oldAlpha) assertThat(keyguardStatusBarView.alpha).isEqualTo(oldAlpha) } @Test Loading Loading @@ -506,6 +505,41 @@ class KeyguardStatusBarViewControllerTest : SysuiTestCase() { assertThat(keyguardStatusBarView.visibility).isEqualTo(View.INVISIBLE) } @Test @DisableSceneContainer fun updateViewState_lockscreenShadeDrag40Percent_alphaIsAt20Percent() { controller.onViewAttached() updateStateToKeyguard() shadeViewStateProvider.lockscreenShadeDragProgress = .4f controller.updateViewState() assertThat(keyguardStatusBarView.visibility).isEqualTo(View.VISIBLE) assertThat(keyguardStatusBarView.alpha).isWithin(.01f).of(.2f) } @Test @DisableSceneContainer @EnableFlags(Flags.FLAG_GLANCEABLE_HUB_V2) fun updateViewState_lockscreenShadeDragOverHub40Percent_alphaIsAt20Percent() = testScope.runTest { controller.onViewAttached() updateStateToKeyguard() // Fully transition to communal, and verify status bar is fully visible kosmos.fakeCommunalSceneRepository.instantlyTransitionTo(CommunalScenes.Communal) runCurrent() assertThat(keyguardStatusBarView.visibility).isEqualTo(View.VISIBLE) assertThat(keyguardStatusBarView.alpha).isEqualTo(1f) // Start dragging down shade, and verify status bar alpha updates shadeViewStateProvider.lockscreenShadeDragProgress = .4f controller.updateViewState() assertThat(keyguardStatusBarView.visibility).isEqualTo(View.VISIBLE) assertThat(keyguardStatusBarView.alpha).isWithin(.01f).of(.2f) } @Test @DisableSceneContainer fun updateViewState_dragProgressOne_viewHidden() { Loading Loading @@ -604,7 +638,7 @@ class KeyguardStatusBarViewControllerTest : SysuiTestCase() { controller.updateViewState() assertThat(keyguardStatusBarView.visibility).isEqualTo(View.GONE) Truth.assertThat(keyguardStatusBarView.alpha).isEqualTo(0.456f) assertThat(keyguardStatusBarView.alpha).isEqualTo(0.456f) } @Test Loading @@ -620,7 +654,7 @@ class KeyguardStatusBarViewControllerTest : SysuiTestCase() { controller.updateViewState(0.789f, View.VISIBLE) assertThat(keyguardStatusBarView.visibility).isEqualTo(View.GONE) Truth.assertThat(keyguardStatusBarView.alpha).isEqualTo(0.456f) assertThat(keyguardStatusBarView.alpha).isEqualTo(0.456f) } @Test Loading @@ -634,7 +668,7 @@ class KeyguardStatusBarViewControllerTest : SysuiTestCase() { controller.setAlpha(0.123f) Truth.assertThat(keyguardStatusBarView.alpha).isEqualTo(0.456f) assertThat(keyguardStatusBarView.alpha).isEqualTo(0.456f) } @Test Loading @@ -660,7 +694,7 @@ class KeyguardStatusBarViewControllerTest : SysuiTestCase() { controller.setAlpha(0.5f) Truth.assertThat(keyguardStatusBarView.alpha).isEqualTo(0.5f) assertThat(keyguardStatusBarView.alpha).isEqualTo(0.5f) } @Test Loading @@ -672,8 +706,8 @@ class KeyguardStatusBarViewControllerTest : SysuiTestCase() { controller.setAlpha(0.5f) controller.setAlpha(-1f) Truth.assertThat(keyguardStatusBarView.alpha).isGreaterThan(0) Truth.assertThat(keyguardStatusBarView.alpha).isNotEqualTo(0.5f) assertThat(keyguardStatusBarView.alpha).isGreaterThan(0) assertThat(keyguardStatusBarView.alpha).isNotEqualTo(0.5f) } // TODO(b/195442899): Add more tests for #updateViewState once CLs are finalized. Loading Loading @@ -716,7 +750,7 @@ class KeyguardStatusBarViewControllerTest : SysuiTestCase() { controller = createController() // THEN keyguard status bar view avatar is disabled Truth.assertThat(keyguardStatusBarView.isKeyguardUserAvatarEnabled).isFalse() assertThat(keyguardStatusBarView.isKeyguardUserAvatarEnabled).isFalse() } @Test Loading @@ -728,7 +762,7 @@ class KeyguardStatusBarViewControllerTest : SysuiTestCase() { controller = createController() // THEN keyguard status bar view avatar is enabled Truth.assertThat(keyguardStatusBarView.isKeyguardUserAvatarEnabled).isTrue() assertThat(keyguardStatusBarView.isKeyguardUserAvatarEnabled).isTrue() } @Test Loading Loading @@ -797,7 +831,7 @@ class KeyguardStatusBarViewControllerTest : SysuiTestCase() { @Test @DisableFlags(Flags.FLAG_GLANCEABLE_HUB_V2) fun animateToGlanceableHub_affectsAlpha() = fun animateToGlanceableHub_v2Disabled_affectsAlpha() = testScope.runTest { try { controller.init() Loading @@ -809,6 +843,7 @@ class KeyguardStatusBarViewControllerTest : SysuiTestCase() { kosmos.fakeCommunalSceneRepository.instantlyTransitionTo(CommunalScenes.Communal) runCurrent() controller.updateCommunalAlphaTransition(transitionAlphaAmount) assertThat(keyguardStatusBarView.visibility).isEqualTo(View.VISIBLE) assertThat(keyguardStatusBarView.alpha).isEqualTo(transitionAlphaAmount) } finally { ViewUtils.detachView(keyguardStatusBarView) Loading @@ -817,21 +852,88 @@ class KeyguardStatusBarViewControllerTest : SysuiTestCase() { @Test @DisableFlags(Flags.FLAG_GLANCEABLE_HUB_V2) fun animateToGlanceableHub_alphaResetOnCommunalNotShowing() = fun animateToGlanceableHub_v2Disabled_alphaResetOnCommunalNotShowing() = testScope.runTest { try { controller.init() val transitionAlphaAmount = .5f ViewUtils.attachView(keyguardStatusBarView) looper.processAllMessages() updateStateToKeyguard() // Verify status bar is fully visible on lockscreen assertThat(keyguardStatusBarView.visibility).isEqualTo(View.VISIBLE) assertThat(keyguardStatusBarView.alpha).isEqualTo(1f) // Start transitioning to communal, and verify status bar is half visible kosmos.fakeCommunalSceneRepository.instantlyTransitionTo(CommunalScenes.Communal) runCurrent() controller.updateCommunalAlphaTransition(transitionAlphaAmount) controller.updateCommunalAlphaTransition(.5f) assertThat(keyguardStatusBarView.visibility).isEqualTo(View.VISIBLE) assertThat(keyguardStatusBarView.alpha).isEqualTo(.5f) // Transition back to lockscreen, and verify status bar is set back to fully visible kosmos.fakeCommunalSceneRepository.instantlyTransitionTo(CommunalScenes.Blank) runCurrent() assertThat(keyguardStatusBarView.alpha).isNotEqualTo(transitionAlphaAmount) assertThat(keyguardStatusBarView.visibility).isEqualTo(View.VISIBLE) assertThat(keyguardStatusBarView.alpha).isNotEqualTo(.5f) } finally { ViewUtils.detachView(keyguardStatusBarView) } } @Test @DisableFlags(Flags.FLAG_GLANCEABLE_HUB_V2) fun dragDownShadeOverGlanceableHub_v2Disabled_alphaRemainsZero() = testScope.runTest { try { controller.init() ViewUtils.attachView(keyguardStatusBarView) looper.processAllMessages() updateStateToKeyguard() // Verify status bar is fully visible on lockscreen assertThat(keyguardStatusBarView.visibility).isEqualTo(View.VISIBLE) assertThat(keyguardStatusBarView.alpha).isEqualTo(1f) // Fully transition to communal, and verify status bar is invisible kosmos.fakeCommunalSceneRepository.instantlyTransitionTo(CommunalScenes.Communal) runCurrent() controller.updateCommunalAlphaTransition(0f) assertThat(keyguardStatusBarView.visibility).isEqualTo(View.INVISIBLE) assertThat(keyguardStatusBarView.alpha).isEqualTo(0f) // Start dragging down shade, and verify status bar remains invisible shadeViewStateProvider.lockscreenShadeDragProgress = .1f controller.updateViewState() assertThat(keyguardStatusBarView.visibility).isEqualTo(View.INVISIBLE) assertThat(keyguardStatusBarView.alpha).isEqualTo(0f) } finally { ViewUtils.detachView(keyguardStatusBarView) } } @Test @EnableFlags(Flags.FLAG_GLANCEABLE_HUB_V2) fun animateToGlanceableHub_v2Enabled_alphaDoesNotChange() = testScope.runTest { try { controller.init() ViewUtils.attachView(keyguardStatusBarView) looper.processAllMessages() updateStateToKeyguard() // Verify status bar is fully visible on lockscreen assertThat(keyguardStatusBarView.visibility).isEqualTo(View.VISIBLE) assertThat(keyguardStatusBarView.alpha).isEqualTo(1f) // Transition to communal halfway, and verify status bar remains fully visible kosmos.fakeCommunalSceneRepository.instantlyTransitionTo(CommunalScenes.Communal) runCurrent() assertThat(keyguardStatusBarView.visibility).isEqualTo(View.VISIBLE) assertThat(keyguardStatusBarView.alpha).isEqualTo(1f) } finally { ViewUtils.detachView(keyguardStatusBarView) } Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarViewController.java +28 −11 Original line number Diff line number Diff line Loading @@ -276,9 +276,7 @@ public class KeyguardStatusBarViewController extends ViewController<KeyguardStat private boolean mCommunalShowing; private final Consumer<Boolean> mCommunalConsumer = (communalShowing) -> { updateCommunalShowing(communalShowing); }; private final Consumer<Boolean> mCommunalConsumer = this::updateCommunalShowing; @VisibleForTesting void updateCommunalShowing(boolean communalShowing) { Loading @@ -287,7 +285,7 @@ public class KeyguardStatusBarViewController extends ViewController<KeyguardStat // When communal is hidden (either by transition or state change), set alpha to fully // visible. if (!mCommunalShowing) { setAlpha(-1f); setAlphaByCommunal(-1f); } updateViewState(); } Loading Loading @@ -316,14 +314,14 @@ public class KeyguardStatusBarViewController extends ViewController<KeyguardStat private boolean mShowingKeyguardHeadsUp; private StatusBarSystemEventDefaultAnimator mSystemEventAnimator; private float mSystemEventAnimatorAlpha = 1; private final Consumer<Float> mToGlanceableHubStatusBarAlphaConsumer = (alpha) -> updateCommunalAlphaTransition(alpha); private final Consumer<Float> mToGlanceableHubStatusBarAlphaConsumer = this::updateCommunalAlphaTransition; private final Consumer<Float> mFromGlanceableHubStatusBarAlphaConsumer = (alpha) -> updateCommunalAlphaTransition(alpha); private final Consumer<Float> mFromGlanceableHubStatusBarAlphaConsumer = this::updateCommunalAlphaTransition; @VisibleForTesting void updateCommunalAlphaTransition(float alpha) { setAlpha(!mCommunalShowing || alpha == 0 ? -1 : alpha); setAlphaByCommunal(alpha); } /** Loading @@ -331,6 +329,12 @@ public class KeyguardStatusBarViewController extends ViewController<KeyguardStat */ private float mExplicitAlpha = -1f; /** * The alpha value to be set on the View requested by the glanceable hub. If -1, this value is * to be ignored. Otherwise, it takes precedence over mExplicitAlpha. */ private float mExplicitAlphaByCommunal = -1f; @Inject public KeyguardStatusBarViewController( @Main CoroutineDispatcher dispatcher, Loading Loading @@ -661,7 +665,9 @@ public class KeyguardStatusBarViewController extends ViewController<KeyguardStat 1, mShadeViewStateProvider.getLockscreenShadeDragProgress() * 2); float newAlpha; if (mExplicitAlpha != -1) { if (mExplicitAlphaByCommunal != -1) { newAlpha = mExplicitAlphaByCommunal; } else if (mExplicitAlpha != -1) { newAlpha = mExplicitAlpha; } else { newAlpha = Math.min(getKeyguardContentsAlpha(), alphaQsExpansion) Loading @@ -687,7 +693,6 @@ public class KeyguardStatusBarViewController extends ViewController<KeyguardStat && !mDozing && !hideForBypass && !mDisableStateTracker.isDisabled() && (Flags.glanceableHubV2() || (!mCommunalShowing || mExplicitAlpha != -1)) ? View.VISIBLE : View.INVISIBLE; updateViewState(newAlpha, newVisibility); Loading Loading @@ -842,6 +847,18 @@ public class KeyguardStatusBarViewController extends ViewController<KeyguardStat updateViewState(); } /** * Sets the alpha to be set on the view when glanceable hub is showing. This value takes * precedence over the value set by {@link #setAlpha(float)}. * * @param alpha a value between 0 and 1. -1 if the value is to be reset/ignored. */ private void setAlphaByCommunal(float alpha) { // Only set explicit alpha when communal is showing mExplicitAlphaByCommunal = mCommunalShowing ? alpha : -1; updateViewState(); } private boolean isMigrationEnabled() { return SceneContainerFlag.isEnabled(); } Loading Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/phone/KeyguardStatusBarViewControllerTest.kt +123 −21 Original line number Diff line number Diff line Loading @@ -71,7 +71,6 @@ import com.android.systemui.user.data.repository.fakeUserRepository import com.android.systemui.util.concurrency.FakeExecutor import com.android.systemui.util.settings.SecureSettings import com.android.systemui.util.time.FakeSystemClock import com.google.common.truth.Truth import com.google.common.truth.Truth.assertThat import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.test.TestScope Loading Loading @@ -181,6 +180,7 @@ class KeyguardStatusBarViewControllerTest : SysuiTestCase() { as KeyguardStatusBarView ) whenever(keyguardStatusBarView.display).thenReturn(mContext.display) whenever(keyguardStatusBarView.isAttachedToWindow).thenReturn(true) } controller = createController() Loading Loading @@ -392,33 +392,32 @@ class KeyguardStatusBarViewControllerTest : SysuiTestCase() { controller.updateTopClipping(notificationPanelTop) Truth.assertThat(keyguardStatusBarView.clipBounds.top) .isEqualTo(notificationPanelTop - viewTop) assertThat(keyguardStatusBarView.clipBounds.top).isEqualTo(notificationPanelTop - viewTop) } @Test fun setNotTopClipping_viewClippingUpdatedToZero() { // Start out with some amount of top clipping. controller.updateTopClipping(50) Truth.assertThat(keyguardStatusBarView.clipBounds.top).isGreaterThan(0) assertThat(keyguardStatusBarView.clipBounds.top).isGreaterThan(0) controller.setNoTopClipping() Truth.assertThat(keyguardStatusBarView.clipBounds.top).isEqualTo(0) assertThat(keyguardStatusBarView.clipBounds.top).isEqualTo(0) } @Test @DisableSceneContainer fun updateViewState_alphaAndVisibilityGiven_viewUpdated() { // Verify the initial values so we know the method triggers changes. Truth.assertThat(keyguardStatusBarView.alpha).isEqualTo(1f) assertThat(keyguardStatusBarView.alpha).isEqualTo(1f) assertThat(keyguardStatusBarView.visibility).isEqualTo(View.VISIBLE) val newAlpha = 0.5f val newVisibility = View.INVISIBLE controller.updateViewState(newAlpha, newVisibility) Truth.assertThat(keyguardStatusBarView.alpha).isEqualTo(newAlpha) assertThat(keyguardStatusBarView.alpha).isEqualTo(newAlpha) assertThat(keyguardStatusBarView.visibility).isEqualTo(newVisibility) } Loading @@ -444,7 +443,7 @@ class KeyguardStatusBarViewControllerTest : SysuiTestCase() { controller.updateViewState() Truth.assertThat(keyguardStatusBarView.alpha).isEqualTo(oldAlpha) assertThat(keyguardStatusBarView.alpha).isEqualTo(oldAlpha) } @Test Loading Loading @@ -506,6 +505,41 @@ class KeyguardStatusBarViewControllerTest : SysuiTestCase() { assertThat(keyguardStatusBarView.visibility).isEqualTo(View.INVISIBLE) } @Test @DisableSceneContainer fun updateViewState_lockscreenShadeDrag40Percent_alphaIsAt20Percent() { controller.onViewAttached() updateStateToKeyguard() shadeViewStateProvider.lockscreenShadeDragProgress = .4f controller.updateViewState() assertThat(keyguardStatusBarView.visibility).isEqualTo(View.VISIBLE) assertThat(keyguardStatusBarView.alpha).isWithin(.01f).of(.2f) } @Test @DisableSceneContainer @EnableFlags(Flags.FLAG_GLANCEABLE_HUB_V2) fun updateViewState_lockscreenShadeDragOverHub40Percent_alphaIsAt20Percent() = testScope.runTest { controller.onViewAttached() updateStateToKeyguard() // Fully transition to communal, and verify status bar is fully visible kosmos.fakeCommunalSceneRepository.instantlyTransitionTo(CommunalScenes.Communal) runCurrent() assertThat(keyguardStatusBarView.visibility).isEqualTo(View.VISIBLE) assertThat(keyguardStatusBarView.alpha).isEqualTo(1f) // Start dragging down shade, and verify status bar alpha updates shadeViewStateProvider.lockscreenShadeDragProgress = .4f controller.updateViewState() assertThat(keyguardStatusBarView.visibility).isEqualTo(View.VISIBLE) assertThat(keyguardStatusBarView.alpha).isWithin(.01f).of(.2f) } @Test @DisableSceneContainer fun updateViewState_dragProgressOne_viewHidden() { Loading Loading @@ -604,7 +638,7 @@ class KeyguardStatusBarViewControllerTest : SysuiTestCase() { controller.updateViewState() assertThat(keyguardStatusBarView.visibility).isEqualTo(View.GONE) Truth.assertThat(keyguardStatusBarView.alpha).isEqualTo(0.456f) assertThat(keyguardStatusBarView.alpha).isEqualTo(0.456f) } @Test Loading @@ -620,7 +654,7 @@ class KeyguardStatusBarViewControllerTest : SysuiTestCase() { controller.updateViewState(0.789f, View.VISIBLE) assertThat(keyguardStatusBarView.visibility).isEqualTo(View.GONE) Truth.assertThat(keyguardStatusBarView.alpha).isEqualTo(0.456f) assertThat(keyguardStatusBarView.alpha).isEqualTo(0.456f) } @Test Loading @@ -634,7 +668,7 @@ class KeyguardStatusBarViewControllerTest : SysuiTestCase() { controller.setAlpha(0.123f) Truth.assertThat(keyguardStatusBarView.alpha).isEqualTo(0.456f) assertThat(keyguardStatusBarView.alpha).isEqualTo(0.456f) } @Test Loading @@ -660,7 +694,7 @@ class KeyguardStatusBarViewControllerTest : SysuiTestCase() { controller.setAlpha(0.5f) Truth.assertThat(keyguardStatusBarView.alpha).isEqualTo(0.5f) assertThat(keyguardStatusBarView.alpha).isEqualTo(0.5f) } @Test Loading @@ -672,8 +706,8 @@ class KeyguardStatusBarViewControllerTest : SysuiTestCase() { controller.setAlpha(0.5f) controller.setAlpha(-1f) Truth.assertThat(keyguardStatusBarView.alpha).isGreaterThan(0) Truth.assertThat(keyguardStatusBarView.alpha).isNotEqualTo(0.5f) assertThat(keyguardStatusBarView.alpha).isGreaterThan(0) assertThat(keyguardStatusBarView.alpha).isNotEqualTo(0.5f) } // TODO(b/195442899): Add more tests for #updateViewState once CLs are finalized. Loading Loading @@ -716,7 +750,7 @@ class KeyguardStatusBarViewControllerTest : SysuiTestCase() { controller = createController() // THEN keyguard status bar view avatar is disabled Truth.assertThat(keyguardStatusBarView.isKeyguardUserAvatarEnabled).isFalse() assertThat(keyguardStatusBarView.isKeyguardUserAvatarEnabled).isFalse() } @Test Loading @@ -728,7 +762,7 @@ class KeyguardStatusBarViewControllerTest : SysuiTestCase() { controller = createController() // THEN keyguard status bar view avatar is enabled Truth.assertThat(keyguardStatusBarView.isKeyguardUserAvatarEnabled).isTrue() assertThat(keyguardStatusBarView.isKeyguardUserAvatarEnabled).isTrue() } @Test Loading Loading @@ -797,7 +831,7 @@ class KeyguardStatusBarViewControllerTest : SysuiTestCase() { @Test @DisableFlags(Flags.FLAG_GLANCEABLE_HUB_V2) fun animateToGlanceableHub_affectsAlpha() = fun animateToGlanceableHub_v2Disabled_affectsAlpha() = testScope.runTest { try { controller.init() Loading @@ -809,6 +843,7 @@ class KeyguardStatusBarViewControllerTest : SysuiTestCase() { kosmos.fakeCommunalSceneRepository.instantlyTransitionTo(CommunalScenes.Communal) runCurrent() controller.updateCommunalAlphaTransition(transitionAlphaAmount) assertThat(keyguardStatusBarView.visibility).isEqualTo(View.VISIBLE) assertThat(keyguardStatusBarView.alpha).isEqualTo(transitionAlphaAmount) } finally { ViewUtils.detachView(keyguardStatusBarView) Loading @@ -817,21 +852,88 @@ class KeyguardStatusBarViewControllerTest : SysuiTestCase() { @Test @DisableFlags(Flags.FLAG_GLANCEABLE_HUB_V2) fun animateToGlanceableHub_alphaResetOnCommunalNotShowing() = fun animateToGlanceableHub_v2Disabled_alphaResetOnCommunalNotShowing() = testScope.runTest { try { controller.init() val transitionAlphaAmount = .5f ViewUtils.attachView(keyguardStatusBarView) looper.processAllMessages() updateStateToKeyguard() // Verify status bar is fully visible on lockscreen assertThat(keyguardStatusBarView.visibility).isEqualTo(View.VISIBLE) assertThat(keyguardStatusBarView.alpha).isEqualTo(1f) // Start transitioning to communal, and verify status bar is half visible kosmos.fakeCommunalSceneRepository.instantlyTransitionTo(CommunalScenes.Communal) runCurrent() controller.updateCommunalAlphaTransition(transitionAlphaAmount) controller.updateCommunalAlphaTransition(.5f) assertThat(keyguardStatusBarView.visibility).isEqualTo(View.VISIBLE) assertThat(keyguardStatusBarView.alpha).isEqualTo(.5f) // Transition back to lockscreen, and verify status bar is set back to fully visible kosmos.fakeCommunalSceneRepository.instantlyTransitionTo(CommunalScenes.Blank) runCurrent() assertThat(keyguardStatusBarView.alpha).isNotEqualTo(transitionAlphaAmount) assertThat(keyguardStatusBarView.visibility).isEqualTo(View.VISIBLE) assertThat(keyguardStatusBarView.alpha).isNotEqualTo(.5f) } finally { ViewUtils.detachView(keyguardStatusBarView) } } @Test @DisableFlags(Flags.FLAG_GLANCEABLE_HUB_V2) fun dragDownShadeOverGlanceableHub_v2Disabled_alphaRemainsZero() = testScope.runTest { try { controller.init() ViewUtils.attachView(keyguardStatusBarView) looper.processAllMessages() updateStateToKeyguard() // Verify status bar is fully visible on lockscreen assertThat(keyguardStatusBarView.visibility).isEqualTo(View.VISIBLE) assertThat(keyguardStatusBarView.alpha).isEqualTo(1f) // Fully transition to communal, and verify status bar is invisible kosmos.fakeCommunalSceneRepository.instantlyTransitionTo(CommunalScenes.Communal) runCurrent() controller.updateCommunalAlphaTransition(0f) assertThat(keyguardStatusBarView.visibility).isEqualTo(View.INVISIBLE) assertThat(keyguardStatusBarView.alpha).isEqualTo(0f) // Start dragging down shade, and verify status bar remains invisible shadeViewStateProvider.lockscreenShadeDragProgress = .1f controller.updateViewState() assertThat(keyguardStatusBarView.visibility).isEqualTo(View.INVISIBLE) assertThat(keyguardStatusBarView.alpha).isEqualTo(0f) } finally { ViewUtils.detachView(keyguardStatusBarView) } } @Test @EnableFlags(Flags.FLAG_GLANCEABLE_HUB_V2) fun animateToGlanceableHub_v2Enabled_alphaDoesNotChange() = testScope.runTest { try { controller.init() ViewUtils.attachView(keyguardStatusBarView) looper.processAllMessages() updateStateToKeyguard() // Verify status bar is fully visible on lockscreen assertThat(keyguardStatusBarView.visibility).isEqualTo(View.VISIBLE) assertThat(keyguardStatusBarView.alpha).isEqualTo(1f) // Transition to communal halfway, and verify status bar remains fully visible kosmos.fakeCommunalSceneRepository.instantlyTransitionTo(CommunalScenes.Communal) runCurrent() assertThat(keyguardStatusBarView.visibility).isEqualTo(View.VISIBLE) assertThat(keyguardStatusBarView.alpha).isEqualTo(1f) } finally { ViewUtils.detachView(keyguardStatusBarView) } Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarViewController.java +28 −11 Original line number Diff line number Diff line Loading @@ -276,9 +276,7 @@ public class KeyguardStatusBarViewController extends ViewController<KeyguardStat private boolean mCommunalShowing; private final Consumer<Boolean> mCommunalConsumer = (communalShowing) -> { updateCommunalShowing(communalShowing); }; private final Consumer<Boolean> mCommunalConsumer = this::updateCommunalShowing; @VisibleForTesting void updateCommunalShowing(boolean communalShowing) { Loading @@ -287,7 +285,7 @@ public class KeyguardStatusBarViewController extends ViewController<KeyguardStat // When communal is hidden (either by transition or state change), set alpha to fully // visible. if (!mCommunalShowing) { setAlpha(-1f); setAlphaByCommunal(-1f); } updateViewState(); } Loading Loading @@ -316,14 +314,14 @@ public class KeyguardStatusBarViewController extends ViewController<KeyguardStat private boolean mShowingKeyguardHeadsUp; private StatusBarSystemEventDefaultAnimator mSystemEventAnimator; private float mSystemEventAnimatorAlpha = 1; private final Consumer<Float> mToGlanceableHubStatusBarAlphaConsumer = (alpha) -> updateCommunalAlphaTransition(alpha); private final Consumer<Float> mToGlanceableHubStatusBarAlphaConsumer = this::updateCommunalAlphaTransition; private final Consumer<Float> mFromGlanceableHubStatusBarAlphaConsumer = (alpha) -> updateCommunalAlphaTransition(alpha); private final Consumer<Float> mFromGlanceableHubStatusBarAlphaConsumer = this::updateCommunalAlphaTransition; @VisibleForTesting void updateCommunalAlphaTransition(float alpha) { setAlpha(!mCommunalShowing || alpha == 0 ? -1 : alpha); setAlphaByCommunal(alpha); } /** Loading @@ -331,6 +329,12 @@ public class KeyguardStatusBarViewController extends ViewController<KeyguardStat */ private float mExplicitAlpha = -1f; /** * The alpha value to be set on the View requested by the glanceable hub. If -1, this value is * to be ignored. Otherwise, it takes precedence over mExplicitAlpha. */ private float mExplicitAlphaByCommunal = -1f; @Inject public KeyguardStatusBarViewController( @Main CoroutineDispatcher dispatcher, Loading Loading @@ -661,7 +665,9 @@ public class KeyguardStatusBarViewController extends ViewController<KeyguardStat 1, mShadeViewStateProvider.getLockscreenShadeDragProgress() * 2); float newAlpha; if (mExplicitAlpha != -1) { if (mExplicitAlphaByCommunal != -1) { newAlpha = mExplicitAlphaByCommunal; } else if (mExplicitAlpha != -1) { newAlpha = mExplicitAlpha; } else { newAlpha = Math.min(getKeyguardContentsAlpha(), alphaQsExpansion) Loading @@ -687,7 +693,6 @@ public class KeyguardStatusBarViewController extends ViewController<KeyguardStat && !mDozing && !hideForBypass && !mDisableStateTracker.isDisabled() && (Flags.glanceableHubV2() || (!mCommunalShowing || mExplicitAlpha != -1)) ? View.VISIBLE : View.INVISIBLE; updateViewState(newAlpha, newVisibility); Loading Loading @@ -842,6 +847,18 @@ public class KeyguardStatusBarViewController extends ViewController<KeyguardStat updateViewState(); } /** * Sets the alpha to be set on the view when glanceable hub is showing. This value takes * precedence over the value set by {@link #setAlpha(float)}. * * @param alpha a value between 0 and 1. -1 if the value is to be reset/ignored. */ private void setAlphaByCommunal(float alpha) { // Only set explicit alpha when communal is showing mExplicitAlphaByCommunal = mCommunalShowing ? alpha : -1; updateViewState(); } private boolean isMigrationEnabled() { return SceneContainerFlag.isEnabled(); } Loading