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

Commit 28822be5 authored by Dave Mankoff's avatar Dave Mankoff
Browse files

10/N Ensure KeyguardSecurityContainer always has Callback

This passes the SecurityCallback directly into the
KeyguardSecurityContainer's constructor, rather than setting it during
on-attach.

Fixes: 169231892
Test: atest SystemUITests && manual
Change-Id: Ia9adf399e299768b3b8a70822cfda662a54d803b
parent 9a80cc2e
Loading
Loading
Loading
Loading
+5 −4
Original line number Diff line number Diff line
@@ -163,16 +163,18 @@ public class KeyguardHostViewController extends ViewController<KeyguardHostView>
    @Inject
    public KeyguardHostViewController(KeyguardHostView view,
            KeyguardUpdateMonitor keyguardUpdateMonitor,
            KeyguardSecurityContainerController keyguardSecurityContainerController,
            AudioManager audioManager,
            TelephonyManager telephonyManager,
            ViewMediatorCallback viewMediatorCallback) {
            ViewMediatorCallback viewMediatorCallback,
            KeyguardSecurityContainerController.Factory
                    keyguardSecurityContainerControllerFactory) {
        super(view);
        mKeyguardUpdateMonitor = keyguardUpdateMonitor;
        mKeyguardSecurityContainerController = keyguardSecurityContainerController;
        mAudioManager = audioManager;
        mTelephonyManager = telephonyManager;
        mViewMediatorCallback = viewMediatorCallback;
        mKeyguardSecurityContainerController = keyguardSecurityContainerControllerFactory.create(
                mSecurityCallback);
    }

    /** Initialize the Controller. */
@@ -188,7 +190,6 @@ public class KeyguardHostViewController extends ViewController<KeyguardHostView>
        mViewMediatorCallback.setNeedsInput(mKeyguardSecurityContainerController.needsInput());
        mKeyguardUpdateMonitor.registerCallback(mUpdateCallback);
        mView.setOnKeyListener(mOnKeyListener);
        mKeyguardSecurityContainerController.setSecurityCallback(mSecurityCallback);
        mKeyguardSecurityContainerController.showPrimarySecurityScreen(false);
    }

