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
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user