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

Commit 3e90b62b authored by Clara Thomas's avatar Clara Thomas Committed by Android (Google) Code Review
Browse files

Merge "Customize ChooseLockPassword for supervision." into main

parents 749a81c6 80588035
Loading
Loading
Loading
Loading
+3 −4
Original line number Diff line number Diff line
@@ -14563,10 +14563,9 @@ Data usage charges may apply.</string>
    <!-- Generic content description that is attached to the preview illustration at the top of an Accessibility feature toggle page. [CHAR LIMIT=NONE] -->
    <!-- Title for supervision PIN verification screen [CHAR LIMIT=60] -->
    <string name="supervision_full_screen_pin_verification_title">Enter supervision PIN</string>
    <!-- Title on activity to choose lock for supervision setup [CHAR LIMIT=NONE] -->
    <string name="supervision_lock_setup_title">Choose lock for supervision</string>
    <!-- description on activity to choose lock supervision setup [CHAR LIMIT=NONE] -->
    <string name="supervision_lock_setup_description">You can unlock supervision settings with this code</string>
    <!-- Title on activity to choose PIN for supervision setup [CHAR LIMIT=NONE] -->
    <string name="supervision_choose_your_pin_header">Set a parental controls PIN</string>
    <string name="supervision_confirm_your_pin_header">Confirm PIN</string>
    <string name ="supervision_pin_reset_success_toast">Parental control PIN reset</string>
    <string name="accessibility_illustration_content_description"><xliff:g id="feature" example="Select to Speak">%1$s</xliff:g> animation</string>
+29 −1
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import static android.app.admin.DevicePolicyResources.Strings.Settings.REENTER_W
import static android.app.admin.DevicePolicyResources.Strings.Settings.SET_WORK_PROFILE_PASSWORD_HEADER;
import static android.app.admin.DevicePolicyResources.Strings.Settings.SET_WORK_PROFILE_PIN_HEADER;
import static android.app.admin.DevicePolicyResources.UNDEFINED;
import static android.os.UserManager.USER_TYPE_PROFILE_SUPERVISING;
import static android.view.View.ACCESSIBILITY_LIVE_REGION_ASSERTIVE;
import static android.view.View.ACCESSIBILITY_LIVE_REGION_POLITE;

@@ -287,6 +288,7 @@ public class ChooseLockPassword extends SettingsActivity {
            None,
            Managed,
            Private,
            Supervising,
            Other
        };
        protected ProfileType mProfileType;
@@ -311,6 +313,7 @@ public class ChooseLockPassword extends SettingsActivity {
                    R.string.lockpassword_choose_your_pin_header_for_face,
                    R.string.lockpassword_choose_your_pin_header_for_biometrics,
                    R.string.private_space_choose_your_pin_header, // private space pin
                    R.string.supervision_choose_your_pin_header, // supervision pin
                    R.string.lock_settings_picker_biometrics_added_security_message,
                    R.string.lock_settings_picker_biometrics_added_security_message,
                    R.string.next_label),
@@ -330,6 +333,7 @@ public class ChooseLockPassword extends SettingsActivity {
                    R.string.lockpassword_confirm_your_pin_header,
                    R.string.lockpassword_confirm_your_pin_header,
                    R.string.lockpassword_confirm_your_pin_header,
                    R.string.supervision_confirm_your_pin_header,
                    0,
                    0,
                    R.string.lockpassword_confirm_label),
@@ -349,6 +353,7 @@ public class ChooseLockPassword extends SettingsActivity {
                    R.string.lockpassword_confirm_pins_dont_match,
                    R.string.lockpassword_confirm_pins_dont_match,
                    R.string.lockpassword_confirm_pins_dont_match,
                    R.string.lockpassword_confirm_pins_dont_match,
                    0,
                    0,
                    R.string.lockpassword_confirm_label);
