Loading packages/SystemUI/src/com/android/systemui/flags/Flags.kt +5 −0 Original line number Diff line number Diff line Loading @@ -132,6 +132,11 @@ object Flags { // TODO(b/254512676): Tracking Bug @JvmField val LOCKSCREEN_CUSTOM_CLOCKS = releasedFlag(207, "lockscreen_custom_clocks") // TODO(b/275694445): Tracking Bug @JvmField val LOCKSCREEN_WITHOUT_SECURE_LOCK_WHEN_DREAMING = unreleasedFlag(208, "lockscreen_without_secure_lock_when_dreaming") /** * Whether the clock on a wide lock screen should use the new "stepping" animation for moving * the digits when the clock moves. Loading packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java +14 −4 Original line number Diff line number Diff line Loading @@ -128,6 +128,8 @@ import com.android.systemui.classifier.FalsingCollector; import com.android.systemui.dagger.qualifiers.UiBackground; import com.android.systemui.dreams.DreamOverlayStateController; import com.android.systemui.dump.DumpManager; import com.android.systemui.flags.FeatureFlags; import com.android.systemui.flags.Flags; import com.android.systemui.keyguard.dagger.KeyguardModule; import com.android.systemui.navigationbar.NavigationModeController; import com.android.systemui.plugins.statusbar.StatusBarStateController; Loading Loading @@ -1184,6 +1186,8 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable, private Lazy<ActivityLaunchAnimator> mActivityLaunchAnimator; private Lazy<ScrimController> mScrimControllerLazy; private FeatureFlags mFeatureFlags; /** * Injected constructor. See {@link KeyguardModule}. */ Loading Loading @@ -1214,7 +1218,8 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable, Lazy<ShadeController> shadeControllerLazy, Lazy<NotificationShadeWindowController> notificationShadeWindowControllerLazy, Lazy<ActivityLaunchAnimator> activityLaunchAnimator, Lazy<ScrimController> scrimControllerLazy) { Lazy<ScrimController> scrimControllerLazy, FeatureFlags featureFlags) { mContext = context; mUserTracker = userTracker; mFalsingCollector = falsingCollector; Loading Loading @@ -1269,6 +1274,8 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable, mDreamOpenAnimationDuration = (int) DREAMING_ANIMATION_DURATION_MS; mDreamCloseAnimationDuration = (int) LOCKSCREEN_ANIMATION_DURATION_MS; mFeatureFlags = featureFlags; } public void userActivity() { Loading Loading @@ -1682,14 +1689,17 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable, } /** * A dream started. We should lock after the usual screen-off lock timeout but only * if there is a secure lock pattern. * A dream started. We should lock after the usual screen-off lock timeout regardless if * there is a secure lock pattern or not */ public void onDreamingStarted() { mUpdateMonitor.dispatchDreamingStarted(); synchronized (this) { final boolean alwaysShowKeyguard = mFeatureFlags.isEnabled(Flags.LOCKSCREEN_WITHOUT_SECURE_LOCK_WHEN_DREAMING); if (mDeviceInteractive && mLockPatternUtils.isSecure(KeyguardUpdateMonitor.getCurrentUser())) { && (alwaysShowKeyguard || mLockPatternUtils.isSecure(KeyguardUpdateMonitor.getCurrentUser()))) { doKeyguardLaterLocked(); } } Loading packages/SystemUI/src/com/android/systemui/keyguard/dagger/KeyguardModule.java +5 −2 Original line number Diff line number Diff line Loading @@ -39,6 +39,7 @@ import com.android.systemui.dagger.SysUISingleton; import com.android.systemui.dagger.qualifiers.UiBackground; import com.android.systemui.dreams.DreamOverlayStateController; import com.android.systemui.dump.DumpManager; import com.android.systemui.flags.FeatureFlags; import com.android.systemui.keyguard.DismissCallbackRegistry; import com.android.systemui.keyguard.KeyguardUnlockAnimationController; import com.android.systemui.keyguard.KeyguardViewMediator; Loading Loading @@ -119,7 +120,8 @@ public class KeyguardModule { Lazy<ShadeController> shadeController, Lazy<NotificationShadeWindowController> notificationShadeWindowController, Lazy<ActivityLaunchAnimator> activityLaunchAnimator, Lazy<ScrimController> scrimControllerLazy) { Lazy<ScrimController> scrimControllerLazy, FeatureFlags featureFlags) { return new KeyguardViewMediator( context, userTracker, Loading Loading @@ -149,7 +151,8 @@ public class KeyguardModule { shadeController, notificationShadeWindowController, activityLaunchAnimator, scrimControllerLazy); scrimControllerLazy, featureFlags); } /** */ Loading packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardViewMediatorTest.java +30 −1 Original line number Diff line number Diff line Loading @@ -66,6 +66,8 @@ import com.android.systemui.classifier.FalsingCollectorFake; import com.android.systemui.colorextraction.SysuiColorExtractor; import com.android.systemui.dreams.DreamOverlayStateController; import com.android.systemui.dump.DumpManager; import com.android.systemui.flags.FakeFeatureFlags; import com.android.systemui.flags.Flags; import com.android.systemui.navigationbar.NavigationModeController; import com.android.systemui.settings.UserTracker; import com.android.systemui.shade.NotificationShadeWindowControllerImpl; Loading Loading @@ -142,6 +144,8 @@ public class KeyguardViewMediatorTest extends SysuiTestCase { private @Mock CentralSurfaces mCentralSurfaces; private FakeFeatureFlags mFeatureFlags; @Before public void setUp() throws Exception { MockitoAnnotations.initMocks(this); Loading @@ -160,6 +164,8 @@ public class KeyguardViewMediatorTest extends SysuiTestCase { mColorExtractor, mDumpManager, mKeyguardStateController, mScreenOffAnimationController, mAuthController, mShadeExpansionStateManager, mShadeWindowLogger); mFeatureFlags = new FakeFeatureFlags(); DejankUtils.setImmediate(true); Loading Loading @@ -515,6 +521,28 @@ public class KeyguardViewMediatorTest extends SysuiTestCase { verify(mStatusBarKeyguardViewManager, never()).reset(anyBoolean()); } @Test @TestableLooper.RunWithLooper(setAsMainLooper = true) public void testNotStartingKeyguardWhenFlagIsDisabled() { mViewMediator.setShowingLocked(false); when(mKeyguardStateController.isShowing()).thenReturn(false); mFeatureFlags.set(Flags.LOCKSCREEN_WITHOUT_SECURE_LOCK_WHEN_DREAMING, false); mViewMediator.onDreamingStarted(); assertFalse(mViewMediator.isShowingAndNotOccluded()); } @Test @TestableLooper.RunWithLooper(setAsMainLooper = true) public void testStartingKeyguardWhenFlagIsEnabled() { mViewMediator.setShowingLocked(true); when(mKeyguardStateController.isShowing()).thenReturn(true); mFeatureFlags.set(Flags.LOCKSCREEN_WITHOUT_SECURE_LOCK_WHEN_DREAMING, true); mViewMediator.onDreamingStarted(); assertTrue(mViewMediator.isShowingAndNotOccluded()); } private void createAndStartViewMediator() { mViewMediator = new KeyguardViewMediator( mContext, Loading Loading @@ -545,7 +573,8 @@ public class KeyguardViewMediatorTest extends SysuiTestCase { () -> mShadeController, () -> mNotificationShadeWindowController, () -> mActivityLaunchAnimator, () -> mScrimController); () -> mScrimController, mFeatureFlags); mViewMediator.start(); mViewMediator.registerCentralSurfaces(mCentralSurfaces, null, null, null, null, null); Loading Loading
packages/SystemUI/src/com/android/systemui/flags/Flags.kt +5 −0 Original line number Diff line number Diff line Loading @@ -132,6 +132,11 @@ object Flags { // TODO(b/254512676): Tracking Bug @JvmField val LOCKSCREEN_CUSTOM_CLOCKS = releasedFlag(207, "lockscreen_custom_clocks") // TODO(b/275694445): Tracking Bug @JvmField val LOCKSCREEN_WITHOUT_SECURE_LOCK_WHEN_DREAMING = unreleasedFlag(208, "lockscreen_without_secure_lock_when_dreaming") /** * Whether the clock on a wide lock screen should use the new "stepping" animation for moving * the digits when the clock moves. Loading
packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java +14 −4 Original line number Diff line number Diff line Loading @@ -128,6 +128,8 @@ import com.android.systemui.classifier.FalsingCollector; import com.android.systemui.dagger.qualifiers.UiBackground; import com.android.systemui.dreams.DreamOverlayStateController; import com.android.systemui.dump.DumpManager; import com.android.systemui.flags.FeatureFlags; import com.android.systemui.flags.Flags; import com.android.systemui.keyguard.dagger.KeyguardModule; import com.android.systemui.navigationbar.NavigationModeController; import com.android.systemui.plugins.statusbar.StatusBarStateController; Loading Loading @@ -1184,6 +1186,8 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable, private Lazy<ActivityLaunchAnimator> mActivityLaunchAnimator; private Lazy<ScrimController> mScrimControllerLazy; private FeatureFlags mFeatureFlags; /** * Injected constructor. See {@link KeyguardModule}. */ Loading Loading @@ -1214,7 +1218,8 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable, Lazy<ShadeController> shadeControllerLazy, Lazy<NotificationShadeWindowController> notificationShadeWindowControllerLazy, Lazy<ActivityLaunchAnimator> activityLaunchAnimator, Lazy<ScrimController> scrimControllerLazy) { Lazy<ScrimController> scrimControllerLazy, FeatureFlags featureFlags) { mContext = context; mUserTracker = userTracker; mFalsingCollector = falsingCollector; Loading Loading @@ -1269,6 +1274,8 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable, mDreamOpenAnimationDuration = (int) DREAMING_ANIMATION_DURATION_MS; mDreamCloseAnimationDuration = (int) LOCKSCREEN_ANIMATION_DURATION_MS; mFeatureFlags = featureFlags; } public void userActivity() { Loading Loading @@ -1682,14 +1689,17 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable, } /** * A dream started. We should lock after the usual screen-off lock timeout but only * if there is a secure lock pattern. * A dream started. We should lock after the usual screen-off lock timeout regardless if * there is a secure lock pattern or not */ public void onDreamingStarted() { mUpdateMonitor.dispatchDreamingStarted(); synchronized (this) { final boolean alwaysShowKeyguard = mFeatureFlags.isEnabled(Flags.LOCKSCREEN_WITHOUT_SECURE_LOCK_WHEN_DREAMING); if (mDeviceInteractive && mLockPatternUtils.isSecure(KeyguardUpdateMonitor.getCurrentUser())) { && (alwaysShowKeyguard || mLockPatternUtils.isSecure(KeyguardUpdateMonitor.getCurrentUser()))) { doKeyguardLaterLocked(); } } Loading
packages/SystemUI/src/com/android/systemui/keyguard/dagger/KeyguardModule.java +5 −2 Original line number Diff line number Diff line Loading @@ -39,6 +39,7 @@ import com.android.systemui.dagger.SysUISingleton; import com.android.systemui.dagger.qualifiers.UiBackground; import com.android.systemui.dreams.DreamOverlayStateController; import com.android.systemui.dump.DumpManager; import com.android.systemui.flags.FeatureFlags; import com.android.systemui.keyguard.DismissCallbackRegistry; import com.android.systemui.keyguard.KeyguardUnlockAnimationController; import com.android.systemui.keyguard.KeyguardViewMediator; Loading Loading @@ -119,7 +120,8 @@ public class KeyguardModule { Lazy<ShadeController> shadeController, Lazy<NotificationShadeWindowController> notificationShadeWindowController, Lazy<ActivityLaunchAnimator> activityLaunchAnimator, Lazy<ScrimController> scrimControllerLazy) { Lazy<ScrimController> scrimControllerLazy, FeatureFlags featureFlags) { return new KeyguardViewMediator( context, userTracker, Loading Loading @@ -149,7 +151,8 @@ public class KeyguardModule { shadeController, notificationShadeWindowController, activityLaunchAnimator, scrimControllerLazy); scrimControllerLazy, featureFlags); } /** */ Loading
packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardViewMediatorTest.java +30 −1 Original line number Diff line number Diff line Loading @@ -66,6 +66,8 @@ import com.android.systemui.classifier.FalsingCollectorFake; import com.android.systemui.colorextraction.SysuiColorExtractor; import com.android.systemui.dreams.DreamOverlayStateController; import com.android.systemui.dump.DumpManager; import com.android.systemui.flags.FakeFeatureFlags; import com.android.systemui.flags.Flags; import com.android.systemui.navigationbar.NavigationModeController; import com.android.systemui.settings.UserTracker; import com.android.systemui.shade.NotificationShadeWindowControllerImpl; Loading Loading @@ -142,6 +144,8 @@ public class KeyguardViewMediatorTest extends SysuiTestCase { private @Mock CentralSurfaces mCentralSurfaces; private FakeFeatureFlags mFeatureFlags; @Before public void setUp() throws Exception { MockitoAnnotations.initMocks(this); Loading @@ -160,6 +164,8 @@ public class KeyguardViewMediatorTest extends SysuiTestCase { mColorExtractor, mDumpManager, mKeyguardStateController, mScreenOffAnimationController, mAuthController, mShadeExpansionStateManager, mShadeWindowLogger); mFeatureFlags = new FakeFeatureFlags(); DejankUtils.setImmediate(true); Loading Loading @@ -515,6 +521,28 @@ public class KeyguardViewMediatorTest extends SysuiTestCase { verify(mStatusBarKeyguardViewManager, never()).reset(anyBoolean()); } @Test @TestableLooper.RunWithLooper(setAsMainLooper = true) public void testNotStartingKeyguardWhenFlagIsDisabled() { mViewMediator.setShowingLocked(false); when(mKeyguardStateController.isShowing()).thenReturn(false); mFeatureFlags.set(Flags.LOCKSCREEN_WITHOUT_SECURE_LOCK_WHEN_DREAMING, false); mViewMediator.onDreamingStarted(); assertFalse(mViewMediator.isShowingAndNotOccluded()); } @Test @TestableLooper.RunWithLooper(setAsMainLooper = true) public void testStartingKeyguardWhenFlagIsEnabled() { mViewMediator.setShowingLocked(true); when(mKeyguardStateController.isShowing()).thenReturn(true); mFeatureFlags.set(Flags.LOCKSCREEN_WITHOUT_SECURE_LOCK_WHEN_DREAMING, true); mViewMediator.onDreamingStarted(); assertTrue(mViewMediator.isShowingAndNotOccluded()); } private void createAndStartViewMediator() { mViewMediator = new KeyguardViewMediator( mContext, Loading Loading @@ -545,7 +573,8 @@ public class KeyguardViewMediatorTest extends SysuiTestCase { () -> mShadeController, () -> mNotificationShadeWindowController, () -> mActivityLaunchAnimator, () -> mScrimController); () -> mScrimController, mFeatureFlags); mViewMediator.start(); mViewMediator.registerCentralSurfaces(mCentralSurfaces, null, null, null, null, null); Loading