Merge "SysUI co-ex updates" into sc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
c482869205
@@ -1428,32 +1428,42 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|
|||||||
final FaceManager.AuthenticationCallback mFaceAuthenticationCallback
|
final FaceManager.AuthenticationCallback mFaceAuthenticationCallback
|
||||||
= new FaceManager.AuthenticationCallback() {
|
= new FaceManager.AuthenticationCallback() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onAuthenticationFailed() {
|
public void onAuthenticationFailed() {
|
||||||
handleFaceAuthFailed();
|
handleFaceAuthFailed();
|
||||||
}
|
if (mKeyguardBypassController != null) {
|
||||||
|
mKeyguardBypassController.setUserHasDeviceEntryIntent(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onAuthenticationSucceeded(FaceManager.AuthenticationResult result) {
|
public void onAuthenticationSucceeded(FaceManager.AuthenticationResult result) {
|
||||||
Trace.beginSection("KeyguardUpdateMonitor#onAuthenticationSucceeded");
|
Trace.beginSection("KeyguardUpdateMonitor#onAuthenticationSucceeded");
|
||||||
handleFaceAuthenticated(result.getUserId(), result.isStrongBiometric());
|
handleFaceAuthenticated(result.getUserId(), result.isStrongBiometric());
|
||||||
Trace.endSection();
|
Trace.endSection();
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
if (mKeyguardBypassController != null) {
|
||||||
public void onAuthenticationHelp(int helpMsgId, CharSequence helpString) {
|
mKeyguardBypassController.setUserHasDeviceEntryIntent(false);
|
||||||
handleFaceHelp(helpMsgId, helpString.toString());
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onAuthenticationError(int errMsgId, CharSequence errString) {
|
public void onAuthenticationHelp(int helpMsgId, CharSequence helpString) {
|
||||||
handleFaceError(errMsgId, errString.toString());
|
handleFaceHelp(helpMsgId, helpString.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onAuthenticationAcquired(int acquireInfo) {
|
public void onAuthenticationError(int errMsgId, CharSequence errString) {
|
||||||
handleFaceAcquired(acquireInfo);
|
handleFaceError(errMsgId, errString.toString());
|
||||||
}
|
if (mKeyguardBypassController != null) {
|
||||||
|
mKeyguardBypassController.setUserHasDeviceEntryIntent(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onAuthenticationAcquired(int acquireInfo) {
|
||||||
|
handleFaceAcquired(acquireInfo);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
private CancellationSignal mFingerprintCancelSignal;
|
private CancellationSignal mFingerprintCancelSignal;
|
||||||
|
|||||||
@@ -68,6 +68,7 @@ import com.android.systemui.keyguard.ScreenLifecycle;
|
|||||||
import com.android.systemui.plugins.FalsingManager;
|
import com.android.systemui.plugins.FalsingManager;
|
||||||
import com.android.systemui.plugins.statusbar.StatusBarStateController;
|
import com.android.systemui.plugins.statusbar.StatusBarStateController;
|
||||||
import com.android.systemui.statusbar.LockscreenShadeTransitionController;
|
import com.android.systemui.statusbar.LockscreenShadeTransitionController;
|
||||||
|
import com.android.systemui.statusbar.phone.KeyguardBypassController;
|
||||||
import com.android.systemui.statusbar.phone.StatusBar;
|
import com.android.systemui.statusbar.phone.StatusBar;
|
||||||
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
|
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
|
||||||
import com.android.systemui.statusbar.policy.KeyguardStateController;
|
import com.android.systemui.statusbar.policy.KeyguardStateController;
|
||||||
@@ -120,6 +121,7 @@ public class UdfpsController implements DozeReceiver {
|
|||||||
@NonNull private final AccessibilityManager mAccessibilityManager;
|
@NonNull private final AccessibilityManager mAccessibilityManager;
|
||||||
@NonNull private final LockscreenShadeTransitionController mLockscreenShadeTransitionController;
|
@NonNull private final LockscreenShadeTransitionController mLockscreenShadeTransitionController;
|
||||||
@Nullable private final UdfpsHbmProvider mHbmProvider;
|
@Nullable private final UdfpsHbmProvider mHbmProvider;
|
||||||
|
@NonNull private final KeyguardBypassController mKeyguardBypassController;
|
||||||
@VisibleForTesting @NonNull final BiometricOrientationEventListener mOrientationListener;
|
@VisibleForTesting @NonNull final BiometricOrientationEventListener mOrientationListener;
|
||||||
// Currently the UdfpsController supports a single UDFPS sensor. If devices have multiple
|
// Currently the UdfpsController supports a single UDFPS sensor. If devices have multiple
|
||||||
// sensors, this, in addition to a lot of the code here, will be updated.
|
// sensors, this, in addition to a lot of the code here, will be updated.
|
||||||
@@ -397,7 +399,10 @@ public class UdfpsController implements DozeReceiver {
|
|||||||
handled = true;
|
handled = true;
|
||||||
}
|
}
|
||||||
if ((withinSensorArea || fromUdfpsView) && shouldTryToDismissKeyguard()) {
|
if ((withinSensorArea || fromUdfpsView) && shouldTryToDismissKeyguard()) {
|
||||||
Log.v(TAG, "onTouch | dismiss keyguard from ACTION_DOWN");
|
Log.v(TAG, "onTouch | dismiss keyguard ACTION_DOWN");
|
||||||
|
if (!mOnFingerDown) {
|
||||||
|
playStartHaptic();
|
||||||
|
}
|
||||||
mKeyguardViewManager.notifyKeyguardAuthenticated(false /* strongAuth */);
|
mKeyguardViewManager.notifyKeyguardAuthenticated(false /* strongAuth */);
|
||||||
mAttemptedToDismissKeyguard = true;
|
mAttemptedToDismissKeyguard = true;
|
||||||
}
|
}
|
||||||
@@ -414,6 +419,16 @@ public class UdfpsController implements DozeReceiver {
|
|||||||
boolean actionMoveWithinSensorArea =
|
boolean actionMoveWithinSensorArea =
|
||||||
isWithinSensorArea(udfpsView, event.getX(idx), event.getY(idx),
|
isWithinSensorArea(udfpsView, event.getX(idx), event.getY(idx),
|
||||||
fromUdfpsView);
|
fromUdfpsView);
|
||||||
|
if ((fromUdfpsView || actionMoveWithinSensorArea)
|
||||||
|
&& shouldTryToDismissKeyguard()) {
|
||||||
|
Log.v(TAG, "onTouch | dismiss keyguard ACTION_MOVE");
|
||||||
|
if (!mOnFingerDown) {
|
||||||
|
playStartHaptic();
|
||||||
|
}
|
||||||
|
mKeyguardViewManager.notifyKeyguardAuthenticated(false /* strongAuth */);
|
||||||
|
mAttemptedToDismissKeyguard = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
if (actionMoveWithinSensorArea) {
|
if (actionMoveWithinSensorArea) {
|
||||||
if (mVelocityTracker == null) {
|
if (mVelocityTracker == null) {
|
||||||
// touches could be injected, so the velocity tracker may not have
|
// touches could be injected, so the velocity tracker may not have
|
||||||
@@ -449,12 +464,6 @@ public class UdfpsController implements DozeReceiver {
|
|||||||
Log.v(TAG, "onTouch | finger outside");
|
Log.v(TAG, "onTouch | finger outside");
|
||||||
onFingerUp();
|
onFingerUp();
|
||||||
}
|
}
|
||||||
if ((fromUdfpsView || actionMoveWithinSensorArea)
|
|
||||||
&& shouldTryToDismissKeyguard()) {
|
|
||||||
Log.v(TAG, "onTouch | dismiss keyguard from ACTION_MOVE");
|
|
||||||
mKeyguardViewManager.notifyKeyguardAuthenticated(false /* strongAuth */);
|
|
||||||
mAttemptedToDismissKeyguard = true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
Trace.endSection();
|
Trace.endSection();
|
||||||
break;
|
break;
|
||||||
@@ -509,7 +518,8 @@ public class UdfpsController implements DozeReceiver {
|
|||||||
@Nullable Vibrator vibrator,
|
@Nullable Vibrator vibrator,
|
||||||
@NonNull UdfpsHapticsSimulator udfpsHapticsSimulator,
|
@NonNull UdfpsHapticsSimulator udfpsHapticsSimulator,
|
||||||
@NonNull Optional<UdfpsHbmProvider> hbmProvider,
|
@NonNull Optional<UdfpsHbmProvider> hbmProvider,
|
||||||
@NonNull KeyguardStateController keyguardStateController) {
|
@NonNull KeyguardStateController keyguardStateController,
|
||||||
|
@NonNull KeyguardBypassController keyguardBypassController) {
|
||||||
mContext = context;
|
mContext = context;
|
||||||
mExecution = execution;
|
mExecution = execution;
|
||||||
// TODO (b/185124905): inject main handler and vibrator once done prototyping
|
// TODO (b/185124905): inject main handler and vibrator once done prototyping
|
||||||
@@ -539,6 +549,7 @@ public class UdfpsController implements DozeReceiver {
|
|||||||
onOrientationChanged();
|
onOrientationChanged();
|
||||||
return Unit.INSTANCE;
|
return Unit.INSTANCE;
|
||||||
});
|
});
|
||||||
|
mKeyguardBypassController = keyguardBypassController;
|
||||||
|
|
||||||
mSensorProps = findFirstUdfps();
|
mSensorProps = findFirstUdfps();
|
||||||
// At least one UDFPS sensor exists
|
// At least one UDFPS sensor exists
|
||||||
@@ -863,12 +874,17 @@ public class UdfpsController implements DozeReceiver {
|
|||||||
|
|
||||||
private void onFingerDown(int x, int y, float minor, float major) {
|
private void onFingerDown(int x, int y, float minor, float major) {
|
||||||
mExecution.assertIsMainThread();
|
mExecution.assertIsMainThread();
|
||||||
|
mKeyguardBypassController.setUserHasDeviceEntryIntent(true);
|
||||||
if (mView == null) {
|
if (mView == null) {
|
||||||
Log.w(TAG, "Null view in onFingerDown");
|
Log.w(TAG, "Null view in onFingerDown");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!mOnFingerDown) {
|
if (!mOnFingerDown) {
|
||||||
playStartHaptic();
|
playStartHaptic();
|
||||||
|
|
||||||
|
if (!mKeyguardUpdateMonitor.isFaceDetectionRunning()) {
|
||||||
|
mKeyguardUpdateMonitor.requestFaceAuth(/* userInitiatedRequest */ false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
mOnFingerDown = true;
|
mOnFingerDown = true;
|
||||||
mFingerprintManager.onPointerDown(mSensorProps.sensorId, x, y, minor, major);
|
mFingerprintManager.onPointerDown(mSensorProps.sensorId, x, y, minor, major);
|
||||||
|
|||||||
@@ -564,8 +564,8 @@ public class BiometricUnlockController extends KeyguardUpdateMonitorCallback imp
|
|||||||
boolean unlockingAllowed =
|
boolean unlockingAllowed =
|
||||||
mUpdateMonitor.isUnlockingWithBiometricAllowed(isStrongBiometric);
|
mUpdateMonitor.isUnlockingWithBiometricAllowed(isStrongBiometric);
|
||||||
boolean deviceDreaming = mUpdateMonitor.isDreaming();
|
boolean deviceDreaming = mUpdateMonitor.isDreaming();
|
||||||
boolean bypass = mKeyguardBypassController.getBypassEnabled();
|
boolean bypass = mKeyguardBypassController.getBypassEnabled()
|
||||||
|
|| mKeyguardBypassController.getUserHasDeviceEntryIntent();
|
||||||
if (!mUpdateMonitor.isDeviceInteractive()) {
|
if (!mUpdateMonitor.isDeviceInteractive()) {
|
||||||
if (!mKeyguardViewController.isShowing()) {
|
if (!mKeyguardViewController.isShowing()) {
|
||||||
return bypass ? MODE_WAKE_AND_UNLOCK : MODE_ONLY_WAKE;
|
return bypass ? MODE_WAKE_AND_UNLOCK : MODE_ONLY_WAKE;
|
||||||
|
|||||||
@@ -43,6 +43,7 @@ open class KeyguardBypassController : Dumpable, StackScrollAlgorithm.BypassContr
|
|||||||
@BypassOverride private val bypassOverride: Int
|
@BypassOverride private val bypassOverride: Int
|
||||||
private var hasFaceFeature: Boolean
|
private var hasFaceFeature: Boolean
|
||||||
private var pendingUnlock: PendingUnlock? = null
|
private var pendingUnlock: PendingUnlock? = null
|
||||||
|
var userHasDeviceEntryIntent: Boolean = false // ie: attempted udfps auth
|
||||||
|
|
||||||
@IntDef(
|
@IntDef(
|
||||||
FACE_UNLOCK_BYPASS_NO_OVERRIDE,
|
FACE_UNLOCK_BYPASS_NO_OVERRIDE,
|
||||||
|
|||||||
@@ -59,6 +59,7 @@ import com.android.systemui.keyguard.ScreenLifecycle;
|
|||||||
import com.android.systemui.plugins.FalsingManager;
|
import com.android.systemui.plugins.FalsingManager;
|
||||||
import com.android.systemui.plugins.statusbar.StatusBarStateController;
|
import com.android.systemui.plugins.statusbar.StatusBarStateController;
|
||||||
import com.android.systemui.statusbar.LockscreenShadeTransitionController;
|
import com.android.systemui.statusbar.LockscreenShadeTransitionController;
|
||||||
|
import com.android.systemui.statusbar.phone.KeyguardBypassController;
|
||||||
import com.android.systemui.statusbar.phone.StatusBar;
|
import com.android.systemui.statusbar.phone.StatusBar;
|
||||||
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
|
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
|
||||||
import com.android.systemui.statusbar.policy.KeyguardStateController;
|
import com.android.systemui.statusbar.policy.KeyguardStateController;
|
||||||
@@ -136,6 +137,8 @@ public class UdfpsControllerTest extends SysuiTestCase {
|
|||||||
private UdfpsHapticsSimulator mUdfpsHapticsSimulator;
|
private UdfpsHapticsSimulator mUdfpsHapticsSimulator;
|
||||||
@Mock
|
@Mock
|
||||||
private KeyguardStateController mKeyguardStateController;
|
private KeyguardStateController mKeyguardStateController;
|
||||||
|
@Mock
|
||||||
|
private KeyguardBypassController mKeyguardBypassController;
|
||||||
|
|
||||||
private FakeExecutor mFgExecutor;
|
private FakeExecutor mFgExecutor;
|
||||||
|
|
||||||
@@ -204,7 +207,8 @@ public class UdfpsControllerTest extends SysuiTestCase {
|
|||||||
mVibrator,
|
mVibrator,
|
||||||
mUdfpsHapticsSimulator,
|
mUdfpsHapticsSimulator,
|
||||||
Optional.of(mHbmProvider),
|
Optional.of(mHbmProvider),
|
||||||
mKeyguardStateController);
|
mKeyguardStateController,
|
||||||
|
mKeyguardBypassController);
|
||||||
verify(mFingerprintManager).setUdfpsOverlayController(mOverlayCaptor.capture());
|
verify(mFingerprintManager).setUdfpsOverlayController(mOverlayCaptor.capture());
|
||||||
mOverlayController = mOverlayCaptor.getValue();
|
mOverlayController = mOverlayCaptor.getValue();
|
||||||
verify(mScreenLifecycle).addObserver(mScreenObserverCaptor.capture());
|
verify(mScreenLifecycle).addObserver(mScreenObserverCaptor.capture());
|
||||||
|
|||||||
Reference in New Issue
Block a user