summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/res/res/values/lineage_config.xml3
-rw-r--r--core/res/res/values/lineage_symbols.xml3
-rw-r--r--packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java22
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java6
4 files changed, 33 insertions, 1 deletions
diff --git a/core/res/res/values/lineage_config.xml b/core/res/res/values/lineage_config.xml
index b9dc2884d44e..6e169842d544 100644
--- a/core/res/res/values/lineage_config.xml
+++ b/core/res/res/values/lineage_config.xml
@@ -47,4 +47,7 @@
OnePlus 7 Pro. This HAL expects a different format for the data instead of the usual (ms)
timing(the duration which the vibrator is expected to vibrate for). -->
<bool name="config_hasOnePlusHapticMotor">false</bool>
+
+ <!-- Enable face auth only when swiping security view -->
+ <bool name="config_faceAuthOnlyOnSecurityView">false</bool>
</resources>
diff --git a/core/res/res/values/lineage_symbols.xml b/core/res/res/values/lineage_symbols.xml
index 62d220ed86c7..fe439fd47ed3 100644
--- a/core/res/res/values/lineage_symbols.xml
+++ b/core/res/res/values/lineage_symbols.xml
@@ -34,4 +34,7 @@
<!-- OnePlus haptic motor -->
<java-symbol type="bool" name="config_hasOnePlusHapticMotor" />
+
+ <!-- Enable face auth only when swiping security view -->
+ <java-symbol type="bool" name="config_faceAuthOnlyOnSecurityView" />
</resources>
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java
index 5e55df5eb388..b2783eab73c3 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java
@@ -290,6 +290,8 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
private final Executor mBackgroundExecutor;
private final boolean mFingerprintWakeAndUnlock;
+ private final boolean mFaceAuthOnlyOnSecurityView;
+ private boolean mBouncerFullyShown;
// Face unlock
private static final boolean mCustomFaceUnlockSupported = FaceUnlockUtils.isFaceUnlockSupported();
@@ -1589,6 +1591,8 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
mStrongAuthTracker = new StrongAuthTracker(context, this::notifyStrongAuthStateChanged);
mFingerprintWakeAndUnlock = mContext.getResources().getBoolean(
com.android.systemui.R.bool.config_fingerprintWakeAndUnlock);
+ mFaceAuthOnlyOnSecurityView = mContext.getResources().getBoolean(
+ com.android.internal.R.bool.config_faceAuthOnlyOnSecurityView);
mBackgroundExecutor = backgroundExecutor;
mBroadcastDispatcher = broadcastDispatcher;
mRingerModeTracker = ringerModeTracker;
@@ -2012,7 +2016,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
// Only listen if this KeyguardUpdateMonitor belongs to the primary user. There is an
// instance of KeyguardUpdateMonitor for each user but KeyguardUpdateMonitor is user-aware.
- final boolean shouldListen =
+ boolean shouldListen =
(mBouncer || mAuthInterruptActive || awakeKeyguard
|| shouldListenForFaceAssistant())
&& !mSwitchingUser && !isFaceDisabled(user) && becauseCannotSkipBouncer
@@ -2020,6 +2024,10 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
&& strongAuthAllowsScanning && mIsPrimaryUser
&& !mSecureCameraLaunched;
+ if (shouldListen && mFaceAuthOnlyOnSecurityView && !mBouncerFullyShown){
+ shouldListen = false;
+ }
+
// Aggregate relevant fields for debug logging.
if (DEBUG_FACE || DEBUG_SPEW) {
final KeyguardFaceListenModel model = new KeyguardFaceListenModel(
@@ -2045,6 +2053,15 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
return shouldListen;
}
+ public void onKeyguardBouncerFullyShown(boolean fullyShow) {
+ if (mBouncerFullyShown != fullyShow){
+ mBouncerFullyShown = fullyShow;
+ if (mFaceAuthOnlyOnSecurityView){
+ updateFaceListeningState();
+ }
+ }
+ }
+
private void maybeLogFaceListenerModelData(KeyguardFaceListenModel model) {
// Too chatty, but very useful when debugging issues.
if (DEBUG_SPEW) {
@@ -2505,6 +2522,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
Assert.isMainThread();
Log.d(TAG, "onKeyguardVisibilityChanged(" + showing + ")");
mKeyguardIsVisible = showing;
+ mBouncerFullyShown = false;
if (showing) {
mSecureCameraLaunched = false;
@@ -2524,6 +2542,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
*/
private void handleKeyguardReset() {
if (DEBUG) Log.d(TAG, "handleKeyguardReset");
+ mBouncerFullyShown = false;
updateBiometricListeningState();
mNeedsSlowUnlockTransition = resolveNeedsSlowUnlockTransition();
}
@@ -2581,6 +2600,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
* Handle {@link #MSG_REPORT_EMERGENCY_CALL_ACTION}
*/
private void handleReportEmergencyCallAction() {
+ mBouncerFullyShown = false;
Assert.isMainThread();
for (int i = 0; i < mCallbacks.size(); i++) {
KeyguardUpdateMonitorCallback cb = mCallbacks.get(i).get();
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java
index 68b83fb68d55..d2138e1d70c2 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java
@@ -106,6 +106,7 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
public void onFullyShown() {
updateStates();
updateLockIcon();
+ onKeyguardBouncerFullyShownChanged(true);
}
@Override
@@ -123,6 +124,7 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
public void onFullyHidden() {
updateStates();
updateLockIcon();
+ onKeyguardBouncerFullyShownChanged(false);
}
};
private final DockManager.DockEventListener mDockEventListener =
@@ -805,6 +807,10 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
}
};
+ private void onKeyguardBouncerFullyShownChanged(boolean fullyShown){
+ mKeyguardUpdateManager.onKeyguardBouncerFullyShown(fullyShown);
+ }
+
protected void updateStates() {
int vis = mContainer.getSystemUiVisibility();
boolean showing = mShowing;