diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSFragment.java b/packages/SystemUI/src/com/android/systemui/qs/QSFragment.java index c6a114e430380..e2e61b5ac91bb 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSFragment.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSFragment.java @@ -600,7 +600,7 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca } else if (progress > 0 && view.getVisibility() != View.VISIBLE) { view.setVisibility((View.VISIBLE)); } - float alpha = (mState == StatusBarState.KEYGUARD || mState == StatusBarState.SHADE_LOCKED) + float alpha = mQSPanelController.bouncerInTransit() ? BouncerPanelExpansionCalculator.getBackScrimScaledExpansion(progress) : ShadeInterpolation.getContentAlpha(progress); view.setAlpha(alpha); diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSPanelController.java b/packages/SystemUI/src/com/android/systemui/qs/QSPanelController.java index dd2929c9a67a7..10d792098608a 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSPanelController.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSPanelController.java @@ -43,6 +43,7 @@ import com.android.systemui.qs.logging.QSLogger; import com.android.systemui.settings.brightness.BrightnessController; import com.android.systemui.settings.brightness.BrightnessMirrorHandler; import com.android.systemui.settings.brightness.BrightnessSliderController; +import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager; import com.android.systemui.statusbar.policy.BrightnessMirrorController; import com.android.systemui.tuner.TunerService; @@ -65,6 +66,7 @@ public class QSPanelController extends QSPanelControllerBase { private final BrightnessSliderController mBrightnessSliderController; private final BrightnessMirrorHandler mBrightnessMirrorHandler; private final FeatureFlags mFeatureFlags; + private final StatusBarKeyguardViewManager mStatusBarKeyguardViewManager; private boolean mGridContentVisible = true; @@ -101,7 +103,8 @@ public class QSPanelController extends QSPanelControllerBase { DumpManager dumpManager, MetricsLogger metricsLogger, UiEventLogger uiEventLogger, QSLogger qsLogger, BrightnessController.Factory brightnessControllerFactory, BrightnessSliderController.Factory brightnessSliderFactory, - FalsingManager falsingManager, FeatureFlags featureFlags) { + FalsingManager falsingManager, FeatureFlags featureFlags, + StatusBarKeyguardViewManager statusBarKeyguardViewManager) { super(view, qstileHost, qsCustomizerController, usingMediaPlayer, mediaHost, metricsLogger, uiEventLogger, qsLogger, dumpManager); mQSFgsManagerFooter = qsFgsManagerFooter; @@ -117,6 +120,7 @@ public class QSPanelController extends QSPanelControllerBase { mBrightnessController = brightnessControllerFactory.create(mBrightnessSliderController); mBrightnessMirrorHandler = new BrightnessMirrorHandler(mBrightnessController); mFeatureFlags = featureFlags; + mStatusBarKeyguardViewManager = statusBarKeyguardViewManager; view.setUseNewFooter(featureFlags.isEnabled(Flags.NEW_FOOTER)); } @@ -281,5 +285,14 @@ public class QSPanelController extends QSPanelControllerBase { void setPageMargin(int pageMargin) { mView.setPageMargin(pageMargin); } + + /** + * Determines if bouncer expansion is between 0 and 1 non-inclusive. + * + * @return if bouncer is in transit + */ + public boolean bouncerInTransit() { + return mStatusBarKeyguardViewManager.bouncerIsInTransit(); + } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelViewController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelViewController.java index be50a17b85363..71f199f330a5e 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelViewController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelViewController.java @@ -797,10 +797,9 @@ public abstract class PanelViewController { } mExpandedFraction = Math.min(1f, maxPanelHeight == 0 ? 0 : mExpandedHeight / maxPanelHeight); - mAmbientState.setExpansionFraction(mKeyguardStateController.isUnlocked() - ? mExpandedFraction - : BouncerPanelExpansionCalculator - .getBackScrimScaledExpansion(mExpandedFraction)); + mAmbientState.setExpansionFraction(mStatusBarKeyguardViewManager.bouncerIsInTransit() + ? BouncerPanelExpansionCalculator.getBackScrimScaledExpansion(mExpandedFraction) + : mExpandedFraction); onHeightUpdated(mExpandedHeight); updatePanelExpansionAndVisibility(); }); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java index 8272ed9262553..58634af5430ab 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java @@ -204,6 +204,7 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, Dump private final Executor mMainExecutor; private final ScreenOffAnimationController mScreenOffAnimationController; private final KeyguardUnlockAnimationController mKeyguardUnlockAnimationController; + private final StatusBarKeyguardViewManager mStatusBarKeyguardViewManager; private GradientColors mColors; private boolean mNeedsDrawableColorUpdate; @@ -266,7 +267,8 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, Dump ConfigurationController configurationController, @Main Executor mainExecutor, ScreenOffAnimationController screenOffAnimationController, PanelExpansionStateManager panelExpansionStateManager, - KeyguardUnlockAnimationController keyguardUnlockAnimationController) { + KeyguardUnlockAnimationController keyguardUnlockAnimationController, + StatusBarKeyguardViewManager statusBarKeyguardViewManager) { mScrimStateListener = lightBarController::setScrimState; mDefaultScrimAlpha = BUSY_SCRIM_ALPHA; @@ -292,6 +294,7 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, Dump keyguardStateController.getKeyguardFadingAwayDuration()); } }); + mStatusBarKeyguardViewManager = statusBarKeyguardViewManager; configurationController.addCallback(new ConfigurationController.ConfigurationListener() { @Override public void onThemeChanged() { @@ -1057,7 +1060,7 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, Dump } private float getInterpolatedFraction() { - if (mState == ScrimState.KEYGUARD || mState == ScrimState.SHADE_LOCKED) { + if (mStatusBarKeyguardViewManager.bouncerIsInTransit()) { return BouncerPanelExpansionCalculator .getBackScrimScaledExpansion(mPanelExpansionFraction); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java index 23401618e1f3a..a1cbba47e8227 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java @@ -1367,6 +1367,15 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb } } + /** + * Returns if bouncer expansion is between 0 and 1 non-inclusive. + */ + public boolean bouncerIsInTransit() { + if (mBouncer == null) return false; + + return mBouncer.inTransit(); + } + /** * Delegate used to send show/reset events to an alternate authentication method instead of the * regular pin/pattern/password bouncer. diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/QSFragmentTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/QSFragmentTest.java index def1d4183158d..777198b43d4ae 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/qs/QSFragmentTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/qs/QSFragmentTest.java @@ -14,6 +14,8 @@ package com.android.systemui.qs; +import static com.google.common.truth.Truth.assertThat; + import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyBoolean; @@ -37,8 +39,10 @@ import android.view.ViewGroup; import androidx.test.filters.SmallTest; import com.android.internal.logging.UiEventLogger; +import com.android.keyguard.BouncerPanelExpansionCalculator; import com.android.systemui.R; import com.android.systemui.SysuiBaseFragmentTest; +import com.android.systemui.animation.ShadeInterpolation; import com.android.systemui.broadcast.BroadcastDispatcher; import com.android.systemui.dump.DumpManager; import com.android.systemui.media.MediaHost; @@ -54,6 +58,7 @@ import com.android.systemui.qs.tileimpl.QSFactoryImpl; import com.android.systemui.settings.UserTracker; import com.android.systemui.shared.plugins.PluginManager; import com.android.systemui.statusbar.CommandQueue; +import com.android.systemui.statusbar.StatusBarState; import com.android.systemui.statusbar.phone.AutoTileManager; import com.android.systemui.statusbar.phone.CentralSurfaces; import com.android.systemui.statusbar.phone.KeyguardBypassController; @@ -77,47 +82,29 @@ import java.util.Optional; @SmallTest public class QSFragmentTest extends SysuiBaseFragmentTest { - @Mock - private QSFragmentComponent.Factory mQsComponentFactory; - @Mock - private QSFragmentComponent mQsFragmentComponent; - @Mock - private QSPanelController mQSPanelController; - @Mock - private MediaHost mQSMediaHost; - @Mock - private MediaHost mQQSMediaHost; - @Mock - private KeyguardBypassController mBypassController; - @Mock - private FalsingManager mFalsingManager; - @Mock - private TileServiceRequestController.Builder mTileServiceRequestControllerBuilder; - @Mock - private TileServiceRequestController mTileServiceRequestController; - @Mock - private QSCustomizerController mQsCustomizerController; - @Mock - private QuickQSPanelController mQuickQSPanelController; - @Mock - private FooterActionsController mQSFooterActionController; - @Mock - private QSContainerImplController mQSContainerImplController; - @Mock - private QSContainerImpl mContainer; - @Mock - private QSFooter mFooter; - @Mock - private LayoutInflater mLayoutInflater; - @Mock - private NonInterceptingScrollView mQSPanelScrollView; - @Mock - private QuickStatusBarHeader mHeader; - @Mock - private QSPanel.QSTileLayout mQsTileLayout; - @Mock - private QSPanel.QSTileLayout mQQsTileLayout; + @Mock private QSFragmentComponent.Factory mQsComponentFactory; + @Mock private QSFragmentComponent mQsFragmentComponent; + @Mock private QSPanelController mQSPanelController; + @Mock private MediaHost mQSMediaHost; + @Mock private MediaHost mQQSMediaHost; + @Mock private KeyguardBypassController mBypassController; + @Mock private FalsingManager mFalsingManager; + @Mock private TileServiceRequestController.Builder mTileServiceRequestControllerBuilder; + @Mock private TileServiceRequestController mTileServiceRequestController; + @Mock private QSCustomizerController mQsCustomizerController; + @Mock private QuickQSPanelController mQuickQSPanelController; + @Mock private FooterActionsController mQSFooterActionController; + @Mock private QSContainerImplController mQSContainerImplController; + @Mock private QSContainerImpl mContainer; + @Mock private QSFooter mFooter; + @Mock private LayoutInflater mLayoutInflater; + @Mock private NonInterceptingScrollView mQSPanelScrollView; + @Mock private QuickStatusBarHeader mHeader; + @Mock private QSPanel.QSTileLayout mQsTileLayout; + @Mock private QSPanel.QSTileLayout mQQsTileLayout; + @Mock private QSAnimator mQSAnimator; private View mQsFragmentView; + @Mock private StatusBarStateController mStatusBarStateController; public QSFragmentTest() { super(QSFragment.class); @@ -134,14 +121,26 @@ public class QSFragmentTest extends SysuiBaseFragmentTest { mFragments.dispatchResume(); processAllMessages(); - QSTileHost host = new QSTileHost(mContext, mock(StatusBarIconController.class), - mock(QSFactoryImpl.class), new Handler(), Looper.myLooper(), - mock(PluginManager.class), mock(TunerService.class), - () -> mock(AutoTileManager.class), mock(DumpManager.class), - mock(BroadcastDispatcher.class), Optional.of(mock(CentralSurfaces.class)), - mock(QSLogger.class), mock(UiEventLogger.class), mock(UserTracker.class), - mock(SecureSettings.class), mock(CustomTileStatePersister.class), - mTileServiceRequestControllerBuilder, mock(TileLifecycleManager.Factory.class)); + QSTileHost host = + new QSTileHost( + mContext, + mock(StatusBarIconController.class), + mock(QSFactoryImpl.class), + new Handler(), + Looper.myLooper(), + mock(PluginManager.class), + mock(TunerService.class), + () -> mock(AutoTileManager.class), + mock(DumpManager.class), + mock(BroadcastDispatcher.class), + Optional.of(mock(CentralSurfaces.class)), + mock(QSLogger.class), + mock(UiEventLogger.class), + mock(UserTracker.class), + mock(SecureSettings.class), + mock(CustomTileStatePersister.class), + mTileServiceRequestControllerBuilder, + mock(TileLifecycleManager.Factory.class)); qs.setListening(true); processAllMessages(); @@ -170,6 +169,75 @@ public class QSFragmentTest extends SysuiBaseFragmentTest { assertTrue(qs.isExpanded()); } + @Test + public void transitionToFullShade_inSplitShade_setsAlphaBasedOnProgress() { + QSFragment fragment = resumeAndGetFragment(); + enableSplitShade(); + int transitionPxAmount = 123; + float transitionProgress = 0.5f; + + fragment.setTransitionToFullShadeAmount(transitionPxAmount, transitionProgress); + + assertThat(mQsFragmentView.getAlpha()) + .isEqualTo(ShadeInterpolation.getContentAlpha(transitionProgress)); + } + + @Test + public void + transitionToFullShade_inSplitShade_onKeyguard_bouncerNotActive_usesShadeInterpolator() { + QSFragment fragment = resumeAndGetFragment(); + enableSplitShade(); + setStatusBarState(StatusBarState.KEYGUARD); + when(mQSPanelController.bouncerInTransit()).thenReturn(false); + int transitionPxAmount = 123; + float transitionProgress = 0.5f; + + fragment.setTransitionToFullShadeAmount(transitionPxAmount, transitionProgress); + + assertThat(mQsFragmentView.getAlpha()) + .isEqualTo(ShadeInterpolation.getContentAlpha(transitionProgress)); + } + + @Test + public void + transitionToFullShade_inSplitShade_onKeyguard_bouncerActive_usesBouncerInterpolator() { + QSFragment fragment = resumeAndGetFragment(); + enableSplitShade(); + setStatusBarState(StatusBarState.KEYGUARD); + when(mQSPanelController.bouncerInTransit()).thenReturn(true); + int transitionPxAmount = 123; + float transitionProgress = 0.5f; + + fragment.setTransitionToFullShadeAmount(transitionPxAmount, transitionProgress); + + assertThat(mQsFragmentView.getAlpha()) + .isEqualTo( + BouncerPanelExpansionCalculator.getBackScrimScaledExpansion( + transitionProgress)); + } + + @Test + public void transitionToFullShade_notInSplitShade_alwaysSetsAlphaTo1() { + QSFragment fragment = resumeAndGetFragment(); + disableSplitShade(); + + int transitionPxAmount = 12; + float transitionProgress = 0.1f; + fragment.setTransitionToFullShadeAmount(transitionPxAmount, transitionProgress); + assertThat(mQsFragmentView.getAlpha()).isEqualTo(1); + + transitionPxAmount = 123; + transitionProgress = 0.5f; + fragment.setTransitionToFullShadeAmount(transitionPxAmount, transitionProgress); + assertThat(mQsFragmentView.getAlpha()).isEqualTo(1); + assertThat(mQsFragmentView.getAlpha()).isEqualTo(1); + + transitionPxAmount = 234; + transitionProgress = 0.7f; + fragment.setTransitionToFullShadeAmount(transitionPxAmount, transitionProgress); + assertThat(mQsFragmentView.getAlpha()).isEqualTo(1); + } + @Override protected Fragment instantiate(Context context, String className, Bundle arguments) { MockitoAnnotations.initMocks(this); @@ -182,10 +250,10 @@ public class QSFragmentTest extends SysuiBaseFragmentTest { setUpOther(); return new QSFragment( - new RemoteInputQuickSettingsDisabler(context, commandQueue, - mock(ConfigurationController.class)), + new RemoteInputQuickSettingsDisabler( + context, commandQueue, mock(ConfigurationController.class)), mock(QSTileHost.class), - mock(StatusBarStateController.class), + mStatusBarStateController, commandQueue, mQSMediaHost, mQQSMediaHost, @@ -212,8 +280,8 @@ public class QSFragmentTest extends SysuiBaseFragmentTest { private void setUpViews() { mQsFragmentView = spy(new View(mContext)); - when(mQsFragmentView.findViewById(R.id.expanded_qs_scroll_view)).thenReturn( - mQSPanelScrollView); + when(mQsFragmentView.findViewById(R.id.expanded_qs_scroll_view)) + .thenReturn(mQSPanelScrollView); when(mQsFragmentView.findViewById(R.id.header)).thenReturn(mHeader); when(mQsFragmentView.findViewById(android.R.id.edit)).thenReturn(new View(mContext)); } @@ -222,8 +290,7 @@ public class QSFragmentTest extends SysuiBaseFragmentTest { when(mLayoutInflater.cloneInContext(any(Context.class))).thenReturn(mLayoutInflater); when(mLayoutInflater.inflate(anyInt(), any(ViewGroup.class), anyBoolean())) .thenReturn(mQsFragmentView); - mContext.addMockSystemService(Context.LAYOUT_INFLATER_SERVICE, - mLayoutInflater); + mContext.addMockSystemService(Context.LAYOUT_INFLATER_SERVICE, mLayoutInflater); } private void setupQsComponent() { @@ -231,10 +298,38 @@ public class QSFragmentTest extends SysuiBaseFragmentTest { when(mQsFragmentComponent.getQSPanelController()).thenReturn(mQSPanelController); when(mQsFragmentComponent.getQuickQSPanelController()).thenReturn(mQuickQSPanelController); when(mQsFragmentComponent.getQSCustomizerController()).thenReturn(mQsCustomizerController); - when(mQsFragmentComponent.getQSContainerImplController()).thenReturn( - mQSContainerImplController); + when(mQsFragmentComponent.getQSContainerImplController()) + .thenReturn(mQSContainerImplController); when(mQsFragmentComponent.getQSFooter()).thenReturn(mFooter); - when(mQsFragmentComponent.getQSFooterActionController()).thenReturn( - mQSFooterActionController); + when(mQsFragmentComponent.getQSFooterActionController()) + .thenReturn(mQSFooterActionController); + when(mQsFragmentComponent.getQSAnimator()).thenReturn(mQSAnimator); + } + + private QSFragment getFragment() { + return ((QSFragment) mFragment); + } + + private QSFragment resumeAndGetFragment() { + mFragments.dispatchResume(); + processAllMessages(); + return getFragment(); + } + + private void setStatusBarState(int statusBarState) { + when(mStatusBarStateController.getState()).thenReturn(statusBarState); + getFragment().onStateChanged(statusBarState); + } + + private void enableSplitShade() { + setSplitShadeEnabled(true); + } + + private void disableSplitShade() { + setSplitShadeEnabled(false); + } + + private void setSplitShadeEnabled(boolean enabled) { + getFragment().setInSplitShade(enabled); } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelControllerTest.kt index e9488e9ad98c2..58a070db9a955 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelControllerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelControllerTest.kt @@ -15,7 +15,9 @@ import com.android.systemui.qs.customize.QSCustomizerController import com.android.systemui.qs.logging.QSLogger import com.android.systemui.settings.brightness.BrightnessController import com.android.systemui.settings.brightness.BrightnessSliderController +import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager import com.android.systemui.tuner.TunerService +import com.google.common.truth.Truth.assertThat import org.junit.After import org.junit.Before import org.junit.Test @@ -52,6 +54,7 @@ class QSPanelControllerTest : SysuiTestCase() { @Mock private lateinit var mediaHost: MediaHost @Mock private lateinit var tile: QSTile @Mock private lateinit var otherTile: QSTile + @Mock private lateinit var statusBarKeyguardViewManager: StatusBarKeyguardViewManager private lateinit var controller: QSPanelController @@ -62,6 +65,7 @@ class QSPanelControllerTest : SysuiTestCase() { whenever(brightnessSliderFactory.create(any(), any())).thenReturn(brightnessSlider) whenever(brightnessControllerFactory.create(any())).thenReturn(brightnessController) whenever(qsPanel.resources).thenReturn(mContext.orCreateTestableResources.resources) + whenever(statusBarKeyguardViewManager.bouncerIsInTransit()).thenReturn(false) controller = QSPanelController( qsPanel, @@ -80,7 +84,8 @@ class QSPanelControllerTest : SysuiTestCase() { brightnessControllerFactory, brightnessSliderFactory, falsingManager, - featureFlags + featureFlags, + statusBarKeyguardViewManager ) } @@ -109,4 +114,12 @@ class QSPanelControllerTest : SysuiTestCase() { verify(tile).refreshState() verify(otherTile, Mockito.never()).refreshState() } + + @Test + fun testBouncerIsInTransit() { + whenever(statusBarKeyguardViewManager.bouncerIsInTransit()).thenReturn(true) + assertThat(controller.bouncerInTransit()).isEqualTo(true) + whenever(statusBarKeyguardViewManager.bouncerIsInTransit()).thenReturn(false) + assertThat(controller.bouncerInTransit()).isEqualTo(false) + } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java index 5eef1df8c7a39..08f14aec132e1 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java @@ -119,6 +119,8 @@ public class ScrimControllerTest extends SysuiTestCase { // event-dispatch-on-registration pattern caused some of these unit tests to fail.) @Mock private PanelExpansionStateManager mPanelExpansionStateManager; + @Mock + private StatusBarKeyguardViewManager mStatusBarKeyguardViewManager; private static class AnimatorListener implements Animator.AnimatorListener { @@ -233,7 +235,8 @@ public class ScrimControllerTest extends SysuiTestCase { mDockManager, mConfigurationController, new FakeExecutor(new FakeSystemClock()), mScreenOffAnimationController, mPanelExpansionStateManager, - mKeyguardUnlockAnimationController); + mKeyguardUnlockAnimationController, + mStatusBarKeyguardViewManager); mScrimController.setScrimVisibleListener(visible -> mScrimVisibility = visible); mScrimController.attachViews(mScrimBehind, mNotificationsScrim, mScrimInFront); mScrimController.setAnimatorListener(mAnimatorListener); @@ -1234,6 +1237,8 @@ public class ScrimControllerTest extends SysuiTestCase { @Test public void testNotificationTransparency_followsPanelExpansionInShadeLockedState() { + when(mStatusBarKeyguardViewManager.bouncerIsInTransit()).thenReturn(true); + mScrimController.transitionTo(ScrimState.SHADE_LOCKED); assertAlphaAfterExpansion(mNotificationsScrim, /* alpha */ 0f, /* expansion */ 0.8f); @@ -1242,6 +1247,8 @@ public class ScrimControllerTest extends SysuiTestCase { @Test public void testNotificationTransparency_unnocclusion() { + when(mStatusBarKeyguardViewManager.bouncerIsInTransit()).thenReturn(true); + mScrimController.transitionTo(ScrimState.KEYGUARD); mScrimController.setUnocclusionAnimationRunning(true); @@ -1255,6 +1262,8 @@ public class ScrimControllerTest extends SysuiTestCase { @Test public void testNotificationTransparency_inKeyguardState() { + when(mStatusBarKeyguardViewManager.bouncerIsInTransit()).thenReturn(true); + mScrimController.transitionTo(ScrimState.KEYGUARD); assertAlphaAfterExpansion(mNotificationsScrim, /* alpha */ 1f, /* expansion */ 0.8f); diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManagerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManagerTest.java index ede3de83b572e..90cbf540004ea 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManagerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManagerTest.java @@ -55,6 +55,8 @@ import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.statusbar.policy.KeyguardStateController; import com.android.systemui.unfold.SysUIUnfoldComponent; +import com.google.common.truth.Truth; + import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -434,4 +436,14 @@ public class StatusBarKeyguardViewManagerTest extends SysuiTestCase { verify(mBouncer).updateKeyguardPosition(1.0f); } + + @Test + public void testBouncerIsInTransit() { + when(mBouncer.inTransit()).thenReturn(true); + Truth.assertThat(mStatusBarKeyguardViewManager.bouncerIsInTransit()).isTrue(); + when(mBouncer.inTransit()).thenReturn(false); + Truth.assertThat(mStatusBarKeyguardViewManager.bouncerIsInTransit()).isFalse(); + mBouncer = null; + Truth.assertThat(mStatusBarKeyguardViewManager.bouncerIsInTransit()).isFalse(); + } }