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

Commit 6856e809 authored by Rhed Jao's avatar Rhed Jao Committed by Automerger Merge Worker
Browse files

Merge "Passing the writing repair mode password flag to verify credential api"...

Merge "Passing the writing repair mode password flag to verify credential api" into udc-qpr-dev am: cc1fe613

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/23308384



Change-Id: I8042bcbec114798b9fee18b76733944f99bd8c24
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 9ed0cee1 cc1fe613
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -2397,6 +2397,7 @@
            <intent-filter android:priority="1">
                <action android:name="android.app.action.CONFIRM_DEVICE_CREDENTIAL" />
                <action android:name="android.app.action.CONFIRM_FRP_CREDENTIAL" />
                <action android:name="android.app.action.PREPARE_REPAIR_MODE_DEVICE_CREDENTIAL" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
+20 −4
Original line number Diff line number Diff line
@@ -71,6 +71,8 @@ public final class ChooseLockSettingsHelper {
    // Gatekeeper password handle, which can subsequently be used to generate Gatekeeper
    // HardwareAuthToken(s) via LockSettingsService#verifyGatekeeperPasswordHandle
    public static final String EXTRA_KEY_GK_PW_HANDLE = "gk_pw_handle";
    public static final String EXTRA_KEY_REQUEST_WRITE_REPAIR_MODE_PW =
            "request_write_repair_mode_pw";

    /**
     * When EXTRA_KEY_UNIFICATION_PROFILE_CREDENTIAL and EXTRA_KEY_UNIFICATION_PROFILE_ID are
@@ -152,6 +154,7 @@ public final class ChooseLockSettingsHelper {
        @Nullable private RemoteLockscreenValidationSession mRemoteLockscreenValidationSession;
        @Nullable private ComponentName mRemoteLockscreenValidationServiceComponent;
        private boolean mRequestGatekeeperPasswordHandle;
        private boolean mRequestWriteRepairModePassword;
        private boolean mTaskOverlay;

        public Builder(@NonNull Activity activity) {
@@ -335,6 +338,17 @@ public final class ChooseLockSettingsHelper {
            return this;
        }

        /**
         * @param requestWriteRepairModePassword Set {@code true} to request that
         * LockSettingsService writes the password data to the repair mode file after the user
         * credential is verified successfully.
         */
        @NonNull public Builder setRequestWriteRepairModePassword(
                boolean requestWriteRepairModePassword) {
            mRequestWriteRepairModePassword = requestWriteRepairModePassword;
            return this;
        }

        /**
         * Support of ActivityResultLauncher.
         *
@@ -385,7 +399,7 @@ public final class ChooseLockSettingsHelper {
                mBuilder.mRemoteLockscreenValidationSession,
                mBuilder.mRemoteLockscreenValidationServiceComponent, mBuilder.mAllowAnyUserId,
                mBuilder.mForegroundOnly, mBuilder.mRequestGatekeeperPasswordHandle,
                mBuilder.mTaskOverlay);
                mBuilder.mRequestWriteRepairModePassword, mBuilder.mTaskOverlay);
    }

    private boolean launchConfirmationActivity(int request, @Nullable CharSequence title,
@@ -396,7 +410,7 @@ public final class ChooseLockSettingsHelper {
            @Nullable RemoteLockscreenValidationSession remoteLockscreenValidationSession,
            @Nullable ComponentName remoteLockscreenValidationServiceComponent,
            boolean allowAnyUser, boolean foregroundOnly, boolean requestGatekeeperPasswordHandle,
            boolean taskOverlay) {
            boolean requestWriteRepairModePassword, boolean taskOverlay) {
        Optional<Class<?>> activityClass = determineAppropriateActivityClass(
                returnCredentials, forceVerifyPath, userId, remoteLockscreenValidationSession);
        if (activityClass.isEmpty()) {
@@ -407,7 +421,7 @@ public final class ChooseLockSettingsHelper {
                returnCredentials, external, forceVerifyPath, userId, alternateButton,
                checkboxLabel, remoteLockscreenValidation, remoteLockscreenValidationSession,
                remoteLockscreenValidationServiceComponent, allowAnyUser, foregroundOnly,
                requestGatekeeperPasswordHandle, taskOverlay);
                requestGatekeeperPasswordHandle, requestWriteRepairModePassword, taskOverlay);
    }

    private boolean launchConfirmationActivity(int request, CharSequence title, CharSequence header,
@@ -418,7 +432,7 @@ public final class ChooseLockSettingsHelper {
            @Nullable RemoteLockscreenValidationSession remoteLockscreenValidationSession,
            @Nullable ComponentName remoteLockscreenValidationServiceComponent,
            boolean allowAnyUser, boolean foregroundOnly, boolean requestGatekeeperPasswordHandle,
            boolean taskOverlay) {
            boolean requestWriteRepairModePassword, boolean taskOverlay) {
        final Intent intent = new Intent();
        intent.putExtra(ConfirmDeviceCredentialBaseFragment.TITLE_TEXT, title);
        intent.putExtra(ConfirmDeviceCredentialBaseFragment.HEADER_TEXT, header);
@@ -442,6 +456,8 @@ public final class ChooseLockSettingsHelper {
        intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_ALLOW_ANY_USER, allowAnyUser);
        intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_REQUEST_GK_PW_HANDLE,
                requestGatekeeperPasswordHandle);
        intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_REQUEST_WRITE_REPAIR_MODE_PW,
                requestWriteRepairModePassword);

        intent.setClassName(SETTINGS_PACKAGE_NAME, activityClass.getName());
        intent.putExtra(SettingsBaseActivity.EXTRA_PAGE_TRANSITION_TYPE,
+14 −0
Original line number Diff line number Diff line
@@ -171,6 +171,9 @@ public class ConfirmDeviceCredentialActivity extends FragmentActivity {
                KeyguardManager.ACTION_CONFIRM_REMOTE_DEVICE_CREDENTIAL.equals(intent.getAction());
        mTaskOverlay = isInternalActivity()
                && intent.getBooleanExtra(KeyguardManager.EXTRA_FORCE_TASK_OVERLAY, false);
        final boolean prepareRepairMode =
                KeyguardManager.ACTION_PREPARE_REPAIR_MODE_DEVICE_CREDENTIAL.equals(
                        intent.getAction());

        mUserId = UserHandle.myUserId();
        if (isInternalActivity()) {
@@ -244,6 +247,17 @@ public class ConfirmDeviceCredentialActivity extends FragmentActivity {
                    .setExternal(true)
                    .show();
            return;
        } else if (prepareRepairMode) {
            final ChooseLockSettingsHelper.Builder builder =
                    new ChooseLockSettingsHelper.Builder(this);
            launchedCDC = builder.setHeader(mTitle)
                    .setDescription(mDetails)
                    .setExternal(true)
                    .setUserId(mUserId)
                    .setTaskOverlay(mTaskOverlay)
                    .setRequestWriteRepairModePassword(true)
                    .setForceVerifyPath(true)
                    .show();
        } else if (isEffectiveUserManagedProfile && isInternalActivity()) {
            mCredentialMode = CREDENTIAL_MANAGED;
            if (isBiometricAllowed(effectiveUserId, mUserId)) {
+3 −0
Original line number Diff line number Diff line
@@ -105,6 +105,7 @@ public abstract class ConfirmDeviceCredentialBaseFragment extends InstrumentedFr
    protected final Handler mHandler = new Handler();
    protected boolean mFrp;
    protected boolean mRemoteValidation;
    protected boolean mRequestWriteRepairModePassword;
    protected CharSequence mAlternateButtonText;
    protected BiometricManager mBiometricManager;
    @Nullable protected RemoteLockscreenValidationSession mRemoteLockscreenValidationSession;
@@ -130,6 +131,8 @@ public abstract class ConfirmDeviceCredentialBaseFragment extends InstrumentedFr
                ChooseLockSettingsHelper.EXTRA_KEY_REQUEST_GK_PW_HANDLE, false);
        mForceVerifyPath = intent.getBooleanExtra(
                ChooseLockSettingsHelper.EXTRA_KEY_FORCE_VERIFY, false);
        mRequestWriteRepairModePassword = intent.getBooleanExtra(
                ChooseLockSettingsHelper.EXTRA_KEY_REQUEST_WRITE_REPAIR_MODE_PW, false);

        if (intent.getBooleanExtra(IS_REMOTE_LOCKSCREEN_VALIDATION, false)) {
            if (FeatureFlagUtils.isEnabled(getContext(),
+3 −1
Original line number Diff line number Diff line
@@ -496,7 +496,9 @@ public class ConfirmLockPassword extends ConfirmDeviceCredentialBaseActivity {
                }
            } else if (mForceVerifyPath)  {
                if (isInternalActivity()) {
                    startVerifyPassword(credential, intent, 0 /* flags */);
                    final int flags = mRequestWriteRepairModePassword
                            ? LockPatternUtils.VERIFY_FLAG_WRITE_REPAIR_MODE_PW : 0;
                    startVerifyPassword(credential, intent, flags);
                    return;
                }
            } else {
Loading