+49 −7
Original line number Diff line number Diff line
@@ -68,8 +68,8 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard
    private final UiEventLogger mUiEventLogger;
    private final KeyguardStateController mKeyguardStateController;
    private final KeyguardSecurityViewFlipperController mSecurityViewFlipperController;
    private final SecurityCallback mSecurityCallback;

    private SecurityCallback mSecurityCallback;
    private SecurityMode mCurrentSecurityMode = SecurityMode.Invalid;

    private KeyguardSecurityCallback mKeyguardSecurityCallback = new KeyguardSecurityCallback() {
@@ -145,8 +145,7 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard
        }
    };

    @Inject
    KeyguardSecurityContainerController(KeyguardSecurityContainer view,
    private KeyguardSecurityContainerController(KeyguardSecurityContainer view,
            AdminSecondaryLockScreenController.Factory adminSecondaryLockScreenControllerFactory,
            LockPatternUtils lockPatternUtils,
            KeyguardUpdateMonitor keyguardUpdateMonitor,
@@ -154,6 +153,7 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard
            MetricsLogger metricsLogger,
            UiEventLogger uiEventLogger,
            KeyguardStateController keyguardStateController,
            SecurityCallback securityCallback,
            KeyguardSecurityViewFlipperController securityViewFlipperController) {
        super(view);
        mLockPatternUtils = lockPatternUtils;
@@ -162,6 +162,7 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard
        mMetricsLogger = metricsLogger;
        mUiEventLogger = uiEventLogger;
        mKeyguardStateController = keyguardStateController;
        mSecurityCallback = securityCallback;
        mSecurityViewFlipperController = securityViewFlipperController;
        mAdminSecondaryLockScreenController = adminSecondaryLockScreenControllerFactory.create(
                mKeyguardSecurityCallback);
@@ -269,10 +270,6 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard
        }
    }

    public void setSecurityCallback(SecurityCallback securityCallback) {
        mSecurityCallback = securityCallback;
    }

    /**
     * Shows the next security screen if there is one.
     * @param authenticated true if the user entered the correct authentication
@@ -450,4 +447,49 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard
        mCurrentSecurityMode = securityMode;
        return getCurrentSecurityController();
    }

    static class Factory {

        private final KeyguardSecurityContainer mView;
        private final AdminSecondaryLockScreenController.Factory
                mAdminSecondaryLockScreenControllerFactory;
        private final LockPatternUtils mLockPatternUtils;
        private final KeyguardUpdateMonitor mKeyguardUpdateMonitor;
        private final KeyguardSecurityModel mKeyguardSecurityModel;
        private final MetricsLogger mMetricsLogger;
        private final UiEventLogger mUiEventLogger;
        private final KeyguardStateController mKeyguardStateController;
        private final KeyguardSecurityViewFlipperController mSecurityViewFlipperController;

        @Inject
        Factory(KeyguardSecurityContainer view,
                AdminSecondaryLockScreenController.Factory
                        adminSecondaryLockScreenControllerFactory,
                LockPatternUtils lockPatternUtils,
                KeyguardUpdateMonitor keyguardUpdateMonitor,
                KeyguardSecurityModel keyguardSecurityModel,
                MetricsLogger metricsLogger,
                UiEventLogger uiEventLogger,
                KeyguardStateController keyguardStateController,
                KeyguardSecurityViewFlipperController securityViewFlipperController) {
            mView = view;
            mAdminSecondaryLockScreenControllerFactory = adminSecondaryLockScreenControllerFactory;
            mLockPatternUtils = lockPatternUtils;
            mKeyguardUpdateMonitor = keyguardUpdateMonitor;
            mKeyguardSecurityModel = keyguardSecurityModel;
            mMetricsLogger = metricsLogger;
            mUiEventLogger = uiEventLogger;
            mKeyguardStateController = keyguardStateController;
            mSecurityViewFlipperController = securityViewFlipperController;
        }

        public KeyguardSecurityContainerController create(
                SecurityCallback securityCallback) {
            return new KeyguardSecurityContainerController(mView,
                    mAdminSecondaryLockScreenControllerFactory, mLockPatternUtils,
                    mKeyguardUpdateMonitor, mKeyguardSecurityModel, mMetricsLogger, mUiEventLogger,
                    mKeyguardStateController, securityCallback, mSecurityViewFlipperController);
        }

    }
}
+11 −4
Original line number Diff line number Diff line
@@ -16,8 +16,10 @@

package com.android.keyguard;

import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

import android.media.AudioManager;
import android.telephony.TelephonyManager;
@@ -47,13 +49,15 @@ public class KeyguardHostViewControllerTest extends SysuiTestCase {
    @Mock
    private KeyguardHostView mKeyguardHostView;
    @Mock
    private KeyguardSecurityContainerController mKeyguardSecurityContainerController;
    @Mock
    private AudioManager mAudioManager;
    @Mock
    private TelephonyManager mTelephonyManager;
    @Mock
    private ViewMediatorCallback mViewMediatorCallback;
    @Mock
    KeyguardSecurityContainerController.Factory mKeyguardSecurityContainerControllerFactory;
    @Mock
    private KeyguardSecurityContainerController mKeyguardSecurityContainerController;

    @Rule
    public MockitoRule mMockitoRule = MockitoJUnit.rule();
@@ -62,9 +66,12 @@ public class KeyguardHostViewControllerTest extends SysuiTestCase {

    @Before
    public void setup() {
        when(mKeyguardSecurityContainerControllerFactory.create(any(
                KeyguardSecurityContainer.SecurityCallback.class)))
                .thenReturn(mKeyguardSecurityContainerController);
        mKeyguardHostViewController = new KeyguardHostViewController(
                mKeyguardHostView, mKeyguardUpdateMonitor, mKeyguardSecurityContainerController,
                mAudioManager, mTelephonyManager, mViewMediatorCallback);
                mKeyguardHostView, mKeyguardUpdateMonitor, mAudioManager, mTelephonyManager,
                mViewMediatorCallback, mKeyguardSecurityContainerControllerFactory);
    }

    @Test
+3 −4
Original line number Diff line number Diff line
@@ -89,12 +89,11 @@ public class KeyguardSecurityContainerControllerTest extends SysuiTestCase {
                .thenReturn(mAdminSecondaryLockScreenController);
        when(mSecurityViewFlipper.getWindowInsetsController()).thenReturn(mWindowInsetsController);

        mKeyguardSecurityContainerController = new KeyguardSecurityContainerController(
        mKeyguardSecurityContainerController = new KeyguardSecurityContainerController.Factory(
                mView,  mAdminSecondaryLockScreenControllerFactory, mLockPatternUtils,
                mKeyguardUpdateMonitor, mKeyguardSecurityModel, mMetricsLogger, mUiEventLogger,
                mKeyguardStateController, mKeyguardSecurityViewFlipperController);

        mKeyguardSecurityContainerController.setSecurityCallback(mSecurityCallback);
                mKeyguardStateController, mKeyguardSecurityViewFlipperController)
                .create(mSecurityCallback);
    }

    @Test