Merge "Disable screenOffUdfps by default" into sc-dev am: 39e1e04a04 am: 781e618bd4
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14922213 Change-Id: Ic2992961fc89e91ad3d8b9a4bf4ab353fa0567ad
This commit is contained in:
@@ -53,7 +53,8 @@ public class AmbientDisplayConfiguration {
|
|||||||
|| pickupGestureEnabled(user)
|
|| pickupGestureEnabled(user)
|
||||||
|| tapGestureEnabled(user)
|
|| tapGestureEnabled(user)
|
||||||
|| doubleTapGestureEnabled(user)
|
|| doubleTapGestureEnabled(user)
|
||||||
|| quickPickupSensorEnabled(user);
|
|| quickPickupSensorEnabled(user)
|
||||||
|
|| screenOffUdfpsEnabled(user);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** {@hide} */
|
/** {@hide} */
|
||||||
@@ -105,6 +106,12 @@ public class AmbientDisplayConfiguration {
|
|||||||
return !TextUtils.isEmpty(quickPickupSensorType()) && !alwaysOnEnabled(user);
|
return !TextUtils.isEmpty(quickPickupSensorType()) && !alwaysOnEnabled(user);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** {@hide} */
|
||||||
|
public boolean screenOffUdfpsEnabled(int user) {
|
||||||
|
return !TextUtils.isEmpty(udfpsLongPressSensorType())
|
||||||
|
&& boolSettingDefaultOff("screen_off_udfps_enabled", user);
|
||||||
|
}
|
||||||
|
|
||||||
/** {@hide} */
|
/** {@hide} */
|
||||||
public boolean wakeScreenGestureAvailable() {
|
public boolean wakeScreenGestureAvailable() {
|
||||||
return mContext.getResources()
|
return mContext.getResources()
|
||||||
|
|||||||
@@ -66,10 +66,8 @@ import android.os.Handler;
|
|||||||
import android.os.IRemoteCallback;
|
import android.os.IRemoteCallback;
|
||||||
import android.os.Looper;
|
import android.os.Looper;
|
||||||
import android.os.Message;
|
import android.os.Message;
|
||||||
import android.os.PowerManager;
|
|
||||||
import android.os.RemoteException;
|
import android.os.RemoteException;
|
||||||
import android.os.ServiceManager;
|
import android.os.ServiceManager;
|
||||||
import android.os.SystemClock;
|
|
||||||
import android.os.Trace;
|
import android.os.Trace;
|
||||||
import android.os.UserHandle;
|
import android.os.UserHandle;
|
||||||
import android.os.UserManager;
|
import android.os.UserManager;
|
||||||
@@ -243,21 +241,14 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|
|||||||
private final boolean mIsPrimaryUser;
|
private final boolean mIsPrimaryUser;
|
||||||
private final boolean mIsAutomotive;
|
private final boolean mIsAutomotive;
|
||||||
private final AuthController mAuthController;
|
private final AuthController mAuthController;
|
||||||
private final PowerManager mPowerManager;
|
|
||||||
private final StatusBarStateController mStatusBarStateController;
|
private final StatusBarStateController mStatusBarStateController;
|
||||||
private int mStatusBarState;
|
private int mStatusBarState;
|
||||||
private boolean mDozing;
|
|
||||||
private final StatusBarStateController.StateListener mStatusBarStateControllerListener =
|
private final StatusBarStateController.StateListener mStatusBarStateControllerListener =
|
||||||
new StatusBarStateController.StateListener() {
|
new StatusBarStateController.StateListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onStateChanged(int newState) {
|
public void onStateChanged(int newState) {
|
||||||
mStatusBarState = newState;
|
mStatusBarState = newState;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onDozingChanged(boolean dozing) {
|
|
||||||
mDozing = dozing;
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
HashMap<Integer, SimData> mSimDatas = new HashMap<>();
|
HashMap<Integer, SimData> mSimDatas = new HashMap<>();
|
||||||
@@ -1330,19 +1321,16 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|
|||||||
|
|
||||||
private final FingerprintManager.AuthenticationCallback mFingerprintAuthenticationCallback
|
private final FingerprintManager.AuthenticationCallback mFingerprintAuthenticationCallback
|
||||||
= new AuthenticationCallback() {
|
= new AuthenticationCallback() {
|
||||||
private boolean mIsUdfpsRunningWhileDozing;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onAuthenticationFailed() {
|
public void onAuthenticationFailed() {
|
||||||
handleFingerprintAuthFailed();
|
handleFingerprintAuthFailed();
|
||||||
cancelAodInterrupt();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onAuthenticationSucceeded(AuthenticationResult result) {
|
public void onAuthenticationSucceeded(AuthenticationResult result) {
|
||||||
Trace.beginSection("KeyguardUpdateMonitor#onAuthenticationSucceeded");
|
Trace.beginSection("KeyguardUpdateMonitor#onAuthenticationSucceeded");
|
||||||
handleFingerprintAuthenticated(result.getUserId(), result.isStrongBiometric());
|
handleFingerprintAuthenticated(result.getUserId(), result.isStrongBiometric());
|
||||||
cancelAodInterrupt();
|
|
||||||
Trace.endSection();
|
Trace.endSection();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1354,7 +1342,6 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|
|||||||
@Override
|
@Override
|
||||||
public void onAuthenticationError(int errMsgId, CharSequence errString) {
|
public void onAuthenticationError(int errMsgId, CharSequence errString) {
|
||||||
handleFingerprintError(errMsgId, errString.toString());
|
handleFingerprintError(errMsgId, errString.toString());
|
||||||
cancelAodInterrupt();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -1365,25 +1352,12 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|
|||||||
@Override
|
@Override
|
||||||
public void onUdfpsPointerDown(int sensorId) {
|
public void onUdfpsPointerDown(int sensorId) {
|
||||||
Log.d(TAG, "onUdfpsPointerDown, sensorId: " + sensorId);
|
Log.d(TAG, "onUdfpsPointerDown, sensorId: " + sensorId);
|
||||||
|
|
||||||
if (mDozing) {
|
|
||||||
mIsUdfpsRunningWhileDozing = true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onUdfpsPointerUp(int sensorId) {
|
public void onUdfpsPointerUp(int sensorId) {
|
||||||
Log.d(TAG, "onUdfpsPointerUp, sensorId: " + sensorId);
|
Log.d(TAG, "onUdfpsPointerUp, sensorId: " + sensorId);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void cancelAodInterrupt() {
|
|
||||||
if (mIsUdfpsRunningWhileDozing) {
|
|
||||||
mPowerManager.wakeUp(SystemClock.uptimeMillis(), PowerManager.WAKE_REASON_GESTURE,
|
|
||||||
"com.android.systemui:AOD_INTERRUPT_END");
|
|
||||||
}
|
|
||||||
mAuthController.onCancelUdfps();
|
|
||||||
mIsUdfpsRunningWhileDozing = false;
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
private final FaceManager.FaceDetectionCallback mFaceDetectionCallback
|
private final FaceManager.FaceDetectionCallback mFaceDetectionCallback
|
||||||
@@ -1676,7 +1650,6 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|
|||||||
LockPatternUtils lockPatternUtils,
|
LockPatternUtils lockPatternUtils,
|
||||||
AuthController authController,
|
AuthController authController,
|
||||||
TelephonyListenerManager telephonyListenerManager,
|
TelephonyListenerManager telephonyListenerManager,
|
||||||
PowerManager powerManager,
|
|
||||||
FeatureFlags featureFlags) {
|
FeatureFlags featureFlags) {
|
||||||
mContext = context;
|
mContext = context;
|
||||||
mSubscriptionManager = SubscriptionManager.from(context);
|
mSubscriptionManager = SubscriptionManager.from(context);
|
||||||
@@ -1689,10 +1662,8 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|
|||||||
mStatusBarStateController = statusBarStateController;
|
mStatusBarStateController = statusBarStateController;
|
||||||
mStatusBarStateController.addCallback(mStatusBarStateControllerListener);
|
mStatusBarStateController.addCallback(mStatusBarStateControllerListener);
|
||||||
mStatusBarState = mStatusBarStateController.getState();
|
mStatusBarState = mStatusBarStateController.getState();
|
||||||
mDozing = mStatusBarStateController.isDozing();
|
|
||||||
mLockPatternUtils = lockPatternUtils;
|
mLockPatternUtils = lockPatternUtils;
|
||||||
mAuthController = authController;
|
mAuthController = authController;
|
||||||
mPowerManager = powerManager;
|
|
||||||
dumpManager.registerDumpable(getClass().getName(), this);
|
dumpManager.registerDumpable(getClass().getName(), this);
|
||||||
|
|
||||||
mHandler = new Handler(mainLooper) {
|
mHandler = new Handler(mainLooper) {
|
||||||
|
|||||||
@@ -70,6 +70,7 @@ public class DozeSensors {
|
|||||||
private final Consumer<Boolean> mProxCallback;
|
private final Consumer<Boolean> mProxCallback;
|
||||||
private final SecureSettings mSecureSettings;
|
private final SecureSettings mSecureSettings;
|
||||||
private final Callback mCallback;
|
private final Callback mCallback;
|
||||||
|
private final boolean mScreenOffUdfpsEnabled;
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
protected TriggerSensor[] mSensors;
|
protected TriggerSensor[] mSensors;
|
||||||
|
|
||||||
@@ -116,6 +117,8 @@ public class DozeSensors {
|
|||||||
mProximitySensor = proximitySensor;
|
mProximitySensor = proximitySensor;
|
||||||
mSelectivelyRegisterProxSensors = dozeParameters.getSelectivelyRegisterSensorsUsingProx();
|
mSelectivelyRegisterProxSensors = dozeParameters.getSelectivelyRegisterSensorsUsingProx();
|
||||||
mListeningProxSensors = !mSelectivelyRegisterProxSensors;
|
mListeningProxSensors = !mSelectivelyRegisterProxSensors;
|
||||||
|
mScreenOffUdfpsEnabled =
|
||||||
|
config.screenOffUdfpsEnabled(KeyguardUpdateMonitor.getCurrentUser());
|
||||||
|
|
||||||
boolean udfpsEnrolled =
|
boolean udfpsEnrolled =
|
||||||
authController.isUdfpsEnrolled(KeyguardUpdateMonitor.getCurrentUser());
|
authController.isUdfpsEnrolled(KeyguardUpdateMonitor.getCurrentUser());
|
||||||
@@ -171,7 +174,7 @@ public class DozeSensors {
|
|||||||
findSensorWithType(config.udfpsLongPressSensorType()),
|
findSensorWithType(config.udfpsLongPressSensorType()),
|
||||||
"doze_pulse_on_auth",
|
"doze_pulse_on_auth",
|
||||||
true /* settingDef */,
|
true /* settingDef */,
|
||||||
udfpsEnrolled,
|
udfpsEnrolled && (alwaysOn || mScreenOffUdfpsEnabled),
|
||||||
DozeLog.REASON_SENSOR_UDFPS_LONG_PRESS,
|
DozeLog.REASON_SENSOR_UDFPS_LONG_PRESS,
|
||||||
true /* reports touch coordinates */,
|
true /* reports touch coordinates */,
|
||||||
true /* touchscreen */,
|
true /* touchscreen */,
|
||||||
@@ -369,6 +372,7 @@ public class DozeSensors {
|
|||||||
pw.println("mListeningTouchScreenSensors=" + mListeningTouchScreenSensors);
|
pw.println("mListeningTouchScreenSensors=" + mListeningTouchScreenSensors);
|
||||||
pw.println("mSelectivelyRegisterProxSensors=" + mSelectivelyRegisterProxSensors);
|
pw.println("mSelectivelyRegisterProxSensors=" + mSelectivelyRegisterProxSensors);
|
||||||
pw.println("mListeningProxSensors=" + mListeningProxSensors);
|
pw.println("mListeningProxSensors=" + mListeningProxSensors);
|
||||||
|
pw.println("mScreenOffUdfpsEnabled=" + mScreenOffUdfpsEnabled);
|
||||||
IndentingPrintWriter idpw = new IndentingPrintWriter(pw);
|
IndentingPrintWriter idpw = new IndentingPrintWriter(pw);
|
||||||
idpw.increaseIndent();
|
idpw.increaseIndent();
|
||||||
for (TriggerSensor s : mSensors) {
|
for (TriggerSensor s : mSensors) {
|
||||||
|
|||||||
@@ -62,7 +62,6 @@ import android.nfc.NfcAdapter;
|
|||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.os.IRemoteCallback;
|
import android.os.IRemoteCallback;
|
||||||
import android.os.PowerManager;
|
|
||||||
import android.os.UserHandle;
|
import android.os.UserHandle;
|
||||||
import android.os.UserManager;
|
import android.os.UserManager;
|
||||||
import android.telephony.ServiceState;
|
import android.telephony.ServiceState;
|
||||||
@@ -166,8 +165,6 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase {
|
|||||||
@Mock
|
@Mock
|
||||||
private AuthController mAuthController;
|
private AuthController mAuthController;
|
||||||
@Mock
|
@Mock
|
||||||
private PowerManager mPowerManager;
|
|
||||||
@Mock
|
|
||||||
private TelephonyListenerManager mTelephonyListenerManager;
|
private TelephonyListenerManager mTelephonyListenerManager;
|
||||||
@Mock
|
@Mock
|
||||||
private FeatureFlags mFeatureFlags;
|
private FeatureFlags mFeatureFlags;
|
||||||
@@ -525,46 +522,6 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase {
|
|||||||
verify(mFaceManager).authenticate(any(), any(), any(), any(), anyInt());
|
verify(mFaceManager).authenticate(any(), any(), any(), any(), anyInt());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testFingerprintCancelAodInterrupt_onAuthenticationFailed() {
|
|
||||||
// GIVEN on keyguard and listening for fingerprint authentication
|
|
||||||
mKeyguardUpdateMonitor.dispatchStartedGoingToSleep(0 /* why */);
|
|
||||||
mTestableLooper.processAllMessages();
|
|
||||||
|
|
||||||
ArgumentCaptor<FingerprintManager.AuthenticationCallback> fingerprintCallbackCaptor =
|
|
||||||
ArgumentCaptor.forClass(FingerprintManager.AuthenticationCallback.class);
|
|
||||||
verify(mFingerprintManager).authenticate(any(), any(), fingerprintCallbackCaptor.capture(),
|
|
||||||
any(), anyInt(), anyInt());
|
|
||||||
FingerprintManager.AuthenticationCallback authCallback =
|
|
||||||
fingerprintCallbackCaptor.getValue();
|
|
||||||
|
|
||||||
// WHEN authentication fails
|
|
||||||
authCallback.onAuthenticationFailed();
|
|
||||||
|
|
||||||
// THEN aod interrupt is cancelled
|
|
||||||
verify(mAuthController).onCancelUdfps();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testFingerprintCancelAodInterrupt_onAuthenticationError() {
|
|
||||||
// GIVEN on keyguard and listening for fingerprint authentication
|
|
||||||
mKeyguardUpdateMonitor.dispatchStartedGoingToSleep(0 /* why */);
|
|
||||||
mTestableLooper.processAllMessages();
|
|
||||||
|
|
||||||
ArgumentCaptor<FingerprintManager.AuthenticationCallback> fingerprintCallbackCaptor =
|
|
||||||
ArgumentCaptor.forClass(FingerprintManager.AuthenticationCallback.class);
|
|
||||||
verify(mFingerprintManager).authenticate(any(), any(), fingerprintCallbackCaptor.capture(),
|
|
||||||
any(), anyInt(), anyInt());
|
|
||||||
FingerprintManager.AuthenticationCallback authCallback =
|
|
||||||
fingerprintCallbackCaptor.getValue();
|
|
||||||
|
|
||||||
// WHEN authentication errors
|
|
||||||
authCallback.onAuthenticationError(0, "");
|
|
||||||
|
|
||||||
// THEN aod interrupt is cancelled
|
|
||||||
verify(mAuthController).onCancelUdfps();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void skipsAuthentication_whenStatusBarShadeLocked() {
|
public void skipsAuthentication_whenStatusBarShadeLocked() {
|
||||||
mStatusBarStateListener.onStateChanged(StatusBarState.SHADE_LOCKED);
|
mStatusBarStateListener.onStateChanged(StatusBarState.SHADE_LOCKED);
|
||||||
@@ -1022,7 +979,7 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase {
|
|||||||
mBroadcastDispatcher, mDumpManager,
|
mBroadcastDispatcher, mDumpManager,
|
||||||
mRingerModeTracker, mBackgroundExecutor,
|
mRingerModeTracker, mBackgroundExecutor,
|
||||||
mStatusBarStateController, mLockPatternUtils,
|
mStatusBarStateController, mLockPatternUtils,
|
||||||
mAuthController, mTelephonyListenerManager, mPowerManager, mFeatureFlags);
|
mAuthController, mTelephonyListenerManager, mFeatureFlags);
|
||||||
setStrongAuthTracker(KeyguardUpdateMonitorTest.this.mStrongAuthTracker);
|
setStrongAuthTracker(KeyguardUpdateMonitorTest.this.mStrongAuthTracker);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -73,6 +73,7 @@ public class DozeConfigurationUtil {
|
|||||||
when(config.dozePickupSensorAvailable()).thenReturn(false);
|
when(config.dozePickupSensorAvailable()).thenReturn(false);
|
||||||
when(config.wakeScreenGestureAvailable()).thenReturn(false);
|
when(config.wakeScreenGestureAvailable()).thenReturn(false);
|
||||||
when(config.quickPickupSensorEnabled(anyInt())).thenReturn(false);
|
when(config.quickPickupSensorEnabled(anyInt())).thenReturn(false);
|
||||||
|
when(config.screenOffUdfpsEnabled(anyInt())).thenReturn(false);
|
||||||
|
|
||||||
doneHolder[0] = true;
|
doneHolder[0] = true;
|
||||||
return config;
|
return config;
|
||||||
|
|||||||
Reference in New Issue
Block a user