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

Commit c8f16e80 authored by Lucas Dupin's avatar Lucas Dupin
Browse files

Single source of truth for auth state

Merging UnlockMethodCache and KeyguardMonitor into KeyguardStateController,
making it injectable and introducing KeyguardStateController#isUnlocked
in order to make it easier to keep track of the lock screen state.

Test: atest SystemUiTests
Test: unlock with face, lock again
Test: unlock with password, lock again
Bug: 139363827
Change-Id: I37ac8c7826101852c61382559be9868125c15fac
parent 3b745ddf
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -49,7 +49,7 @@ import com.android.keyguard.KeyguardSecurityModel.SecurityMode;
import com.android.systemui.Dependency;
import com.android.systemui.R;
import com.android.systemui.SystemUIFactory;
import com.android.systemui.statusbar.phone.UnlockMethodCache;
import com.android.systemui.statusbar.policy.KeyguardStateController;
import com.android.systemui.util.InjectionInflationController;

public class KeyguardSecurityContainer extends FrameLayout implements KeyguardSecurityView {
@@ -94,7 +94,7 @@ public class KeyguardSecurityContainer extends FrameLayout implements KeyguardSe
    private final SpringAnimation mSpringAnimation;
    private final VelocityTracker mVelocityTracker = VelocityTracker.obtain();
    private final KeyguardUpdateMonitor mUpdateMonitor;
    private final UnlockMethodCache mUnlockMethodCache;
    private final KeyguardStateController mKeyguardStateController;

