Loading packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java +1 −1 Original line number Diff line number Diff line Loading @@ -128,7 +128,7 @@ public class KeyguardSecurityContainer extends FrameLayout implements KeyguardSe public KeyguardSecurityContainer(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); mSecurityModel = new KeyguardSecurityModel(context); mSecurityModel = Dependency.get(KeyguardSecurityModel.class); mLockPatternUtils = new LockPatternUtils(context); mUpdateMonitor = Dependency.get(KeyguardUpdateMonitor.class); mSpringAnimation = new SpringAnimation(this, DynamicAnimation.Y); Loading packages/SystemUI/src/com/android/keyguard/KeyguardSecurityModel.java +6 −1 Original line number Diff line number Diff line Loading @@ -25,6 +25,10 @@ import com.android.internal.telephony.IccCardConstants; import com.android.internal.widget.LockPatternUtils; import com.android.systemui.Dependency; import javax.inject.Inject; import javax.inject.Singleton; @Singleton public class KeyguardSecurityModel { /** Loading @@ -46,6 +50,7 @@ public class KeyguardSecurityModel { private LockPatternUtils mLockPatternUtils; @Inject KeyguardSecurityModel(Context context) { mContext = context; mLockPatternUtils = new LockPatternUtils(context); Loading @@ -57,7 +62,7 @@ public class KeyguardSecurityModel { mLockPatternUtils = utils; } SecurityMode getSecurityMode(int userId) { public SecurityMode getSecurityMode(int userId) { KeyguardUpdateMonitor monitor = Dependency.get(KeyguardUpdateMonitor.class); if (mIsPukScreenAvailable && SubscriptionManager.isValidSubscriptionId( Loading packages/SystemUI/src/com/android/systemui/Dependency.java +3 −0 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ import com.android.internal.annotations.VisibleForTesting; import com.android.internal.logging.MetricsLogger; import com.android.internal.statusbar.IStatusBarService; import com.android.internal.util.Preconditions; import com.android.keyguard.KeyguardSecurityModel; import com.android.keyguard.KeyguardUpdateMonitor; import com.android.keyguard.clock.ClockManager; import com.android.settingslib.bluetooth.LocalBluetoothManager; Loading Loading @@ -316,6 +317,7 @@ public class Dependency { @Inject Lazy<FalsingManager> mFalsingManager; @Inject Lazy<SysUiState> mSysUiStateFlagsContainer; @Inject Lazy<AlarmManager> mAlarmManager; @Inject Lazy<KeyguardSecurityModel> mKeyguardSecurityModel; @Inject public Dependency() { Loading Loading @@ -501,6 +503,7 @@ public class Dependency { mProviders.put(FalsingManager.class, mFalsingManager::get); mProviders.put(SysUiState.class, mSysUiStateFlagsContainer::get); mProviders.put(AlarmManager.class, mAlarmManager::get); mProviders.put(KeyguardSecurityModel.class, mKeyguardSecurityModel::get); // TODO(b/118592525): to support multi-display , we start to add something which is // per-display, while others may be global. I think it's time to add Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBouncer.java +5 −10 Original line number Diff line number Diff line Loading @@ -17,7 +17,6 @@ package com.android.systemui.statusbar.phone; import static com.android.keyguard.KeyguardSecurityModel.SecurityMode; import static com.android.systemui.DejankUtils.whitelistIpcs; import static com.android.systemui.plugins.ActivityStarter.OnDismissAction; import android.content.Context; Loading @@ -38,11 +37,13 @@ import android.view.WindowInsets; import com.android.internal.widget.LockPatternUtils; import com.android.keyguard.KeyguardHostView; import com.android.keyguard.KeyguardSecurityModel; import com.android.keyguard.KeyguardSecurityView; import com.android.keyguard.KeyguardUpdateMonitor; import com.android.keyguard.KeyguardUpdateMonitorCallback; import com.android.keyguard.ViewMediatorCallback; import com.android.systemui.DejankUtils; import com.android.systemui.Dependency; import com.android.systemui.R; import com.android.systemui.keyguard.DismissCallbackRegistry; import com.android.systemui.plugins.FalsingManager; Loading Loading @@ -461,16 +462,10 @@ public class KeyguardBouncer { * notifications on Keyguard, like SIM PIN/PUK. */ public boolean needsFullscreenBouncer() { // TODO(b/140059518) return whitelistIpcs(() -> { ensureView(); if (mKeyguardView != null) { SecurityMode mode = mKeyguardView.getSecurityMode(); SecurityMode mode = Dependency.get(KeyguardSecurityModel.class).getSecurityMode( KeyguardUpdateMonitor.getCurrentUser()); return mode == SecurityMode.SimPin || mode == SecurityMode.SimPuk; } return false; }); } /** * Like {@link #needsFullscreenBouncer}, but uses the currently visible security method, which Loading packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/KeyguardBouncerTest.java +5 −8 Original line number Diff line number Diff line Loading @@ -89,6 +89,8 @@ public class KeyguardBouncerTest extends SysuiTestCase { private KeyguardBypassController mKeyguardBypassController; @Mock private Handler mHandler; @Mock private KeyguardSecurityModel mKeyguardSecurityModel; private KeyguardBouncer mBouncer; Loading @@ -97,6 +99,9 @@ public class KeyguardBouncerTest extends SysuiTestCase { com.android.systemui.util.Assert.sMainLooper = TestableLooper.get(this).getLooper(); MockitoAnnotations.initMocks(this); mDependency.injectTestDependency(KeyguardUpdateMonitor.class, mKeyguardUpdateMonitor); mDependency.injectTestDependency(KeyguardSecurityModel.class, mKeyguardSecurityModel); when(mKeyguardSecurityModel.getSecurityMode(anyInt())) .thenReturn(KeyguardSecurityModel.SecurityMode.None); DejankUtils.setImmediate(true); final ViewGroup container = new FrameLayout(getContext()); when(mKeyguardHostView.getViewTreeObserver()).thenReturn(mViewTreeObserver); Loading Loading @@ -305,14 +310,6 @@ public class KeyguardBouncerTest extends SysuiTestCase { verify(mKeyguardHostView).setTranslationY(anyFloat()); } @Test public void testNeedsFullscreenBouncer_asksKeyguardView() { mBouncer.ensureView(); mBouncer.needsFullscreenBouncer(); verify(mKeyguardHostView).getSecurityMode(); verify(mKeyguardHostView, never()).getCurrentSecurityMode(); } @Test public void testIsFullscreenBouncer_asksKeyguardView() { mBouncer.ensureView(); Loading Loading
packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java +1 −1 Original line number Diff line number Diff line Loading @@ -128,7 +128,7 @@ public class KeyguardSecurityContainer extends FrameLayout implements KeyguardSe public KeyguardSecurityContainer(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); mSecurityModel = new KeyguardSecurityModel(context); mSecurityModel = Dependency.get(KeyguardSecurityModel.class); mLockPatternUtils = new LockPatternUtils(context); mUpdateMonitor = Dependency.get(KeyguardUpdateMonitor.class); mSpringAnimation = new SpringAnimation(this, DynamicAnimation.Y); Loading
packages/SystemUI/src/com/android/keyguard/KeyguardSecurityModel.java +6 −1 Original line number Diff line number Diff line Loading @@ -25,6 +25,10 @@ import com.android.internal.telephony.IccCardConstants; import com.android.internal.widget.LockPatternUtils; import com.android.systemui.Dependency; import javax.inject.Inject; import javax.inject.Singleton; @Singleton public class KeyguardSecurityModel { /** Loading @@ -46,6 +50,7 @@ public class KeyguardSecurityModel { private LockPatternUtils mLockPatternUtils; @Inject KeyguardSecurityModel(Context context) { mContext = context; mLockPatternUtils = new LockPatternUtils(context); Loading @@ -57,7 +62,7 @@ public class KeyguardSecurityModel { mLockPatternUtils = utils; } SecurityMode getSecurityMode(int userId) { public SecurityMode getSecurityMode(int userId) { KeyguardUpdateMonitor monitor = Dependency.get(KeyguardUpdateMonitor.class); if (mIsPukScreenAvailable && SubscriptionManager.isValidSubscriptionId( Loading
packages/SystemUI/src/com/android/systemui/Dependency.java +3 −0 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ import com.android.internal.annotations.VisibleForTesting; import com.android.internal.logging.MetricsLogger; import com.android.internal.statusbar.IStatusBarService; import com.android.internal.util.Preconditions; import com.android.keyguard.KeyguardSecurityModel; import com.android.keyguard.KeyguardUpdateMonitor; import com.android.keyguard.clock.ClockManager; import com.android.settingslib.bluetooth.LocalBluetoothManager; Loading Loading @@ -316,6 +317,7 @@ public class Dependency { @Inject Lazy<FalsingManager> mFalsingManager; @Inject Lazy<SysUiState> mSysUiStateFlagsContainer; @Inject Lazy<AlarmManager> mAlarmManager; @Inject Lazy<KeyguardSecurityModel> mKeyguardSecurityModel; @Inject public Dependency() { Loading Loading @@ -501,6 +503,7 @@ public class Dependency { mProviders.put(FalsingManager.class, mFalsingManager::get); mProviders.put(SysUiState.class, mSysUiStateFlagsContainer::get); mProviders.put(AlarmManager.class, mAlarmManager::get); mProviders.put(KeyguardSecurityModel.class, mKeyguardSecurityModel::get); // TODO(b/118592525): to support multi-display , we start to add something which is // per-display, while others may be global. I think it's time to add Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBouncer.java +5 −10 Original line number Diff line number Diff line Loading @@ -17,7 +17,6 @@ package com.android.systemui.statusbar.phone; import static com.android.keyguard.KeyguardSecurityModel.SecurityMode; import static com.android.systemui.DejankUtils.whitelistIpcs; import static com.android.systemui.plugins.ActivityStarter.OnDismissAction; import android.content.Context; Loading @@ -38,11 +37,13 @@ import android.view.WindowInsets; import com.android.internal.widget.LockPatternUtils; import com.android.keyguard.KeyguardHostView; import com.android.keyguard.KeyguardSecurityModel; import com.android.keyguard.KeyguardSecurityView; import com.android.keyguard.KeyguardUpdateMonitor; import com.android.keyguard.KeyguardUpdateMonitorCallback; import com.android.keyguard.ViewMediatorCallback; import com.android.systemui.DejankUtils; import com.android.systemui.Dependency; import com.android.systemui.R; import com.android.systemui.keyguard.DismissCallbackRegistry; import com.android.systemui.plugins.FalsingManager; Loading Loading @@ -461,16 +462,10 @@ public class KeyguardBouncer { * notifications on Keyguard, like SIM PIN/PUK. */ public boolean needsFullscreenBouncer() { // TODO(b/140059518) return whitelistIpcs(() -> { ensureView(); if (mKeyguardView != null) { SecurityMode mode = mKeyguardView.getSecurityMode(); SecurityMode mode = Dependency.get(KeyguardSecurityModel.class).getSecurityMode( KeyguardUpdateMonitor.getCurrentUser()); return mode == SecurityMode.SimPin || mode == SecurityMode.SimPuk; } return false; }); } /** * Like {@link #needsFullscreenBouncer}, but uses the currently visible security method, which Loading
packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/KeyguardBouncerTest.java +5 −8 Original line number Diff line number Diff line Loading @@ -89,6 +89,8 @@ public class KeyguardBouncerTest extends SysuiTestCase { private KeyguardBypassController mKeyguardBypassController; @Mock private Handler mHandler; @Mock private KeyguardSecurityModel mKeyguardSecurityModel; private KeyguardBouncer mBouncer; Loading @@ -97,6 +99,9 @@ public class KeyguardBouncerTest extends SysuiTestCase { com.android.systemui.util.Assert.sMainLooper = TestableLooper.get(this).getLooper(); MockitoAnnotations.initMocks(this); mDependency.injectTestDependency(KeyguardUpdateMonitor.class, mKeyguardUpdateMonitor); mDependency.injectTestDependency(KeyguardSecurityModel.class, mKeyguardSecurityModel); when(mKeyguardSecurityModel.getSecurityMode(anyInt())) .thenReturn(KeyguardSecurityModel.SecurityMode.None); DejankUtils.setImmediate(true); final ViewGroup container = new FrameLayout(getContext()); when(mKeyguardHostView.getViewTreeObserver()).thenReturn(mViewTreeObserver); Loading Loading @@ -305,14 +310,6 @@ public class KeyguardBouncerTest extends SysuiTestCase { verify(mKeyguardHostView).setTranslationY(anyFloat()); } @Test public void testNeedsFullscreenBouncer_asksKeyguardView() { mBouncer.ensureView(); mBouncer.needsFullscreenBouncer(); verify(mKeyguardHostView).getSecurityMode(); verify(mKeyguardHostView, never()).getCurrentSecurityMode(); } @Test public void testIsFullscreenBouncer_asksKeyguardView() { mBouncer.ensureView(); Loading