From 8f552f4a7804120082e5eb5fa1d9c565b9d3cc39 Mon Sep 17 00:00:00 2001 From: jhenrique09 Date: Sat, 28 Mar 2020 12:51:07 -0300 Subject: [ArrowOS][11.0] SystemUI: Allow listening for face only on pin/pass view Useful for devices with popup camera Include: commit 147c2654ad60b3582b5e433759c4fedc9d470cf6 (HEAD) Author: jhenrique09 Date: Fri Mar 5 20:54:21 2021 -0300 cleanup - SystemUI: Allow listening for face only on pin/pass view Change-Id: I04fe60e46e54bdead8b6f0dd432604bbaf711b1b Change-Id: Ifba770dd1681858844d5d0290cbf385bfa47f841 --- core/res/res/values/lineage_config.xml | 3 +++ core/res/res/values/lineage_symbols.xml | 3 +++ .../android/keyguard/KeyguardUpdateMonitor.java | 22 +++++++++++++++++++++- .../phone/StatusBarKeyguardViewManager.java | 6 ++++++ 4 files changed, 33 insertions(+), 1 deletion(-) 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). --> false + + + false 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 @@ + + + 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; -- cgit v1.2.3