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

Commit 5ab064f3 authored by Kevin Chyn's avatar Kevin Chyn
Browse files

Launch correct enrollment activity from ChooseLock

Test: no noticable difference when setting up fingeprint work profile

Fixes: 130397083
Change-Id: I34be5262cc52052ce25a188f19bbcc13f938ac92
parent c4083cec
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -1562,6 +1562,11 @@
            android:exported="false"
            android:screenOrientation="portrait"/>

        <!-- Must not be exported -->
        <activity android:name=".biometrics.BiometricEnrollActivity$InternalActivity"
            android:exported="false"
            android:theme="@style/GlifTheme.Light"/>

        <activity android:name=".biometrics.BiometricEnrollActivity"
            android:exported="true"
            android:theme="@style/GlifTheme.Light">
+38 −4
Original line number Diff line number Diff line
@@ -20,11 +20,15 @@ import android.app.settings.SettingsEnums;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.os.UserHandle;

import com.android.settings.SetupWizardUtils;
import com.android.settings.biometrics.face.FaceEnrollIntroduction;
import com.android.settings.biometrics.fingerprint.FingerprintEnrollFindSensor;
import com.android.settings.biometrics.fingerprint.FingerprintEnrollIntroduction;
import com.android.settings.biometrics.fingerprint.SetupFingerprintEnrollIntroduction;
import com.android.settings.core.InstrumentedActivity;
import com.android.settings.password.ChooseLockSettingsHelper;

import com.google.android.setupcompat.util.WizardManagerHelper;

@@ -36,6 +40,12 @@ import com.google.android.setupcompat.util.WizardManagerHelper;
 */
public class BiometricEnrollActivity extends InstrumentedActivity {

    private static final String TAG = "BiometricEnrollActivity";

    public static final String EXTRA_SKIP_INTRO = "skip_intro";

    public static final class InternalActivity extends BiometricEnrollActivity {}

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
@@ -45,19 +55,43 @@ public class BiometricEnrollActivity extends InstrumentedActivity {

        // This logic may have to be modified on devices with multiple biometrics.
        if (pm.hasSystemFeature(PackageManager.FEATURE_FINGERPRINT)) {
            intent = getFingerprintEnrollIntent();
            // ChooseLockGeneric can request to start fingerprint enroll bypassing the intro screen.
            if (getIntent().getBooleanExtra(EXTRA_SKIP_INTRO, false)
                    && this instanceof InternalActivity) {
                intent = getFingerprintFindSensorIntent();
            } else {
                intent = getFingerprintIntroIntent();
            }
        } else if (pm.hasSystemFeature(PackageManager.FEATURE_FACE)) {
            intent = getFaceEnrollIntent();
            intent = getFaceIntroIntent();
        }

        if (intent != null) {
            intent.setFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);

            if (this instanceof InternalActivity) {
                // Propagate challenge and user Id from ChooseLockGeneric.
                final byte[] token = getIntent()
                        .getByteArrayExtra(ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN);
                final int userId = getIntent()
                        .getIntExtra(Intent.EXTRA_USER_ID, UserHandle.USER_NULL);

                intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN, token);
                intent.putExtra(Intent.EXTRA_USER_ID, userId);
            }

