Support customization for biometrics SafeSourceIssue
Notify issue action launch when enrollment process is canceled Bug: 370940762 Test: atest FaceEnrollTest FingerprintEnrollTest Flag: com.android.settings.flags.biometrics_onboarding_education Change-Id: I91e2dcf44ee8cfd3e7c74d05f51a1ef30ea6f8b2
This commit is contained in:
@@ -22,6 +22,7 @@ import static android.provider.Settings.EXTRA_BIOMETRIC_AUTHENTICATORS_ALLOWED;
|
||||
import static com.android.settings.biometrics.BiometricEnrollBase.BIOMETRIC_AUTH_REQUEST;
|
||||
import static com.android.settings.biometrics.BiometricEnrollBase.RESULT_CONSENT_DENIED;
|
||||
import static com.android.settings.biometrics.BiometricEnrollBase.RESULT_CONSENT_GRANTED;
|
||||
import static com.android.settings.biometrics.BiometricEnrollBase.RESULT_FINISHED;
|
||||
|
||||
import static com.google.android.setupdesign.transition.TransitionHelper.TRANSITION_FADE_THROUGH;
|
||||
|
||||
@@ -53,6 +54,7 @@ import com.android.internal.widget.LockPatternUtils;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.SetupWizardUtils;
|
||||
import com.android.settings.Utils;
|
||||
import com.android.settings.biometrics.combination.CombinedBiometricStatusUtils;
|
||||
import com.android.settings.core.InstrumentedActivity;
|
||||
import com.android.settings.overlay.FeatureFactory;
|
||||
import com.android.settings.password.ChooseLockGeneric;
|
||||
@@ -131,6 +133,7 @@ public class BiometricEnrollActivity extends InstrumentedActivity {
|
||||
private Bundle mParentalOptions;
|
||||
@Nullable private Long mGkPwHandle;
|
||||
@Nullable private ParentalConsentHelper mParentalConsentHelper;
|
||||
private boolean mIsPreviousEnrollmentCanceled = false;
|
||||
|
||||
@Override
|
||||
public void onCreate(@Nullable Bundle savedInstanceState) {
|
||||
@@ -531,6 +534,7 @@ public class BiometricEnrollActivity extends InstrumentedActivity {
|
||||
} else {
|
||||
Log.d(TAG, "Unknown result for set/choose lock: " + resultCode);
|
||||
setResult(resultCode, newResultIntent());
|
||||
notifySafetyIssueActionLaunchedIfNeeded(resultCode);
|
||||
finish();
|
||||
}
|
||||
break;
|
||||
@@ -549,16 +553,21 @@ public class BiometricEnrollActivity extends InstrumentedActivity {
|
||||
// SetupFingerprintEnroll*/FingerprintEnrollmentActivity to
|
||||
// SetupFaceEnrollIntroduction
|
||||
TransitionHelper.applyForwardTransition(this, TRANSITION_FADE_THROUGH);
|
||||
mIsPreviousEnrollmentCanceled =
|
||||
resultCode != BiometricEnrollBase.RESULT_FINISHED;
|
||||
launchFaceOnlyEnroll();
|
||||
} else {
|
||||
notifySafetyIssueActionLaunchedIfNeeded(resultCode);
|
||||
finishOrLaunchHandToParent(resultCode);
|
||||
}
|
||||
break;
|
||||
case REQUEST_SINGLE_ENROLL_FACE:
|
||||
mIsSingleEnrolling = false;
|
||||
if (resultCode == Activity.RESULT_CANCELED && mIsFingerprintEnrollable) {
|
||||
mIsPreviousEnrollmentCanceled = true;
|
||||
launchFingerprintOnlyEnroll();
|
||||
} else {
|
||||
notifySafetyIssueActionLaunchedIfNeeded(resultCode);
|
||||
finishOrLaunchHandToParent(resultCode);
|
||||
}
|
||||
break;
|
||||
@@ -742,6 +751,15 @@ public class BiometricEnrollActivity extends InstrumentedActivity {
|
||||
startActivityForResult(intent, REQUEST_HANDOFF_PARENT);
|
||||
}
|
||||
|
||||
private void notifySafetyIssueActionLaunchedIfNeeded(int resultCode) {
|
||||
if (getIntent().getBooleanExtra(
|
||||
CombinedBiometricStatusUtils.EXTRA_LAUNCH_FROM_SAFETY_SOURCE_ISSUE, false)
|
||||
&& (resultCode != RESULT_FINISHED || mIsPreviousEnrollmentCanceled)) {
|
||||
FeatureFactory.getFeatureFactory().getBiometricsFeatureProvider()
|
||||
.notifySafetyIssueActionLaunched();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMetricsCategory() {
|
||||
return SettingsEnums.BIOMETRIC_ENROLL_ACTIVITY;
|
||||
|
@@ -36,6 +36,13 @@ import com.android.settingslib.utils.StringUtil;
|
||||
*/
|
||||
public class CombinedBiometricStatusUtils {
|
||||
|
||||
/**
|
||||
* An intent extra indicates that the enrollment process is launched from biometric
|
||||
* SafetySourceIssue action.
|
||||
*/
|
||||
public static final String EXTRA_LAUNCH_FROM_SAFETY_SOURCE_ISSUE =
|
||||
"launch_from_safety_source_issue";
|
||||
|
||||
private final int mUserId;
|
||||
private final Context mContext;
|
||||
@Nullable
|
||||
|
@@ -16,10 +16,13 @@
|
||||
|
||||
package com.android.settings.biometrics.face
|
||||
|
||||
import android.app.ComponentCaller
|
||||
import android.content.Intent
|
||||
import android.os.Bundle
|
||||
import android.util.Log
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import com.android.settings.biometrics.BiometricEnrollBase.RESULT_FINISHED
|
||||
import com.android.settings.biometrics.combination.CombinedBiometricStatusUtils
|
||||
|
||||
import com.android.settings.overlay.FeatureFactory.Companion.featureFactory
|
||||
|
||||
@@ -46,9 +49,23 @@ class FaceEnroll: AppCompatActivity() {
|
||||
*/
|
||||
Log.d("FaceEnroll", "forward to $nextActivityClass")
|
||||
val nextIntent = Intent(this, nextActivityClass)
|
||||
nextIntent.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT)
|
||||
nextIntent.putExtras(intent)
|
||||
startActivity(nextIntent)
|
||||
startActivityForResult(nextIntent, 0)
|
||||
}
|
||||
|
||||
override fun onActivityResult(
|
||||
requestCode: Int,
|
||||
resultCode: Int,
|
||||
data: Intent?,
|
||||
caller: ComponentCaller
|
||||
) {
|
||||
super.onActivityResult(requestCode, resultCode, data, caller)
|
||||
if (intent.getBooleanExtra(
|
||||
CombinedBiometricStatusUtils.EXTRA_LAUNCH_FROM_SAFETY_SOURCE_ISSUE, false)
|
||||
&& resultCode != RESULT_FINISHED) {
|
||||
featureFactory.biometricsFeatureProvider.notifySafetyIssueActionLaunched()
|
||||
}
|
||||
setResult(resultCode, data)
|
||||
finish()
|
||||
}
|
||||
}
|
@@ -16,10 +16,13 @@
|
||||
|
||||
package com.android.settings.biometrics.fingerprint
|
||||
|
||||
import android.app.ComponentCaller
|
||||
import android.content.Intent
|
||||
import android.os.Bundle
|
||||
import android.util.Log
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import com.android.settings.biometrics.BiometricEnrollBase
|
||||
import com.android.settings.biometrics.combination.CombinedBiometricStatusUtils
|
||||
import com.android.settings.overlay.FeatureFactory.Companion.featureFactory
|
||||
|
||||
/**
|
||||
@@ -69,9 +72,24 @@ open class FingerprintEnroll: AppCompatActivity() {
|
||||
*/
|
||||
Log.d("FingerprintEnroll", "forward to $nextActivityClass")
|
||||
val nextIntent = Intent(this, nextActivityClass)
|
||||
nextIntent.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT)
|
||||
nextIntent.putExtras(intent)
|
||||
startActivity(nextIntent)
|
||||
startActivityForResult(nextIntent, 0)
|
||||
}
|
||||
|
||||
override fun onActivityResult(
|
||||
requestCode: Int,
|
||||
resultCode: Int,
|
||||
data: Intent?,
|
||||
caller: ComponentCaller
|
||||
) {
|
||||
super.onActivityResult(requestCode, resultCode, data, caller)
|
||||
if (intent.getBooleanExtra(
|
||||
CombinedBiometricStatusUtils.EXTRA_LAUNCH_FROM_SAFETY_SOURCE_ISSUE, false)
|
||||
&& resultCode != BiometricEnrollBase.RESULT_FINISHED
|
||||
) {
|
||||
featureFactory.biometricsFeatureProvider.notifySafetyIssueActionLaunched()
|
||||
}
|
||||
setResult(resultCode, data)
|
||||
finish()
|
||||
}
|
||||
}
|
@@ -68,7 +68,6 @@ class FaceEnrollTest {
|
||||
currentActivityInstance : FaceEnroll,
|
||||
nextActivityClass: Class<out Activity>
|
||||
) {
|
||||
Truth.assertThat(currentActivityInstance.isFinishing).isTrue()
|
||||
val nextActivityIntent = Shadows.shadowOf(currentActivityInstance).nextStartedActivity
|
||||
assertThat(nextActivityIntent.component!!.className).isEqualTo(nextActivityClass.name)
|
||||
assertThat(nextActivityIntent.extras!!.size()).isEqualTo(1)
|
||||
|
@@ -95,7 +95,6 @@ class FingerprintEnrollTest {
|
||||
currentActivityInstance : FingerprintEnroll,
|
||||
nextActivityClass: Class<out Activity>
|
||||
) {
|
||||
assertThat(currentActivityInstance.isFinishing).isTrue()
|
||||
val nextActivityIntent = Shadows.shadowOf(currentActivityInstance).nextStartedActivity
|
||||
assertThat(nextActivityIntent.component!!.className).isEqualTo(nextActivityClass.name)
|
||||
assertThat(nextActivityIntent.extras!!.size()).isEqualTo(1)
|
||||
|
Reference in New Issue
Block a user