Loading AndroidManifest.xml +1 −0 Original line number Diff line number Diff line Loading @@ -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> Loading src/com/android/settings/password/ChooseLockSettingsHelper.java +20 −4 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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) { Loading Loading @@ -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. * Loading Loading @@ -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, Loading @@ -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()) { Loading @@ -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, Loading @@ -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); Loading @@ -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, Loading src/com/android/settings/password/ConfirmDeviceCredentialActivity.java +14 −0 Original line number Diff line number Diff line Loading @@ -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()) { Loading Loading @@ -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)) { Loading src/com/android/settings/password/ConfirmDeviceCredentialBaseFragment.java +3 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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(), Loading src/com/android/settings/password/ConfirmLockPassword.java +3 −1 Original line number Diff line number Diff line Loading @@ -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 Loading
AndroidManifest.xml +1 −0 Original line number Diff line number Diff line Loading @@ -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> Loading
src/com/android/settings/password/ChooseLockSettingsHelper.java +20 −4 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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) { Loading Loading @@ -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. * Loading Loading @@ -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, Loading @@ -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()) { Loading @@ -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, Loading @@ -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); Loading @@ -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, Loading
src/com/android/settings/password/ConfirmDeviceCredentialActivity.java +14 −0 Original line number Diff line number Diff line Loading @@ -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()) { Loading Loading @@ -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)) { Loading
src/com/android/settings/password/ConfirmDeviceCredentialBaseFragment.java +3 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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(), Loading
src/com/android/settings/password/ConfirmLockPassword.java +3 −1 Original line number Diff line number Diff line Loading @@ -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