Loading core/res/res/values/bools.xml +1 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ <bool name="kg_enable_camera_default_widget">true</bool> <bool name="kg_center_small_widgets_vertically">false</bool> <bool name="kg_top_align_page_shrink_on_bouncer_visible">true</bool> <bool name="kg_wake_on_acquire_start">false</bool> <bool name="action_bar_embed_tabs">true</bool> <bool name="split_action_bar_is_narrow">true</bool> <bool name="preferences_prefer_dual_pane">false</bool> Loading core/res/res/values/symbols.xml +1 −0 Original line number Diff line number Diff line Loading @@ -2831,6 +2831,7 @@ <java-symbol type="dimen" name="fast_scroller_minimum_touch_target" /> <java-symbol type="array" name="config_cdma_international_roaming_indicators" /> <java-symbol type="string" name="kg_text_message_separator" /> <java-symbol type="bool" name="kg_wake_on_acquire_start" /> <java-symbol type="bool" name="config_use_sim_language_file" /> <java-symbol type="bool" name="config_LTE_eri_for_network_name" /> Loading packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java +16 −1 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import static android.hardware.biometrics.BiometricConstants.BIOMETRIC_LOCKOUT_N import static android.hardware.biometrics.BiometricConstants.BIOMETRIC_LOCKOUT_PERMANENT; import static android.hardware.biometrics.BiometricConstants.BIOMETRIC_LOCKOUT_TIMED; import static android.hardware.biometrics.BiometricConstants.LockoutMode; import static android.hardware.biometrics.BiometricFingerprintConstants.FINGERPRINT_ACQUIRED_START; import static android.os.BatteryManager.BATTERY_STATUS_UNKNOWN; import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_BOOT; Loading Loading @@ -104,8 +105,10 @@ import android.os.Handler; import android.os.IRemoteCallback; import android.os.Looper; import android.os.Message; import android.os.PowerManager; import android.os.RemoteException; import android.os.ServiceManager; import android.os.SystemClock; import android.os.Trace; import android.os.UserHandle; import android.os.UserManager; Loading Loading @@ -356,6 +359,8 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab private final Executor mBackgroundExecutor; private SensorPrivacyManager mSensorPrivacyManager; private final ActiveUnlockConfig mActiveUnlockConfig; private final PowerManager mPowerManager; private final boolean mWakeOnFingerprintAcquiredStart; /** * Short delay before restarting fingerprint authentication after a successful try. This should Loading Loading @@ -805,6 +810,11 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab private void handleFingerprintAcquired( @BiometricFingerprintConstants.FingerprintAcquired int acquireInfo) { Assert.isMainThread(); if (mWakeOnFingerprintAcquiredStart && acquireInfo == FINGERPRINT_ACQUIRED_START) { mPowerManager.wakeUp( SystemClock.uptimeMillis(), PowerManager.WAKE_REASON_GESTURE, "com.android.systemui.keyguard:FINGERPRINT_ACQUIRED_START"); } for (int i = 0; i < mCallbacks.size(); i++) { KeyguardUpdateMonitorCallback cb = mCallbacks.get(i).get(); if (cb != null) { Loading Loading @@ -1895,7 +1905,8 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab KeyguardUpdateMonitorLogger logger, UiEventLogger uiEventLogger, // This has to be a provider because SessionTracker depends on KeyguardUpdateMonitor :( Provider<SessionTracker> sessionTrackerProvider) { Provider<SessionTracker> sessionTrackerProvider, PowerManager powerManager) { mContext = context; mSubscriptionManager = SubscriptionManager.from(context); mTelephonyListenerManager = telephonyListenerManager; Loading @@ -1916,7 +1927,10 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab mLogger = logger; mUiEventLogger = uiEventLogger; mSessionTrackerProvider = sessionTrackerProvider; mPowerManager = powerManager; mActiveUnlockConfig.setKeyguardUpdateMonitor(this); mWakeOnFingerprintAcquiredStart = context.getResources() .getBoolean(com.android.internal.R.bool.kg_wake_on_acquire_start); mHandler = new Handler(mainLooper) { @Override Loading Loading @@ -3705,6 +3719,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab pw.println(" getUserHasTrust()=" + getUserHasTrust(getCurrentUser())); pw.println(" getUserUnlockedWithBiometric()=" + getUserUnlockedWithBiometric(getCurrentUser())); pw.println(" mWakeOnFingerprintAcquiredStart=" + mWakeOnFingerprintAcquiredStart); pw.println(" SIM States:"); for (SimData data : mSimDatas.values()) { pw.println(" " + data.toString()); Loading packages/SystemUI/tests/src/com/android/keyguard/KeyguardUpdateMonitorTest.java +34 −1 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.keyguard; import static android.app.StatusBarManager.SESSION_KEYGUARD; import static android.hardware.biometrics.BiometricFingerprintConstants.FINGERPRINT_ACQUIRED_START; import static android.hardware.biometrics.BiometricFingerprintConstants.FINGERPRINT_ERROR_LOCKOUT; import static android.telephony.SubscriptionManager.DATA_ROAMING_DISABLE; import static android.telephony.SubscriptionManager.NAME_SOURCE_CARRIER_ID; Loading @@ -30,6 +31,7 @@ import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.anyLong; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.atLeastOnce; Loading Loading @@ -72,6 +74,7 @@ import android.os.Bundle; import android.os.CancellationSignal; import android.os.Handler; import android.os.IRemoteCallback; import android.os.PowerManager; import android.os.RemoteException; import android.os.UserHandle; import android.os.UserManager; Loading Loading @@ -197,6 +200,8 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase { private SessionTracker mSessionTracker; @Mock private UiEventLogger mUiEventLogger; @Mock private PowerManager mPowerManager; private final int mCurrentUserId = 100; private final UserInfo mCurrentUserInfo = new UserInfo(mCurrentUserId, "Test user", 0); Loading Loading @@ -1559,6 +1564,28 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase { assertThat(mKeyguardUpdateMonitor.shouldListenForFingerprint(anyBoolean())).isEqualTo(true); } @Test public void testFingerAcquired_wakesUpPowerManager() { mContext.getOrCreateTestableResources().addOverride( com.android.internal.R.bool.kg_wake_on_acquire_start, true); mSpiedContext = spy(mContext); mKeyguardUpdateMonitor = new TestableKeyguardUpdateMonitor(mSpiedContext); fingerprintAcquireStart(); verify(mPowerManager).wakeUp(anyLong(), anyInt(), anyString()); } @Test public void testFingerAcquired_doesNotWakeUpPowerManager() { mContext.getOrCreateTestableResources().addOverride( com.android.internal.R.bool.kg_wake_on_acquire_start, false); mSpiedContext = spy(mContext); mKeyguardUpdateMonitor = new TestableKeyguardUpdateMonitor(mSpiedContext); fingerprintAcquireStart(); verify(mPowerManager, never()).wakeUp(anyLong(), anyInt(), anyString()); } private void faceAuthEnabled() { // this ensures KeyguardUpdateMonitor updates the cached mIsFaceEnrolled flag using the // face manager mock wire-up in setup() Loading Loading @@ -1607,6 +1634,11 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase { .onAuthenticationError(FINGERPRINT_ERROR_LOCKOUT, "Fingerprint locked out"); } private void fingerprintAcquireStart() { mKeyguardUpdateMonitor.mFingerprintAuthenticationCallback .onAuthenticationAcquired(FINGERPRINT_ACQUIRED_START); } private void triggerSuccessfulFaceAuth() { mKeyguardUpdateMonitor.requestFaceAuth(true, FaceAuthApiRequestReason.UDFPS_POINTER_DOWN); verify(mFaceManager).authenticate(any(), Loading Loading @@ -1728,7 +1760,8 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase { mStatusBarStateController, mLockPatternUtils, mAuthController, mTelephonyListenerManager, mInteractionJankMonitor, mLatencyTracker, mActiveUnlockConfig, mKeyguardUpdateMonitorLogger, mUiEventLogger, () -> mSessionTracker); mKeyguardUpdateMonitorLogger, mUiEventLogger, () -> mSessionTracker, mPowerManager); setStrongAuthTracker(KeyguardUpdateMonitorTest.this.mStrongAuthTracker); } Loading Loading
core/res/res/values/bools.xml +1 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ <bool name="kg_enable_camera_default_widget">true</bool> <bool name="kg_center_small_widgets_vertically">false</bool> <bool name="kg_top_align_page_shrink_on_bouncer_visible">true</bool> <bool name="kg_wake_on_acquire_start">false</bool> <bool name="action_bar_embed_tabs">true</bool> <bool name="split_action_bar_is_narrow">true</bool> <bool name="preferences_prefer_dual_pane">false</bool> Loading
core/res/res/values/symbols.xml +1 −0 Original line number Diff line number Diff line Loading @@ -2831,6 +2831,7 @@ <java-symbol type="dimen" name="fast_scroller_minimum_touch_target" /> <java-symbol type="array" name="config_cdma_international_roaming_indicators" /> <java-symbol type="string" name="kg_text_message_separator" /> <java-symbol type="bool" name="kg_wake_on_acquire_start" /> <java-symbol type="bool" name="config_use_sim_language_file" /> <java-symbol type="bool" name="config_LTE_eri_for_network_name" /> Loading
packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java +16 −1 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import static android.hardware.biometrics.BiometricConstants.BIOMETRIC_LOCKOUT_N import static android.hardware.biometrics.BiometricConstants.BIOMETRIC_LOCKOUT_PERMANENT; import static android.hardware.biometrics.BiometricConstants.BIOMETRIC_LOCKOUT_TIMED; import static android.hardware.biometrics.BiometricConstants.LockoutMode; import static android.hardware.biometrics.BiometricFingerprintConstants.FINGERPRINT_ACQUIRED_START; import static android.os.BatteryManager.BATTERY_STATUS_UNKNOWN; import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_BOOT; Loading Loading @@ -104,8 +105,10 @@ import android.os.Handler; import android.os.IRemoteCallback; import android.os.Looper; import android.os.Message; import android.os.PowerManager; import android.os.RemoteException; import android.os.ServiceManager; import android.os.SystemClock; import android.os.Trace; import android.os.UserHandle; import android.os.UserManager; Loading Loading @@ -356,6 +359,8 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab private final Executor mBackgroundExecutor; private SensorPrivacyManager mSensorPrivacyManager; private final ActiveUnlockConfig mActiveUnlockConfig; private final PowerManager mPowerManager; private final boolean mWakeOnFingerprintAcquiredStart; /** * Short delay before restarting fingerprint authentication after a successful try. This should Loading Loading @@ -805,6 +810,11 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab private void handleFingerprintAcquired( @BiometricFingerprintConstants.FingerprintAcquired int acquireInfo) { Assert.isMainThread(); if (mWakeOnFingerprintAcquiredStart && acquireInfo == FINGERPRINT_ACQUIRED_START) { mPowerManager.wakeUp( SystemClock.uptimeMillis(), PowerManager.WAKE_REASON_GESTURE, "com.android.systemui.keyguard:FINGERPRINT_ACQUIRED_START"); } for (int i = 0; i < mCallbacks.size(); i++) { KeyguardUpdateMonitorCallback cb = mCallbacks.get(i).get(); if (cb != null) { Loading Loading @@ -1895,7 +1905,8 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab KeyguardUpdateMonitorLogger logger, UiEventLogger uiEventLogger, // This has to be a provider because SessionTracker depends on KeyguardUpdateMonitor :( Provider<SessionTracker> sessionTrackerProvider) { Provider<SessionTracker> sessionTrackerProvider, PowerManager powerManager) { mContext = context; mSubscriptionManager = SubscriptionManager.from(context); mTelephonyListenerManager = telephonyListenerManager; Loading @@ -1916,7 +1927,10 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab mLogger = logger; mUiEventLogger = uiEventLogger; mSessionTrackerProvider = sessionTrackerProvider; mPowerManager = powerManager; mActiveUnlockConfig.setKeyguardUpdateMonitor(this); mWakeOnFingerprintAcquiredStart = context.getResources() .getBoolean(com.android.internal.R.bool.kg_wake_on_acquire_start); mHandler = new Handler(mainLooper) { @Override Loading Loading @@ -3705,6 +3719,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab pw.println(" getUserHasTrust()=" + getUserHasTrust(getCurrentUser())); pw.println(" getUserUnlockedWithBiometric()=" + getUserUnlockedWithBiometric(getCurrentUser())); pw.println(" mWakeOnFingerprintAcquiredStart=" + mWakeOnFingerprintAcquiredStart); pw.println(" SIM States:"); for (SimData data : mSimDatas.values()) { pw.println(" " + data.toString()); Loading
packages/SystemUI/tests/src/com/android/keyguard/KeyguardUpdateMonitorTest.java +34 −1 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.keyguard; import static android.app.StatusBarManager.SESSION_KEYGUARD; import static android.hardware.biometrics.BiometricFingerprintConstants.FINGERPRINT_ACQUIRED_START; import static android.hardware.biometrics.BiometricFingerprintConstants.FINGERPRINT_ERROR_LOCKOUT; import static android.telephony.SubscriptionManager.DATA_ROAMING_DISABLE; import static android.telephony.SubscriptionManager.NAME_SOURCE_CARRIER_ID; Loading @@ -30,6 +31,7 @@ import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.anyLong; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.atLeastOnce; Loading Loading @@ -72,6 +74,7 @@ import android.os.Bundle; import android.os.CancellationSignal; import android.os.Handler; import android.os.IRemoteCallback; import android.os.PowerManager; import android.os.RemoteException; import android.os.UserHandle; import android.os.UserManager; Loading Loading @@ -197,6 +200,8 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase { private SessionTracker mSessionTracker; @Mock private UiEventLogger mUiEventLogger; @Mock private PowerManager mPowerManager; private final int mCurrentUserId = 100; private final UserInfo mCurrentUserInfo = new UserInfo(mCurrentUserId, "Test user", 0); Loading Loading @@ -1559,6 +1564,28 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase { assertThat(mKeyguardUpdateMonitor.shouldListenForFingerprint(anyBoolean())).isEqualTo(true); } @Test public void testFingerAcquired_wakesUpPowerManager() { mContext.getOrCreateTestableResources().addOverride( com.android.internal.R.bool.kg_wake_on_acquire_start, true); mSpiedContext = spy(mContext); mKeyguardUpdateMonitor = new TestableKeyguardUpdateMonitor(mSpiedContext); fingerprintAcquireStart(); verify(mPowerManager).wakeUp(anyLong(), anyInt(), anyString()); } @Test public void testFingerAcquired_doesNotWakeUpPowerManager() { mContext.getOrCreateTestableResources().addOverride( com.android.internal.R.bool.kg_wake_on_acquire_start, false); mSpiedContext = spy(mContext); mKeyguardUpdateMonitor = new TestableKeyguardUpdateMonitor(mSpiedContext); fingerprintAcquireStart(); verify(mPowerManager, never()).wakeUp(anyLong(), anyInt(), anyString()); } private void faceAuthEnabled() { // this ensures KeyguardUpdateMonitor updates the cached mIsFaceEnrolled flag using the // face manager mock wire-up in setup() Loading Loading @@ -1607,6 +1634,11 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase { .onAuthenticationError(FINGERPRINT_ERROR_LOCKOUT, "Fingerprint locked out"); } private void fingerprintAcquireStart() { mKeyguardUpdateMonitor.mFingerprintAuthenticationCallback .onAuthenticationAcquired(FINGERPRINT_ACQUIRED_START); } private void triggerSuccessfulFaceAuth() { mKeyguardUpdateMonitor.requestFaceAuth(true, FaceAuthApiRequestReason.UDFPS_POINTER_DOWN); verify(mFaceManager).authenticate(any(), Loading Loading @@ -1728,7 +1760,8 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase { mStatusBarStateController, mLockPatternUtils, mAuthController, mTelephonyListenerManager, mInteractionJankMonitor, mLatencyTracker, mActiveUnlockConfig, mKeyguardUpdateMonitorLogger, mUiEventLogger, () -> mSessionTracker); mKeyguardUpdateMonitorLogger, mUiEventLogger, () -> mSessionTracker, mPowerManager); setStrongAuthTracker(KeyguardUpdateMonitorTest.this.mStrongAuthTracker); } Loading