@@ -367,6 +372,7 @@ public class ChooseLockPassword extends SettingsActivity {
                    int hintInNumericForFace,
                    int hintInNumericForBiometrics,
                    int hintInNumericForPrivateProfile,
                    int hintInNumericForSupervisingProfile,
                    int messageInAlphaForBiometrics,
                    int messageInNumericForBiometrics,
                    int nextButtonText) {
@@ -386,6 +392,7 @@ public class ChooseLockPassword extends SettingsActivity {
                this.numericHintForFace = hintInNumericForFace;
                this.numericHintForBiometrics = hintInNumericForBiometrics;
                this.numericHintForPrivateProfile = hintInNumericForPrivateProfile;
                this.numericHintForSupervisingProfile = hintInNumericForSupervisingProfile;

                this.alphaMessageForBiometrics = messageInAlphaForBiometrics;
                this.numericMessageForBiometrics = messageInNumericForBiometrics;
@@ -410,6 +417,7 @@ public class ChooseLockPassword extends SettingsActivity {
            // PIN header
            public final int numericHint;
            public final int numericHintForPrivateProfile;
            public final int numericHintForSupervisingProfile;
            public final String numericHintOverrideForProfile;
            public final int numericHintForManagedProfile;
            public final int numericHintForFingerprint;
@@ -448,6 +456,9 @@ public class ChooseLockPassword extends SettingsActivity {
                            && android.multiuser.Flags.enablePrivateSpaceFeatures()
                            && profile.equals(ProfileType.Private)) {
                        return context.getString(numericHintForPrivateProfile);
                    } else if (android.multiuser.Flags.allowSupervisingProfile()
                            && profile.equals(ProfileType.Supervising)) {
                        return context.getString(numericHintForSupervisingProfile);
                    } else if (type == TYPE_FINGERPRINT) {
                        return context.getString(numericHintForFingerprint);
                    } else if (type == TYPE_FACE) {
@@ -761,7 +772,13 @@ public class ChooseLockPassword extends SettingsActivity {
            }
        }

        @Nullable
        protected Intent getRedactionInterstitialIntent(Context context) {
            // The supervising profile does not have its own lock screen, and thus can skip the
            // redaction interstitial.
            if (isSupervisingProfile()) {
                return null;
            }
            return RedactionInterstitial.createStartIntent(context, mUserId);
        }

@@ -1023,7 +1040,10 @@ public class ChooseLockPassword extends SettingsActivity {
                    || mAutoPinConfirmOption == null) {
                return;
            }
            if (enabled && !mIsAlphaMode && isAutoPinConfirmPossible(length)) {
            if (enabled
                    && !mIsAlphaMode
                    && isAutoPinConfirmPossible(length)
                    && !isSupervisingProfile()) {
                mAutoPinConfirmOption.setVisibility(View.VISIBLE);
                mAutoConfirmSecurityMessage.setVisibility(View.VISIBLE);
                if (!mIsAutoPinConfirmOptionSetManually) {
@@ -1184,10 +1204,18 @@ public class ChooseLockPassword extends SettingsActivity {
                    && android.multiuser.Flags.enablePrivateSpaceFeatures()
                    && userManager.isPrivateProfile()) {
                return ProfileType.Private;
            } else if (android.multiuser.Flags.allowSupervisingProfile()
                    && userManager.isUserOfType(USER_TYPE_PROFILE_SUPERVISING)) {
                return ProfileType.Supervising;
            } else if (userManager.isProfile()) {
                return ProfileType.Other;
            }
            return ProfileType.None;
        }

        private boolean isSupervisingProfile() {
            return android.multiuser.Flags.allowSupervisingProfile()
                    && mProfileType.equals(ProfileType.Supervising);
        }
    }
}
+2 −11
Original line number Diff line number Diff line
@@ -21,9 +21,6 @@ import android.Manifest.permission.INTERACT_ACROSS_USERS_FULL
import android.Manifest.permission.MANAGE_USERS
import android.app.ActivityManager
import android.app.KeyguardManager
import android.app.admin.DevicePolicyManager.ACTION_SET_NEW_PASSWORD
import android.app.admin.DevicePolicyManager.EXTRA_PASSWORD_COMPLEXITY
import android.app.admin.DevicePolicyManager.PASSWORD_COMPLEXITY_LOW
import android.app.supervision.SupervisionManager
import android.app.supervision.flags.Flags
import android.content.Intent
@@ -34,7 +31,7 @@ import android.os.UserManager.USER_TYPE_PROFILE_SUPERVISING
import android.util.Log
import androidx.annotation.RequiresPermission
import androidx.fragment.app.FragmentActivity
import com.android.settings.password.ChooseLockSettingsHelper.EXTRA_KEY_FINGERPRINT_ENROLLMENT_ONLY
import com.android.settings.password.ChooseLockPassword
import com.android.settingslib.supervision.SupervisionLog

/**
@@ -97,13 +94,7 @@ class SetupSupervisionActivity : FragmentActivity() {

    @RequiresPermission(anyOf = [INTERACT_ACROSS_USERS_FULL, INTERACT_ACROSS_USERS])
    private fun startChooseLockActivity(userHandle: UserHandle) {
        // TODO(b/389712273) Intent directly to PIN selection screen to avoid giving the user
        //  the options for password/pattern during the initial setup flow
        val intent =
            Intent(ACTION_SET_NEW_PASSWORD).apply {
                putExtra(EXTRA_PASSWORD_COMPLEXITY, PASSWORD_COMPLEXITY_LOW)
                putExtra(EXTRA_KEY_FINGERPRINT_ENROLLMENT_ONLY, true)
            }
        val intent = Intent(this, ChooseLockPassword::class.java)
        startActivityForResultAsUser(intent, REQUEST_CODE_SET_SUPERVISION_LOCK, userHandle)
    }

+2 −18
Original line number Diff line number Diff line
@@ -16,7 +16,6 @@
package com.android.settings.supervision

import android.app.Activity
import android.app.admin.DevicePolicyManager
import android.app.supervision.SupervisionManager
import android.app.supervision.SupervisionRecoveryInfo
import android.app.supervision.SupervisionRecoveryInfo.STATE_PENDING
@@ -30,7 +29,7 @@ import androidx.activity.result.ActivityResultLauncher
import androidx.activity.result.contract.ActivityResultContracts
import androidx.fragment.app.FragmentActivity
import com.android.settings.R
import com.android.settings.password.ChooseLockSettingsHelper
import com.android.settings.password.ChooseLockPassword
import com.android.settingslib.supervision.SupervisionIntentProvider
import com.android.settingslib.supervision.SupervisionLog

@@ -222,22 +221,7 @@ class SupervisionPinRecoveryActivity : FragmentActivity() {
    /** Starts the reset supervision PIN activity for the supervising user. */
    private fun startResetPinActivity() {
        // TODO(b/407064075): reset the user or use other activity to skip entering current PIN.
        val intent =
            Intent(DevicePolicyManager.ACTION_SET_NEW_PASSWORD).apply {
                putExtra(
                    DevicePolicyManager.EXTRA_PASSWORD_COMPLEXITY,
                    DevicePolicyManager.PASSWORD_COMPLEXITY_LOW,
                )
                putExtra(ChooseLockSettingsHelper.EXTRA_KEY_FINGERPRINT_ENROLLMENT_ONLY, true)
                putExtra(
                    ChooseLockSettingsHelper.EXTRA_KEY_CHOOSE_LOCK_SCREEN_TITLE,
                    getString(R.string.supervision_lock_setup_title),
                )
                putExtra(
                    ChooseLockSettingsHelper.EXTRA_KEY_CHOOSE_LOCK_SCREEN_DESCRIPTION,
                    getString(R.string.supervision_lock_setup_description),
                )
            }
        val intent = Intent(this, ChooseLockPassword::class.java)
        setPinLauncher.launch(intent)
    }