            startActivity(intent);
        }
        finish();
    }

    private Intent getFingerprintEnrollIntent() {
    private Intent getFingerprintFindSensorIntent() {
        Intent intent = new Intent(this, FingerprintEnrollFindSensor.class);
        SetupWizardUtils.copySetupExtras(getIntent(), intent);
        return intent;
    }

    private Intent getFingerprintIntroIntent() {
        if (WizardManagerHelper.isAnySetupWizard(getIntent())) {
            Intent intent = new Intent(this, SetupFingerprintEnrollIntroduction.class);
            WizardManagerHelper.copyWizardManagerExtras(getIntent(), intent);
@@ -67,7 +101,7 @@ public class BiometricEnrollActivity extends InstrumentedActivity {
        }
    }

    private Intent getFaceEnrollIntent() {
    private Intent getFaceIntroIntent() {
        Intent intent = new Intent(this, FaceEnrollIntroduction.class);
        WizardManagerHelper.copyWizardManagerExtras(getIntent(), intent);
        return intent;
+3 −1
Original line number Diff line number Diff line
@@ -150,7 +150,9 @@ public abstract class BiometricEnrollIntroduction extends BiometricEnrollBase
        if (!mHasPassword) {
            // No password registered, launch into enrollment wizard.
            launchChooseLock();
        } else if (!mLaunchedConfirmLock || mToken == null) {
        } else if (mToken == null) {
            // It's possible to have a token but mLaunchedConfirmLock == false, since
            // ChooseLockGeneric can pass us a token.
            launchConfirmLock(getConfirmLockTitleResId(), getChallenge());
        }
    }
+11 −9
Original line number Diff line number Diff line
@@ -66,8 +66,8 @@ import com.android.settings.R;
import com.android.settings.SettingsActivity;
import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.Utils;
import com.android.settings.biometrics.BiometricEnrollActivity;
import com.android.settings.biometrics.BiometricEnrollBase;
import com.android.settings.biometrics.fingerprint.FingerprintEnrollFindSensor;
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
import com.android.settings.search.SearchFeatureProvider;
import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
@@ -76,7 +76,6 @@ import com.android.settingslib.RestrictedPreference;
import com.android.settingslib.widget.FooterPreference;
import com.android.settingslib.widget.FooterPreferenceMixinCompat;

import java.util.Arrays;
import java.util.List;

public class ChooseLockGeneric extends SettingsActivity {
@@ -141,7 +140,7 @@ public class ChooseLockGeneric extends SettingsActivity {
        @VisibleForTesting
        static final int CHOOSE_LOCK_REQUEST = 102;
        @VisibleForTesting
        static final int CHOOSE_LOCK_BEFORE_FINGERPRINT_REQUEST = 103;
        static final int CHOOSE_LOCK_BEFORE_BIOMETRIC_REQUEST = 103;
        @VisibleForTesting
        static final int SKIP_FINGERPRINT_REQUEST = 104;

@@ -366,7 +365,7 @@ public class ChooseLockGeneric extends SettingsActivity {
                startActivityForResult(
                        intent,
                        mIsSetNewPassword && mHasChallenge
                                ? CHOOSE_LOCK_BEFORE_FINGERPRINT_REQUEST
                                ? CHOOSE_LOCK_BEFORE_BIOMETRIC_REQUEST
                                : ENABLE_ENCRYPTION_REQUEST);
            } else {
                if (mForChangeCredRequiredForBoot) {
@@ -411,9 +410,9 @@ public class ChooseLockGeneric extends SettingsActivity {
                        finish();
                    }
                }
            } else if (requestCode == CHOOSE_LOCK_BEFORE_FINGERPRINT_REQUEST
            } else if (requestCode == CHOOSE_LOCK_BEFORE_BIOMETRIC_REQUEST
                    && resultCode == BiometricEnrollBase.RESULT_FINISHED) {
                Intent intent = getFindSensorIntent(getActivity());
                Intent intent = getBiometricEnrollIntent(getActivity());
                if (data != null) {
                    intent.putExtras(data.getExtras());
                }
@@ -438,8 +437,11 @@ public class ChooseLockGeneric extends SettingsActivity {
            }
        }

        protected Intent getFindSensorIntent(Context context) {
            return new Intent(context, FingerprintEnrollFindSensor.class);
        protected Intent getBiometricEnrollIntent(Context context) {
            final Intent intent =
                    new Intent(context, BiometricEnrollActivity.InternalActivity.class);
            intent.putExtra(BiometricEnrollActivity.EXTRA_SKIP_INTRO, true);
            return intent;
        }

        @Override
@@ -764,7 +766,7 @@ public class ChooseLockGeneric extends SettingsActivity {
                intent.putExtra(EXTRA_CHOOSE_LOCK_GENERIC_EXTRAS, getIntent().getExtras());
                startActivityForResult(intent,
                        mIsSetNewPassword && mHasChallenge
                                ? CHOOSE_LOCK_BEFORE_FINGERPRINT_REQUEST
                                ? CHOOSE_LOCK_BEFORE_BIOMETRIC_REQUEST
                                : CHOOSE_LOCK_REQUEST);
                return;
            }
+3 −2
Original line number Diff line number Diff line
@@ -42,6 +42,7 @@ import com.android.internal.widget.LockPatternUtils;
import com.android.settings.R;
import com.android.settings.SetupEncryptionInterstitial;
import com.android.settings.SetupWizardUtils;
import com.android.settings.biometrics.BiometricEnrollActivity;
import com.android.settings.biometrics.fingerprint.SetupFingerprintEnrollFindSensor;
import com.android.settings.utils.SettingsDividerItemDecoration;

@@ -229,8 +230,8 @@ public class SetupChooseLockGeneric extends ChooseLockGeneric {
        }

        @Override
        protected Intent getFindSensorIntent(Context context) {
            final Intent intent = new Intent(context, SetupFingerprintEnrollFindSensor.class);
        protected Intent getBiometricEnrollIntent(Context context) {
            final Intent intent = getBiometricEnrollIntent(context);
            SetupWizardUtils.copySetupExtras(getActivity().getIntent(), intent);
            return intent;
        }
Loading