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

Commit ba1b3340 authored by Jim Miller's avatar Jim Miller Committed by Android Git Automerger
Browse files

am 602d559d: Merge "Several fixes to new EncryptionInterstitial dialog." into lmp-dev

* commit '602d559d':
  Several fixes to new EncryptionInterstitial dialog.
parents edbada7a 602d559d
Loading
Loading
Loading
Loading
+19 −14
Original line number Diff line number Diff line
@@ -45,6 +45,7 @@ import com.android.internal.widget.LockPatternUtils;
import java.util.List;

public class ChooseLockGeneric extends SettingsActivity {
    public static final String CONFIRM_CREDENTIALS = "confirm_credentials";

    @Override
    public Intent getIntent() {
@@ -75,7 +76,7 @@ public class ChooseLockGeneric extends SettingsActivity {
        private static final int FALLBACK_REQUEST = 101;
        private static final int ENABLE_ENCRYPTION_REQUEST = 102;
        private static final String PASSWORD_CONFIRMED = "password_confirmed";
        private static final String CONFIRM_CREDENTIALS = "confirm_credentials";

        private static final String WAITING_FOR_CONFIRMATION = "waiting_for_confirmation";
        private static final String FINISH_PENDING = "finish_pending";
        public static final String MINIMUM_QUALITY_KEY = "minimum_quality";
@@ -92,6 +93,8 @@ public class ChooseLockGeneric extends SettingsActivity {
        private boolean mFinishPending = false;
        private int mEncryptionRequestQuality;
        private boolean mEncryptionRequestDisabled;
        private boolean mRequirePassword;
        private LockPatternUtils mLockPatternUtils;

        @Override
        public void onCreate(Bundle savedInstanceState) {
@@ -100,6 +103,7 @@ public class ChooseLockGeneric extends SettingsActivity {
            mDPM = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
            mKeyStore = KeyStore.getInstance();
            mChooseLockSettingsHelper = new ChooseLockSettingsHelper(this.getActivity());
            mLockPatternUtils = new LockPatternUtils(getActivity());

            // Defaults to needing to confirm credentials
            final boolean confirmCredentials = getActivity().getIntent()
@@ -183,9 +187,16 @@ public class ChooseLockGeneric extends SettingsActivity {
            if (Process.myUserHandle().isOwner() && LockPatternUtils.isDeviceEncryptionEnabled()) {
                mEncryptionRequestQuality = quality;
                mEncryptionRequestDisabled = disabled;
                Intent intent = EncryptionInterstitial.createStartIntent(getActivity(), quality);
                // If accessibility is enabled and the user hasn't seen this dialog before, set the
                // default state to agree with that which is compatible with accessibility
                // (password not required).
                final boolean accEn = AccessibilityManager.getInstance(getActivity()).isEnabled();
                final boolean required = mLockPatternUtils.isCredentialRequiredToDecrypt(!accEn);
                Intent intent = EncryptionInterstitial.createStartIntent(
                        getActivity(), quality, required);
                startActivityForResult(intent, ENABLE_ENCRYPTION_REQUEST);
            } else {
                mRequirePassword = false; // device encryption not enabled or not device owner.
                updateUnlockMethodAndFinish(quality, disabled);
            }
        }
@@ -218,6 +229,8 @@ public class ChooseLockGeneric extends SettingsActivity {
                finish();
            } else if (requestCode == ENABLE_ENCRYPTION_REQUEST
                    && resultCode == Activity.RESULT_OK) {
                mRequirePassword = data.getBooleanExtra(
                        EncryptionInterstitial.EXTRA_REQUIRE_PASSWORD, true);
                updateUnlockMethodAndFinish(mEncryptionRequestQuality, mEncryptionRequestDisabled);
            } else {
                getActivity().setResult(Activity.RESULT_CANCELED);
@@ -412,13 +425,8 @@ public class ChooseLockGeneric extends SettingsActivity {
                    minLength = MIN_PASSWORD_LENGTH;
                }
                final int maxLength = mDPM.getPasswordMaximumLength(quality);
                Intent intent = new Intent().setClass(getActivity(), ChooseLockPassword.class);
                intent.putExtra(LockPatternUtils.PASSWORD_TYPE_KEY, quality);
                intent.putExtra(ChooseLockPassword.PASSWORD_MIN_KEY, minLength);
                intent.putExtra(ChooseLockPassword.PASSWORD_MAX_KEY, maxLength);
                intent.putExtra(CONFIRM_CREDENTIALS, false);
                intent.putExtra(LockPatternUtils.LOCKSCREEN_BIOMETRIC_WEAK_FALLBACK,
                        isFallback);
                Intent intent = ChooseLockPassword.createIntent(getActivity(), quality, isFallback,
                        minLength, maxLength, mRequirePassword, false /* confirm credentials */);
                if (isFallback) {
                    startActivityForResult(intent, FALLBACK_REQUEST);
                    return;
@@ -428,11 +436,8 @@ public class ChooseLockGeneric extends SettingsActivity {
                    startActivity(intent);
                }
            } else if (quality == DevicePolicyManager.PASSWORD_QUALITY_SOMETHING) {
                Intent intent = new Intent(getActivity(), ChooseLockPattern.class);
                intent.putExtra("key_lock_method", "pattern");
                intent.putExtra(CONFIRM_CREDENTIALS, false);
                intent.putExtra(LockPatternUtils.LOCKSCREEN_BIOMETRIC_WEAK_FALLBACK,
                        isFallback);
                Intent intent = ChooseLockPattern.createIntent(getActivity(),
                        isFallback, mRequirePassword, false /* confirm credentials */);
                if (isFallback) {
                    startActivityForResult(intent, FALLBACK_REQUEST);
                    return;
+17 −0
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import android.app.Activity;
import android.app.Fragment;
import android.app.admin.DevicePolicyManager;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.inputmethodservice.KeyboardView;
import android.os.Bundle;
@@ -64,6 +65,19 @@ public class ChooseLockPassword extends SettingsActivity {
        return modIntent;
    }

    public static Intent createIntent(Context context, int quality, final boolean isFallback,
            int minLength, final int maxLength, boolean requirePasswordToDecrypt,
            boolean confirmCredentials) {
        Intent intent = new Intent().setClass(context, ChooseLockPassword.class);
        intent.putExtra(LockPatternUtils.PASSWORD_TYPE_KEY, quality);
        intent.putExtra(PASSWORD_MIN_KEY, minLength);
        intent.putExtra(PASSWORD_MAX_KEY, maxLength);
        intent.putExtra(ChooseLockGeneric.CONFIRM_CREDENTIALS, confirmCredentials);
        intent.putExtra(LockPatternUtils.LOCKSCREEN_BIOMETRIC_WEAK_FALLBACK, isFallback);
        intent.putExtra(EncryptionInterstitial.EXTRA_REQUIRE_PASSWORD, requirePasswordToDecrypt);
        return intent;
    }

    @Override
    protected boolean isValidFragment(String fragmentName) {
        if (ChooseLockPasswordFragment.class.getName().equals(fragmentName)) return true;
@@ -412,6 +426,9 @@ public class ChooseLockPassword extends SettingsActivity {
                    final boolean isFallback = getActivity().getIntent().getBooleanExtra(
                            LockPatternUtils.LOCKSCREEN_BIOMETRIC_WEAK_FALLBACK, false);
                    mLockPatternUtils.clearLock(isFallback);
                    final boolean required = getActivity().getIntent().getBooleanExtra(
                            EncryptionInterstitial.EXTRA_REQUIRE_PASSWORD, true);
                    mLockPatternUtils.setCredentialRequiredToDecrypt(required);
                    mLockPatternUtils.saveLockPassword(pin, mRequestedQuality, isFallback);
                    getActivity().setResult(RESULT_FINISHED);
                    getActivity().finish();
+15 −0
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@ import static com.android.internal.widget.LockPatternView.DisplayMode;
import android.app.Activity;
import android.app.Fragment;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.provider.Settings;
@@ -68,6 +69,16 @@ public class ChooseLockPattern extends SettingsActivity {
        return modIntent;
    }

    public static Intent createIntent(Context context, final boolean isFallback,
            boolean requirePassword, boolean confirmCredentials) {
        Intent intent = new Intent(context, ChooseLockPattern.class);
        intent.putExtra("key_lock_method", "pattern");
        intent.putExtra(ChooseLockGeneric.CONFIRM_CREDENTIALS, confirmCredentials);
        intent.putExtra(LockPatternUtils.LOCKSCREEN_BIOMETRIC_WEAK_FALLBACK, isFallback);
        intent.putExtra(EncryptionInterstitial.EXTRA_REQUIRE_PASSWORD, requirePassword);
        return intent;
    }

    @Override
    protected boolean isValidFragment(String fragmentName) {
        if (ChooseLockPatternFragment.class.getName().equals(fragmentName)) return true;
@@ -528,6 +539,10 @@ public class ChooseLockPattern extends SettingsActivity {

            final boolean isFallback = getActivity().getIntent()
                .getBooleanExtra(LockPatternUtils.LOCKSCREEN_BIOMETRIC_WEAK_FALLBACK, false);

            final boolean required = getActivity().getIntent().getBooleanExtra(
                    EncryptionInterstitial.EXTRA_REQUIRE_PASSWORD, true);
            utils.setCredentialRequiredToDecrypt(required);
            utils.saveLockPattern(mChosenPattern, isFallback);
            utils.setLockPatternEnabled(true);

+25 −19
Original line number Diff line number Diff line
@@ -24,8 +24,6 @@ import android.app.admin.DevicePolicyManager;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.PersistableBundle;
import android.provider.Settings;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -35,6 +33,7 @@ import android.widget.TextView;
public class EncryptionInterstitial extends SettingsActivity {

    private static final String EXTRA_PASSWORD_QUALITY = "extra_password_quality";
    public static final String EXTRA_REQUIRE_PASSWORD = "extra_require_password";

    @Override
    public Intent getIntent() {
@@ -48,14 +47,16 @@ public class EncryptionInterstitial extends SettingsActivity {
        return EncryptionInterstitialFragment.class.getName().equals(fragmentName);
    }

    public static Intent createStartIntent(Context ctx, int quality) {
    public static Intent createStartIntent(Context ctx, int quality,
            boolean requirePasswordDefault) {
        return new Intent(ctx, EncryptionInterstitial.class)
                .putExtra(EXTRA_PREFS_SHOW_BUTTON_BAR, true)
                .putExtra(EXTRA_PREFS_SET_BACK_TEXT, (String) null)
                .putExtra(EXTRA_PREFS_SET_NEXT_TEXT, ctx.getString(
                        R.string.encryption_continue_button))
                .putExtra(EXTRA_PASSWORD_QUALITY, quality)
                .putExtra(EXTRA_SHOW_FRAGMENT_TITLE_RESID, R.string.encryption_interstitial_header);
                .putExtra(EXTRA_SHOW_FRAGMENT_TITLE_RESID, R.string.encryption_interstitial_header)
                .putExtra(EXTRA_REQUIRE_PASSWORD, requirePasswordDefault);
    }

    public static class EncryptionInterstitialFragment extends SettingsPreferenceFragment
@@ -64,6 +65,7 @@ public class EncryptionInterstitial extends SettingsActivity {
        private RadioButton mRequirePasswordToDecryptButton;
        private RadioButton mDontRequirePasswordToDecryptButton;
        private TextView mEncryptionMessage;
        private boolean mPasswordRequired;

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
@@ -98,32 +100,36 @@ public class EncryptionInterstitial extends SettingsActivity {
                    disableId = R.string.encrypt_dont_require_password;
                    break;
            }
            mPasswordRequired = getActivity().getIntent().getBooleanExtra(
                    EXTRA_REQUIRE_PASSWORD, true);

            mEncryptionMessage.setText(msgId);

            mRequirePasswordToDecryptButton.setOnClickListener(this);
            mRequirePasswordToDecryptButton.setText(enableId);
            mRequirePasswordToDecryptButton.setChecked(mPasswordRequired);

            mDontRequirePasswordToDecryptButton.setOnClickListener(this);
            mDontRequirePasswordToDecryptButton.setText(disableId);
            mDontRequirePasswordToDecryptButton.setChecked(!mPasswordRequired);

            updateRequirePasswordIntent();
            return view;
        }

        @Override
        public void onResume() {
            super.onResume();
            loadFromSettings();
        }

        private void loadFromSettings() {
            final boolean required = Settings.Global.getInt(getContentResolver(),
                    Settings.Global.REQUIRE_PASSWORD_TO_DECRYPT, 1) == 1 ? true : false;
            mRequirePasswordToDecryptButton.setChecked(required);
            mDontRequirePasswordToDecryptButton.setChecked(!required);
        public void onClick(View v) {
            mPasswordRequired = (v == mRequirePasswordToDecryptButton);
            updateRequirePasswordIntent();
        }

        @Override
        public void onClick(View v) {
            final boolean required = (v == mRequirePasswordToDecryptButton);
            Settings.Global.putInt(getContentResolver(),
                    Settings.Global.REQUIRE_PASSWORD_TO_DECRYPT, required ? 1 : 0);
        // Updates the value we want to return.
        private void updateRequirePasswordIntent() {
            SettingsActivity sa = (SettingsActivity)getActivity();
            Intent resultIntentData = sa.getResultIntentData();
            resultIntentData = resultIntentData == null ? new Intent() : resultIntentData;
            resultIntentData.putExtra(EXTRA_REQUIRE_PASSWORD, mPasswordRequired);
            sa.setResultIntentData(resultIntentData);
        }
    }
}
+2 −5
Original line number Diff line number Diff line
@@ -218,15 +218,12 @@ public class SecuritySettings extends SettingsPreferenceFragment
        }

        if (mIsPrimary) {
            switch (mDPM.getStorageEncryptionStatus()) {
            case DevicePolicyManager.ENCRYPTION_STATUS_ACTIVE:
            if (LockPatternUtils.isDeviceEncryptionEnabled()) {
                // The device is currently encrypted.
                addPreferencesFromResource(R.xml.security_settings_encrypted);
                break;
            case DevicePolicyManager.ENCRYPTION_STATUS_INACTIVE:
            } else {
                // This device supports encryption but isn't encrypted.
                addPreferencesFromResource(R.xml.security_settings_unencrypted);
                break;
            }
        }

Loading