Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 60c6d8ea authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Support customization for biometrics SafeSourceIssue" into main

parents 1d81f306 6f4f66e5
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
@@ -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;
+7 −0
Original line number Diff line number Diff line
@@ -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
+19 −2
Original line number Diff line number Diff line
@@ -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()
    }
}
 No newline at end of file
+20 −2
Original line number Diff line number Diff line
@@ -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()
    }
}
 No newline at end of file
+0 −1
Original line number Diff line number Diff line
@@ -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)
Loading