    private final MetricsLogger mMetricsLogger = Dependency.get(MetricsLogger.class);
    private float mLastTouchY = -1;
@@ -134,8 +134,8 @@ public class KeyguardSecurityContainer extends FrameLayout implements KeyguardSe
        mSpringAnimation = new SpringAnimation(this, DynamicAnimation.Y);
        mInjectionInflationController =  new InjectionInflationController(
            SystemUIFactory.getInstance().getRootComponent());
        mUnlockMethodCache = UnlockMethodCache.getInstance(context);
        mViewConfiguration = ViewConfiguration.get(context);
        mKeyguardStateController = Dependency.get(KeyguardStateController.class);
    }

    public void setSecurityCallback(SecurityCallback callback) {
@@ -272,7 +272,7 @@ public class KeyguardSecurityContainer extends FrameLayout implements KeyguardSe
     */
    private void updateBiometricRetry() {
        SecurityMode securityMode = getSecurityMode();
        mSwipeUpToRetry = mUnlockMethodCache.isFaceAuthEnabled()
        mSwipeUpToRetry = mKeyguardStateController.isFaceAuthEnabled()
                && securityMode != SecurityMode.SimPin
                && securityMode != SecurityMode.SimPuk
                && securityMode != SecurityMode.None;
+3 −3
Original line number Diff line number Diff line
@@ -97,7 +97,7 @@ import com.android.systemui.statusbar.policy.DeviceProvisionedController;
import com.android.systemui.statusbar.policy.ExtensionController;
import com.android.systemui.statusbar.policy.FlashlightController;
import com.android.systemui.statusbar.policy.HotspotController;
import com.android.systemui.statusbar.policy.KeyguardMonitor;
import com.android.systemui.statusbar.policy.KeyguardStateController;
import com.android.systemui.statusbar.policy.LocationController;
import com.android.systemui.statusbar.policy.NetworkController;
import com.android.systemui.statusbar.policy.NextAlarmController;
@@ -221,7 +221,7 @@ public class Dependency {
    @Inject Lazy<FlashlightController> mFlashlightController;
    @Inject Lazy<UserSwitcherController> mUserSwitcherController;
    @Inject Lazy<UserInfoController> mUserInfoController;
    @Inject Lazy<KeyguardMonitor> mKeyguardMonitor;
    @Inject Lazy<KeyguardStateController> mKeyguardMonitor;
    @Inject Lazy<KeyguardUpdateMonitor> mKeyguardUpdateMonitor;
    @Inject Lazy<BatteryController> mBatteryController;
    @Inject Lazy<NightDisplayListener> mNightDisplayListener;
@@ -355,7 +355,7 @@ public class Dependency {

        mProviders.put(FlashlightController.class, mFlashlightController::get);

        mProviders.put(KeyguardMonitor.class, mKeyguardMonitor::get);
        mProviders.put(KeyguardStateController.class, mKeyguardMonitor::get);

        mProviders.put(KeyguardUpdateMonitor.class, mKeyguardUpdateMonitor::get);

+4 −3
Original line number Diff line number Diff line
@@ -48,8 +48,8 @@ import com.android.systemui.statusbar.policy.FlashlightController;
import com.android.systemui.statusbar.policy.FlashlightControllerImpl;
import com.android.systemui.statusbar.policy.HotspotController;
import com.android.systemui.statusbar.policy.HotspotControllerImpl;
import com.android.systemui.statusbar.policy.KeyguardMonitor;
import com.android.systemui.statusbar.policy.KeyguardMonitorImpl;
import com.android.systemui.statusbar.policy.KeyguardStateController;
import com.android.systemui.statusbar.policy.KeyguardStateControllerImpl;
import com.android.systemui.statusbar.policy.LocationController;
import com.android.systemui.statusbar.policy.LocationControllerImpl;
import com.android.systemui.statusbar.policy.NetworkController;
@@ -146,7 +146,8 @@ public abstract class DependencyBinder {
    /**
     */
    @Binds
    public abstract KeyguardMonitor provideKeyguardMonitor(KeyguardMonitorImpl controllerImpl);
    public abstract KeyguardStateController provideKeyguardMonitor(
            KeyguardStateControllerImpl controllerImpl);

    /**
     */
+6 −6
Original line number Diff line number Diff line
@@ -47,8 +47,7 @@ import com.android.systemui.statusbar.phone.ScrimController;
import com.android.systemui.statusbar.phone.ScrimState;
import com.android.systemui.statusbar.phone.StatusBar;
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
import com.android.systemui.statusbar.phone.UnlockMethodCache;
import com.android.systemui.statusbar.policy.KeyguardMonitor;
import com.android.systemui.statusbar.policy.KeyguardStateController;
import com.android.systemui.volume.VolumeDialogComponent;

import java.util.function.Consumer;
@@ -136,10 +135,11 @@ public class SystemUIFactory {
            LockPatternUtils lockPatternUtils, ViewGroup container,
            DismissCallbackRegistry dismissCallbackRegistry,
            KeyguardBouncer.BouncerExpansionCallback expansionCallback,
            FalsingManager falsingManager, KeyguardBypassController bypassController) {
            KeyguardStateController keyguardStateController, FalsingManager falsingManager,
            KeyguardBypassController bypassController) {
        return new KeyguardBouncer(context, callback, lockPatternUtils, container,
                dismissCallbackRegistry, falsingManager,
                expansionCallback, UnlockMethodCache.getInstance(context),
                expansionCallback, keyguardStateController,
                Dependency.get(KeyguardUpdateMonitor.class), bypassController,
                new Handler(Looper.getMainLooper()));
    }
@@ -149,9 +149,9 @@ public class SystemUIFactory {
            LockscreenWallpaper lockscreenWallpaper,
            TriConsumer<ScrimState, Float, GradientColors> scrimStateListener,
            Consumer<Integer> scrimVisibleListener, DozeParameters dozeParameters,
            AlarmManager alarmManager, KeyguardMonitor keyguardMonitor) {
            AlarmManager alarmManager, KeyguardStateController keyguardStateController) {
        return new ScrimController(scrimBehind, scrimInFront, scrimForBubble, scrimStateListener,
                scrimVisibleListener, dozeParameters, alarmManager, keyguardMonitor);
                scrimVisibleListener, dozeParameters, alarmManager, keyguardStateController);
    }

    public NotificationIconAreaController createNotificationIconAreaController(Context context,
+12 −9
Original line number Diff line number Diff line
@@ -96,8 +96,8 @@ import com.android.systemui.plugins.GlobalActions.GlobalActionsManager;
import com.android.systemui.plugins.GlobalActionsPanelPlugin;
import com.android.systemui.statusbar.phone.ScrimController;
import com.android.systemui.statusbar.phone.StatusBarWindowController;
import com.android.systemui.statusbar.phone.UnlockMethodCache;
import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.systemui.statusbar.policy.KeyguardStateController;
import com.android.systemui.util.EmergencyDialerConstants;
import com.android.systemui.util.leak.RotationUtils;
import com.android.systemui.volume.SystemUIInterpolators.LogAccelerateInterpolator;
@@ -213,13 +213,16 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener,
        Dependency.get(ConfigurationController.class).addCallback(this);

        mActivityStarter = Dependency.get(ActivityStarter.class);
        UnlockMethodCache unlockMethodCache = UnlockMethodCache.getInstance(context);
        unlockMethodCache.addListener(
                () -> {
        KeyguardStateController keyguardStateController =
                Dependency.get(KeyguardStateController.class);
        keyguardStateController.addCallback(new KeyguardStateController.Callback() {
            @Override
            public void onUnlockedChanged() {
                if (mDialog != null && mDialog.mPanelController != null) {
                        boolean locked = !unlockMethodCache.canSkipBouncer();
                    boolean locked = !keyguardStateController.canDismissLockScreen();
                    mDialog.mPanelController.onDeviceLockStateChanged(locked);
                }
            }
        });
    }

Loading