Merge "Add toggle to allow or disable null algorithms"
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 9998d08..5352562 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -2586,13 +2586,6 @@
android:theme="@style/GlifTheme.Light"
android:windowSoftInputMode="stateVisible|adjustResize"/>
- <activity android:name=".SetupEncryptionInterstitial"
- android:label="@string/encryption_interstitial_header"
- android:theme="@style/GlifTheme.Light"/>
-
- <activity android:name=".EncryptionInterstitial"
- android:theme="@style/GlifTheme.Light" />
-
<activity
android:name=".Settings$StorageDashboardActivity"
android:label="@string/storage_settings"
diff --git a/res/layout/dialog_sim_status.xml b/res/layout/dialog_sim_status.xml
index 4fc7f46..b9abb15 100644
--- a/res/layout/dialog_sim_status.xml
+++ b/res/layout/dialog_sim_status.xml
@@ -162,18 +162,8 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/status_esim_id"/>
- <TextView
- style="@style/device_info_dialog_value"
- android:id="@+id/esim_id_value"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:textIsSelectable="true"
- android:text="@string/device_info_not_available"/>
- <ImageView
- android:id="@+id/esim_id_qrcode"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- tools:ignore="ContentDescription" />
+
+ <include layout="@xml/esim_eid_and_qrcode" />
<TextView
style="@style/device_info_dialog_label"
diff --git a/res/layout/encryption_interstitial.xml b/res/layout/encryption_interstitial.xml
deleted file mode 100644
index 61ed292..0000000
--- a/res/layout/encryption_interstitial.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (C) 2017 The Android Open Source Project
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-
-<com.google.android.setupdesign.GlifLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:icon="@drawable/ic_lock">
-
- <LinearLayout
- style="@style/SudContentFrame"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:clipChildren="false"
- android:clipToPadding="false"
- android:orientation="vertical">
-
- <TextView
- android:id="@+id/sud_layout_description"
- style="@style/SudDescription.Glif"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content" />
-
- </LinearLayout>
-
-</com.google.android.setupdesign.GlifLayout>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 00cd34d..733d0e1 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -8160,73 +8160,6 @@
<!-- Summary for work profile accounts group. [CHAR LIMIT=25] -->
<string name="managing_admin">Managed by <xliff:g id="admin_app_label">%s</xliff:g></string>
- <!-- Encryption interstitial title. This screen asks the user whether the device will ask for a PIN / pattern / password before the device starts up. [CHAR LIMIT=30] -->
- <string name="encryption_interstitial_header">Secure start-up</string>
-
- <!-- Message shown on encryption interstitial to ask the user whether or not they want to use a PIN to encrypt the device. [CHAR LIMIT=NONE] -->
- <string name="encryption_interstitial_message_pin">
- You can further protect this device by requiring your PIN before it starts up. Until the device starts up, it can\u2019t receive calls, messages, or notifications, including alarms.
- \n\nThis helps protect data on lost or stolen devices. Require PIN to start your device?
- </string>
- <!-- Message shown on encryption interstitial to ask the user whether or not they want to use a pattern to encrypt the device. [CHAR LIMIT=NONE] -->
- <string name="encryption_interstitial_message_pattern">
- You can further protect this device by requiring your pattern before it starts up. Until the device starts up, it can\u2019t receive calls, messages, or notifications, including alarms.
- \n\nThis helps protect data on lost or stolen devices. Require pattern to start your device?
- </string>
- <!-- Message shown on encryption interstitial to ask the user whether or not they want to use a password to encrypt the device. [CHAR LIMIT=NONE] -->
- <string name="encryption_interstitial_message_password">
- You can further protect this device by requiring your password before it starts up. Until the device starts up, it can\u2019t receive calls, messages, or notifications, including alarms.
- \n\nThis helps protect data on lost or stolen devices. Require password to start your device?
- </string>
-
- <!-- Message shown on encryption interstitial to ask the user whether or not they want to use a PIN to encrypt the device while setting up fingerprint unlock. [CHAR LIMIT=NONE] -->
- <string name="encryption_interstitial_message_pin_for_fingerprint">In addition to using your fingerprint to unlock your device, you can further protect this device by requiring your PIN before it starts up. Until the device starts up, it can\u2019t receive calls, messages, or notifications, including alarms.\n\nThis helps protect data on lost or stolen devices. Require PIN to start your device?</string>
- <!-- Message shown on encryption interstitial to ask the user whether or not they want to use a pattern to encrypt the device while setting up fingerprint unlock. [CHAR LIMIT=NONE] -->
- <string name="encryption_interstitial_message_pattern_for_fingerprint">In addition to using your fingerprint to unlock your device, you can further protect this device by requiring your pattern before it starts up. Until the device starts up, it can\u2019t receive calls, messages, or notifications, including alarms.\n\nThis helps protect data on lost or stolen devices. Require pattern to start your device?</string>
- <!-- Message shown on encryption interstitial to ask the user whether or not they want to use a password to encrypt the device while setting up fingerprint unlock. [CHAR LIMIT=NONE] -->
- <string name="encryption_interstitial_message_password_for_fingerprint">In addition to using your fingerprint to unlock your device, you can further protect this device by requiring your password before it starts up. Until the device starts up, it can\u2019t receive calls, messages, or notifications, including alarms.\n\nThis helps protect data on lost or stolen devices. Require password to start your device?</string>
-
- <!-- Message shown on encryption interstitial to ask the user whether or not they want to use a PIN to encrypt the device while setting up face unlock. [CHAR LIMIT=NONE] -->
- <string name="encryption_interstitial_message_pin_for_face">In addition to using your face to unlock your device, you can further protect this device by requiring your PIN before it starts up. Until the device starts up, it can\u2019t receive calls, messages, or notifications, including alarms.\n\nThis helps protect data on lost or stolen devices. Require PIN to start your device?</string>
- <!-- Message shown on encryption interstitial to ask the user whether or not they want to use a pattern to encrypt the device while setting up face unlock. [CHAR LIMIT=NONE] -->
- <string name="encryption_interstitial_message_pattern_for_face">In addition to using your face to unlock your device, you can further protect this device by requiring your pattern before it starts up. Until the device starts up, it can\u2019t receive calls, messages, or notifications, including alarms.\n\nThis helps protect data on lost or stolen devices. Require pattern to start your device?</string>
- <!-- Message shown on encryption interstitial to ask the user whether or not they want to use a password to encrypt the device while setting up face unlock. [CHAR LIMIT=NONE] -->
- <string name="encryption_interstitial_message_password_for_face">In addition to using your face to unlock your device, you can further protect this device by requiring your password before it starts up. Until the device starts up, it can\u2019t receive calls, messages, or notifications, including alarms.\n\nThis helps protect data on lost or stolen devices. Require password to start your device?</string>
-
- <!-- Message shown on encryption interstitial to ask the user whether or not they want to use a PIN to encrypt the device while setting up biometric unlock. [CHAR LIMIT=NONE] -->
- <string name="encryption_interstitial_message_pin_for_biometrics">In addition to using your biometrics to unlock your device, you can further protect this device by requiring your PIN before it starts up. Until the device starts up, it can\u2019t receive calls, messages, or notifications, including alarms.\n\nThis helps protect data on lost or stolen devices. Require PIN to start your device?</string>
- <!-- Message shown on encryption interstitial to ask the user whether or not they want to use a pattern to encrypt the device while setting up biometric unlock. [CHAR LIMIT=NONE] -->
- <string name="encryption_interstitial_message_pattern_for_biometrics">In addition to using your biometrics to unlock your device, you can further protect this device by requiring your pattern before it starts up. Until the device starts up, it can\u2019t receive calls, messages, or notifications, including alarms.\n\nThis helps protect data on lost or stolen devices. Require pattern to start your device?</string>
- <!-- Message shown on encryption interstitial to ask the user whether or not they want to use a password to encrypt the device while setting up biometric unlock. [CHAR LIMIT=NONE] -->
- <string name="encryption_interstitial_message_password_for_biometrics">In addition to using your biometrics to unlock your device, you can further protect this device by requiring your password before it starts up. Until the device starts up, it can\u2019t receive calls, messages, or notifications, including alarms.\n\nThis helps protect data on lost or stolen devices. Require password to start your device?</string>
-
-
- <!-- Button label to say yes to the question of whether to require PIN/password/pattern to start your device. [CHAR LIMIT=20] -->
- <string name="encryption_interstitial_yes">Yes</string>
- <!-- Button label to say no to the question of whether to require PIN/password/pattern to start your device. [CHAR LIMIT=20] -->
- <string name="encryption_interstitial_no">No</string>
-
- <!-- Title for encryption dialog that disables TalkBack. [CHAR_LIMIT=25] -->
- <string name="encrypt_talkback_dialog_require_pin">Require PIN?</string>
-
- <!-- Title for encryption dialog that disables TalkBack. [CHAR_LIMIT=25] -->
- <string name="encrypt_talkback_dialog_require_pattern">Require pattern?</string>
-
- <!-- Title for encryption dialog that disables TalkBack. [CHAR_LIMIT=25] -->
- <string name="encrypt_talkback_dialog_require_password">Require password?</string>
-
- <!-- Message for encryption dialog telling the user that Talkback and other accessibility services will be disabled. -->
- <string name="encrypt_talkback_dialog_message_pin">When you enter your PIN to start this device, accessibility services like <xliff:g id="service" example="TalkBack">%1$s</xliff:g> won\u2019t yet be available.</string>
-
- <!-- Message for encryption dialog telling the user that Talkback and other accessibility services will be disabled. -->
- <string name="encrypt_talkback_dialog_message_pattern">When you enter your pattern to start this device, accessibility services like <xliff:g id="service" example="TalkBack">%1$s</xliff:g> won\u2019t yet be available.</string>
-
- <!-- Message for encryption dialog telling the user that Talkback and other accessibility services will be disabled. -->
- <string name="encrypt_talkback_dialog_message_password">When you enter your password to start this device, accessibility services like <xliff:g id="service" example="TalkBack">%1$s</xliff:g> won\u2019t yet be available.</string>
-
- <!-- [CHAR LIMIT=NONE] Dialog body explaining that the app just selected by the user will not work after a reboot until until after the user enters their credentials, such as a PIN or password. -->
- <string name="direct_boot_unaware_dialog_message">Note: If you restart your phone and have a screen lock set, this app can\'t start until you unlock your phone</string>
-
<!-- New strings needed for App Info 2 -->
<!-- Preference label for app default launch settings [CHAR LIMIT=35]-->
<string name="launch_by_default">Open by default</string>
diff --git a/res/xml/esim_eid_and_qrcode.xml b/res/xml/esim_eid_and_qrcode.xml
new file mode 100644
index 0000000..b1f1634
--- /dev/null
+++ b/res/xml/esim_eid_and_qrcode.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2022 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<merge xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools">
+
+ <TextView
+ style="@style/device_info_dialog_value"
+ android:id="@+id/esim_id_value"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:textIsSelectable="true"
+ android:text="@string/device_info_not_available"/>
+ <ImageView
+ android:id="@+id/esim_id_qrcode"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ tools:ignore="ContentDescription" />
+
+</merge>
diff --git a/src/com/android/settings/EncryptionInterstitial.java b/src/com/android/settings/EncryptionInterstitial.java
deleted file mode 100644
index 4ab197d..0000000
--- a/src/com/android/settings/EncryptionInterstitial.java
+++ /dev/null
@@ -1,307 +0,0 @@
-/*
- * Copyright (C) 2014 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.settings;
-
-import android.accessibilityservice.AccessibilityServiceInfo;
-import android.app.Activity;
-import android.app.Dialog;
-import android.app.admin.DevicePolicyManager;
-import android.app.settings.SettingsEnums;
-import android.content.Context;
-import android.content.DialogInterface;
-import android.content.Intent;
-import android.content.res.Resources;
-import android.os.Bundle;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.accessibility.AccessibilityManager;
-import android.widget.TextView;
-
-import androidx.appcompat.app.AlertDialog;
-
-import com.android.settings.core.InstrumentedFragment;
-import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
-import com.android.settings.password.ChooseLockSettingsHelper;
-
-import com.google.android.setupcompat.template.FooterBarMixin;
-import com.google.android.setupcompat.template.FooterButton;
-import com.google.android.setupdesign.GlifLayout;
-
-import java.util.List;
-
-public class EncryptionInterstitial extends SettingsActivity {
- private static final String TAG = EncryptionInterstitial.class.getSimpleName();
-
- protected static final String EXTRA_PASSWORD_QUALITY = "extra_password_quality";
- protected static final String EXTRA_UNLOCK_METHOD_INTENT = "extra_unlock_method_intent";
- public static final String EXTRA_REQUIRE_PASSWORD = "extra_require_password";
- private static final int CHOOSE_LOCK_REQUEST = 100;
-
- @Override
- public Intent getIntent() {
- Intent modIntent = new Intent(super.getIntent());
- modIntent.putExtra(EXTRA_SHOW_FRAGMENT, EncryptionInterstitialFragment.class.getName());
- return modIntent;
- }
-
- @Override
- protected void onApplyThemeResource(Resources.Theme theme, int resid, boolean first) {
- final int new_resid = SetupWizardUtils.getTheme(this, getIntent());
- super.onApplyThemeResource(theme, new_resid, first);
- }
-
- @Override
- protected boolean isValidFragment(String fragmentName) {
- return EncryptionInterstitialFragment.class.getName().equals(fragmentName);
- }
-
- public static Intent createStartIntent(Context ctx, int quality,
- boolean requirePasswordDefault, Intent unlockMethodIntent) {
- return new Intent(ctx, EncryptionInterstitial.class)
- .putExtra(EXTRA_PASSWORD_QUALITY, quality)
- .putExtra(EXTRA_SHOW_FRAGMENT_TITLE_RESID, R.string.encryption_interstitial_header)
- .putExtra(EXTRA_REQUIRE_PASSWORD, requirePasswordDefault)
- .putExtra(EXTRA_UNLOCK_METHOD_INTENT, unlockMethodIntent);
- }
-
- @Override
- protected void onCreate(Bundle savedInstance) {
- super.onCreate(savedInstance);
- findViewById(R.id.content_parent).setFitsSystemWindows(false);
- }
-
- public static class EncryptionInterstitialFragment extends InstrumentedFragment {
-
- private boolean mPasswordRequired;
- private Intent mUnlockMethodIntent;
- private int mRequestedPasswordQuality;
-
- @Override
- public int getMetricsCategory() {
- return SettingsEnums.ENCRYPTION;
- }
-
- @Override
- public View onCreateView(
- LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
- return inflater.inflate(R.layout.encryption_interstitial, container, false);
- }
-
- @Override
- public void onViewCreated(View view, Bundle savedInstanceState) {
- super.onViewCreated(view, savedInstanceState);
-
- final boolean forFingerprint = getActivity().getIntent().getBooleanExtra(
- ChooseLockSettingsHelper.EXTRA_KEY_FOR_FINGERPRINT, false);
- final boolean forFace = getActivity().getIntent()
- .getBooleanExtra(ChooseLockSettingsHelper.EXTRA_KEY_FOR_FACE, false);
- final boolean forBiometrics = getActivity().getIntent()
- .getBooleanExtra(ChooseLockSettingsHelper.EXTRA_KEY_FOR_BIOMETRICS, false);
- Intent intent = getActivity().getIntent();
- mRequestedPasswordQuality = intent.getIntExtra(EXTRA_PASSWORD_QUALITY, 0);
- mUnlockMethodIntent = intent.getParcelableExtra(EXTRA_UNLOCK_METHOD_INTENT);
- final int msgId;
- switch (mRequestedPasswordQuality) {
- case DevicePolicyManager.PASSWORD_QUALITY_SOMETHING:
- msgId = forFingerprint ?
- R.string.encryption_interstitial_message_pattern_for_fingerprint :
- forFace ?
- R.string.encryption_interstitial_message_pattern_for_face :
- forBiometrics ?
- R.string.encryption_interstitial_message_pattern_for_biometrics :
- R.string.encryption_interstitial_message_pattern;
- break;
- case DevicePolicyManager.PASSWORD_QUALITY_NUMERIC:
- case DevicePolicyManager.PASSWORD_QUALITY_NUMERIC_COMPLEX:
- msgId = forFingerprint ?
- R.string.encryption_interstitial_message_pin_for_fingerprint :
- forFace ?
- R.string.encryption_interstitial_message_pin_for_face :
- forBiometrics ?
- R.string.encryption_interstitial_message_pin_for_biometrics :
- R.string.encryption_interstitial_message_pin;
- break;
- default:
- msgId = forFingerprint ?
- R.string.encryption_interstitial_message_password_for_fingerprint :
- forFace ?
- R.string.encryption_interstitial_message_password_for_face :
- forBiometrics ?
- R.string.encryption_interstitial_message_password_for_biometrics :
- R.string.encryption_interstitial_message_password;
- break;
- }
- TextView message = (TextView) getActivity().findViewById(R.id.sud_layout_description);
- message.setText(msgId);
-
- setRequirePasswordState(getActivity().getIntent().getBooleanExtra(
- EXTRA_REQUIRE_PASSWORD, true));
-
- GlifLayout layout = (GlifLayout) view;
- layout.setHeaderText(getActivity().getTitle());
-
- final FooterBarMixin mixin = layout.getMixin(FooterBarMixin.class);
- mixin.setSecondaryButton(
- new FooterButton.Builder(getContext())
- .setText(R.string.encryption_interstitial_no)
- .setListener(this::onNoButtonClicked)
- .setButtonType(FooterButton.ButtonType.SKIP)
- .setTheme(R.style.SudGlifButton_Secondary)
- .build()
- );
-
- mixin.setPrimaryButton(
- new FooterButton.Builder(getContext())
- .setText(R.string.encryption_interstitial_yes)
- .setListener(this::onYesButtonClicked)
- .setButtonType(FooterButton.ButtonType.NEXT)
- .setTheme(R.style.SudGlifButton_Primary)
- .build()
- );
- }
-
- protected void startLockIntent() {
- if (mUnlockMethodIntent != null) {
- mUnlockMethodIntent.putExtra(EXTRA_REQUIRE_PASSWORD, mPasswordRequired);
- startActivityForResult(mUnlockMethodIntent, CHOOSE_LOCK_REQUEST);
- } else {
- Log.wtf(TAG, "no unlock intent to start");
- finish();
- }
- }
-
- @Override
- public void onActivityResult(int requestCode, int resultCode, Intent data) {
- super.onActivityResult(requestCode, resultCode, data);
- if (requestCode == CHOOSE_LOCK_REQUEST && resultCode != RESULT_CANCELED) {
- getActivity().setResult(resultCode, data);
- finish();
- }
- }
-
- private void onYesButtonClicked(View view) {
- final boolean accEn = AccessibilityManager.getInstance(getActivity()).isEnabled();
- if (accEn && !mPasswordRequired) {
- setRequirePasswordState(false); // clear the UI state
- AccessibilityWarningDialogFragment.newInstance(mRequestedPasswordQuality)
- .show(
- getChildFragmentManager(),
- AccessibilityWarningDialogFragment.TAG);
- } else {
- setRequirePasswordState(true);
- startLockIntent();
- }
- }
-
- private void onNoButtonClicked(View view) {
- setRequirePasswordState(false);
- startLockIntent();
- }
-
- private void setRequirePasswordState(boolean required) {
- mPasswordRequired = required;
- }
-
- public void finish() {
- Activity activity = getActivity();
- if (activity == null) return;
- if (getFragmentManager().getBackStackEntryCount() > 0) {
- getFragmentManager().popBackStack();
- } else {
- activity.finish();
- }
- }
- }
-
- public static class AccessibilityWarningDialogFragment extends InstrumentedDialogFragment
- implements DialogInterface.OnClickListener {
-
- public static final String TAG = "AccessibilityWarningDialog";
-
- public static AccessibilityWarningDialogFragment newInstance(int passwordQuality) {
- AccessibilityWarningDialogFragment fragment = new AccessibilityWarningDialogFragment();
- Bundle args = new Bundle(1);
- args.putInt(EXTRA_PASSWORD_QUALITY, passwordQuality);
- fragment.setArguments(args);
- return fragment;
- }
-
- @Override
- public Dialog onCreateDialog(Bundle savedInstanceState) {
- final int titleId;
- final int messageId;
- switch (getArguments().getInt(EXTRA_PASSWORD_QUALITY)) {
- case DevicePolicyManager.PASSWORD_QUALITY_SOMETHING:
- titleId = R.string.encrypt_talkback_dialog_require_pattern;
- messageId = R.string.encrypt_talkback_dialog_message_pattern;
- break;
- case DevicePolicyManager.PASSWORD_QUALITY_NUMERIC:
- case DevicePolicyManager.PASSWORD_QUALITY_NUMERIC_COMPLEX:
- titleId = R.string.encrypt_talkback_dialog_require_pin;
- messageId = R.string.encrypt_talkback_dialog_message_pin;
- break;
- default:
- titleId = R.string.encrypt_talkback_dialog_require_password;
- messageId = R.string.encrypt_talkback_dialog_message_password;
- break;
- }
-
-
- final Activity activity = getActivity();
- List<AccessibilityServiceInfo> list =
- AccessibilityManager.getInstance(activity)
- .getEnabledAccessibilityServiceList(
- AccessibilityServiceInfo.FEEDBACK_ALL_MASK);
- final CharSequence exampleAccessibility;
- if (list.isEmpty()) {
- // This should never happen. But we shouldn't crash
- exampleAccessibility = "";
- } else {
- exampleAccessibility = list.get(0).getResolveInfo()
- .loadLabel(activity.getPackageManager());
- }
- return new AlertDialog.Builder(activity)
- .setTitle(titleId)
- .setMessage(getString(messageId, exampleAccessibility))
- .setCancelable(true)
- .setPositiveButton(android.R.string.ok, this)
- .setNegativeButton(android.R.string.cancel, this)
- .create();
- }
-
- @Override
- public int getMetricsCategory() {
- return SettingsEnums.DIALOG_ENCRYPTION_INTERSTITIAL_ACCESSIBILITY;
- }
-
- @Override
- public void onClick(DialogInterface dialog, int which) {
- EncryptionInterstitialFragment fragment =
- (EncryptionInterstitialFragment) getParentFragment();
- if (fragment != null) {
- if (which == DialogInterface.BUTTON_POSITIVE) {
- fragment.setRequirePasswordState(true);
- fragment.startLockIntent();
- } else if (which == DialogInterface.BUTTON_NEGATIVE) {
- fragment.setRequirePasswordState(false);
- }
- }
- }
- }
-}
diff --git a/src/com/android/settings/SetupEncryptionInterstitial.java b/src/com/android/settings/SetupEncryptionInterstitial.java
deleted file mode 100644
index d9e265f..0000000
--- a/src/com/android/settings/SetupEncryptionInterstitial.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright (C) 2014 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.settings;
-
-import android.content.Context;
-import android.content.Intent;
-
-/**
- * Setup Wizard's version of EncryptionInterstitial screen. It inherits the logic and basic
- * structure from EncryptionInterstitial class, and should remain similar to that behaviorally. This
- * class should only overload base methods for minor theme and behavior differences specific to
- * Setup Wizard. Other changes should be done to EncryptionInterstitial class instead and let this
- * class inherit those changes.
- */
-public class SetupEncryptionInterstitial extends EncryptionInterstitial {
-
- public static Intent createStartIntent(Context ctx, int quality,
- boolean requirePasswordDefault, Intent unlockMethodIntent) {
- Intent startIntent = EncryptionInterstitial.createStartIntent(ctx, quality,
- requirePasswordDefault, unlockMethodIntent);
- startIntent.setClass(ctx, SetupEncryptionInterstitial.class);
- startIntent.putExtra(EXTRA_PREFS_SHOW_BUTTON_BAR, false)
- .putExtra(EXTRA_SHOW_FRAGMENT_TITLE_RESID, -1);
- return startIntent;
- }
-
- @Override
- public Intent getIntent() {
- Intent modIntent = new Intent(super.getIntent());
- modIntent.putExtra(EXTRA_SHOW_FRAGMENT,
- SetupEncryptionInterstitialFragment.class.getName());
- return modIntent;
- }
-
- @Override
- protected boolean isValidFragment(String fragmentName) {
- return SetupEncryptionInterstitialFragment.class.getName().equals(fragmentName);
- }
-
- public static class SetupEncryptionInterstitialFragment extends EncryptionInterstitialFragment {
- }
-}
diff --git a/src/com/android/settings/password/ChooseLockGeneric.java b/src/com/android/settings/password/ChooseLockGeneric.java
index 63c4a62..491d967 100644
--- a/src/com/android/settings/password/ChooseLockGeneric.java
+++ b/src/com/android/settings/password/ChooseLockGeneric.java
@@ -54,7 +54,6 @@
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
-import android.view.accessibility.AccessibilityManager;
import android.widget.TextView;
import androidx.annotation.StringRes;
@@ -67,7 +66,6 @@
import com.android.internal.widget.LockPatternUtils;
import com.android.internal.widget.LockscreenCredential;
-import com.android.settings.EncryptionInterstitial;
import com.android.settings.EventLogTags;
import com.android.settings.R;
import com.android.settings.SettingsActivity;
@@ -143,8 +141,6 @@
@VisibleForTesting
static final int CONFIRM_EXISTING_REQUEST = 100;
@VisibleForTesting
- static final int ENABLE_ENCRYPTION_REQUEST = 101;
- @VisibleForTesting
static final int CHOOSE_LOCK_REQUEST = 102;
@VisibleForTesting
static final int CHOOSE_LOCK_BEFORE_BIOMETRIC_REQUEST = 103;
@@ -156,7 +152,6 @@
private boolean mRequestGatekeeperPasswordHandle = false;
private boolean mPasswordConfirmed = false;
private boolean mWaitingForConfirmation = false;
- private boolean mForChangeCredRequiredForBoot = false;
private LockscreenCredential mUserPassword;
private FingerprintManager mFingerprintManager;
private FaceManager mFaceManager;
@@ -250,8 +245,6 @@
mIsCallingAppAdmin = intent
.getBooleanExtra(EXTRA_KEY_IS_CALLING_APP_ADMIN, /* defValue= */ false);
- mForChangeCredRequiredForBoot = arguments != null && arguments.getBoolean(
- ChooseLockSettingsHelper.EXTRA_KEY_FOR_CHANGE_CRED_REQUIRED_FOR_BOOT);
mUserManager = UserManager.get(activity);
if (arguments != null) {
@@ -299,10 +292,6 @@
if (mPasswordConfirmed) {
updatePreferencesOrFinish(savedInstanceState != null);
- if (mForChangeCredRequiredForBoot) {
- maybeEnableEncryption(mLockPatternUtils.getKeyguardStoredPasswordQuality(
- mUserId), false);
- }
} else if (!mWaitingForConfirmation) {
final ChooseLockSettingsHelper.Builder builder =
new ChooseLockSettingsHelper.Builder(activity, this);
@@ -447,58 +436,6 @@
}
}
- /**
- * If the device has encryption already enabled, then ask the user if they
- * also want to encrypt the phone with this password.
- *
- * @param quality
- * @param disabled
- */
- // TODO: why does this take disabled, its always called with a quality higher than
- // what makes sense with disabled == true
- private void maybeEnableEncryption(int quality, boolean disabled) {
- DevicePolicyManager dpm = (DevicePolicyManager) getSystemService(DEVICE_POLICY_SERVICE);
- if (UserManager.get(getActivity()).isAdminUser()
- && mUserId == UserHandle.myUserId()
- && LockPatternUtils.isDeviceEncryptionEnabled()
- && !LockPatternUtils.isFileEncryptionEnabled()
- && !dpm.getDoNotAskCredentialsOnBoot()) {
- // Get the intent that the encryption interstitial should start for creating
- // the new unlock method.
- Intent unlockMethodIntent = getIntentForUnlockMethod(quality);
- unlockMethodIntent.putExtra(
- ChooseLockSettingsHelper.EXTRA_KEY_FOR_CHANGE_CRED_REQUIRED_FOR_BOOT,
- mForChangeCredRequiredForBoot);
- final Context context = getActivity();
- // 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(context).isEnabled();
- final boolean required = mLockPatternUtils.isCredentialRequiredToDecrypt(!accEn);
- Intent intent = getEncryptionInterstitialIntent(context, quality, required,
- unlockMethodIntent);
- intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_FOR_FINGERPRINT,
- mForFingerprint);
- intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_FOR_FACE, mForFace);
- intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_FOR_BIOMETRICS, mForBiometrics);
- // If the caller requested Gatekeeper Password to be returned, we assume it came
- // from biometric enrollment. This should be cleaned up, since requesting
- // Gatekeeper Password should not imply it came from biometric setup/settings.
- startActivityForResult(
- intent,
- mIsSetNewPassword && mRequestGatekeeperPasswordHandle
- ? CHOOSE_LOCK_BEFORE_BIOMETRIC_REQUEST
- : ENABLE_ENCRYPTION_REQUEST);
- } else {
- if (mForChangeCredRequiredForBoot) {
- // Welp, couldn't change it. Oh well.
- finish();
- return;
- }
- updateUnlockMethodAndFinish(quality, disabled, false /* chooseLockSkipped */);
- }
- }
-
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
@@ -509,17 +446,8 @@
? data.getParcelableExtra(ChooseLockSettingsHelper.EXTRA_KEY_PASSWORD)
: null;
updatePreferencesOrFinish(false /* isRecreatingActivity */);
- if (mForChangeCredRequiredForBoot) {
- if (mUserPassword != null && !mUserPassword.isNone()) {
- maybeEnableEncryption(
- mLockPatternUtils.getKeyguardStoredPasswordQuality(mUserId), false);
- } else {
- finish();
- }
- }
- } else if (requestCode == CHOOSE_LOCK_REQUEST
- || requestCode == ENABLE_ENCRYPTION_REQUEST) {
- if (resultCode != RESULT_CANCELED || mForChangeCredRequiredForBoot) {
+ } else if (requestCode == CHOOSE_LOCK_REQUEST) {
+ if (resultCode != RESULT_CANCELED) {
getActivity().setResult(resultCode, data);
finish();
} else {
@@ -559,9 +487,6 @@
getActivity().setResult(Activity.RESULT_CANCELED);
finish();
}
- if (requestCode == Activity.RESULT_CANCELED && mForChangeCredRequiredForBoot) {
- finish();
- }
}
protected Intent getBiometricEnrollIntent(Context context) {
@@ -590,8 +515,8 @@
if (StorageManager.isFileEncrypted()) {
quality = intent.getIntExtra(LockPatternUtils.PASSWORD_TYPE_KEY, -1);
} else {
- // For non-file encrypted devices we need to show encryption interstitial, so always
- // show the lock type picker and ignore PASSWORD_TYPE_KEY.
+ // For unencrypted devices, always show the lock type picker and ignore
+ // PASSWORD_TYPE_KEY.
Log.i(TAG, "Ignoring PASSWORD_TYPE_KEY because device is not file encrypted");
}
if (quality == -1) {
@@ -821,12 +746,6 @@
return builder.build();
}
- protected Intent getEncryptionInterstitialIntent(Context context, int quality,
- boolean required, Intent unlockMethodIntent) {
- return EncryptionInterstitial.createStartIntent(context, quality, required,
- unlockMethodIntent);
- }
-
/**
* Invokes an activity to change the user's pattern, password or PIN based on given quality
* and minimum quality specified by DevicePolicyManager. If quality is
@@ -992,16 +911,14 @@
switch (lock) {
case NONE:
case SWIPE:
- updateUnlockMethodAndFinish(
- lock.defaultQuality,
- lock == ScreenLockType.NONE,
- false /* chooseLockSkipped */);
- return true;
case PATTERN:
case PIN:
case PASSWORD:
case MANAGED:
- maybeEnableEncryption(lock.defaultQuality, false);
+ updateUnlockMethodAndFinish(
+ lock.defaultQuality,
+ lock == ScreenLockType.NONE,
+ false /* chooseLockSkipped */);
return true;
}
}
diff --git a/src/com/android/settings/password/ChooseLockPassword.java b/src/com/android/settings/password/ChooseLockPassword.java
index 265cee8..648b644 100644
--- a/src/com/android/settings/password/ChooseLockPassword.java
+++ b/src/com/android/settings/password/ChooseLockPassword.java
@@ -86,7 +86,6 @@
import com.android.internal.widget.PasswordValidationError;
import com.android.internal.widget.TextViewInputDisabler;
import com.android.internal.widget.VerifyCredentialResponse;
-import com.android.settings.EncryptionInterstitial;
import com.android.settings.R;
import com.android.settings.SettingsActivity;
import com.android.settings.SetupWizardUtils;
@@ -124,7 +123,6 @@
public IntentBuilder(Context context) {
mIntent = new Intent(context, ChooseLockPassword.class);
mIntent.putExtra(ChooseLockGeneric.CONFIRM_CREDENTIALS, false);
- mIntent.putExtra(EncryptionInterstitial.EXTRA_REQUIRE_PASSWORD, false);
}
/**
@@ -461,21 +459,6 @@
mMinMetrics = intent.getParcelableExtra(EXTRA_KEY_MIN_METRICS);
if (mMinMetrics == null) mMinMetrics = new PasswordMetrics(CREDENTIAL_TYPE_NONE);
- if (intent.getBooleanExtra(
- ChooseLockSettingsHelper.EXTRA_KEY_FOR_CHANGE_CRED_REQUIRED_FOR_BOOT, false)) {
- SaveAndFinishWorker w = new SaveAndFinishWorker();
- final boolean required = getActivity().getIntent().getBooleanExtra(
- EncryptionInterstitial.EXTRA_REQUIRE_PASSWORD, true);
- LockscreenCredential currentCredential = intent.getParcelableExtra(
- ChooseLockSettingsHelper.EXTRA_KEY_PASSWORD);
-
- final LockPatternUtils utils = new LockPatternUtils(getActivity());
-
- w.setBlocking(true);
- w.setListener(this);
- w.start(utils, required, false /* requestGatekeeperPassword */, currentCredential,
- currentCredential, mUserId);
- }
mTextChangedHandler = new TextChangedHandler();
}
@@ -968,8 +951,6 @@
getFragmentManager().executePendingTransactions();
final Intent intent = getActivity().getIntent();
- final boolean required = intent.getBooleanExtra(
- EncryptionInterstitial.EXTRA_REQUIRE_PASSWORD, true);
if (mUnificationProfileId != UserHandle.USER_NULL) {
try (LockscreenCredential profileCredential = (LockscreenCredential)
intent.getParcelableExtra(EXTRA_KEY_UNIFICATION_PROFILE_CREDENTIAL)) {
@@ -977,7 +958,7 @@
profileCredential);
}
}
- mSaveAndFinishWorker.start(mLockPatternUtils, required, mRequestGatekeeperPassword,
+ mSaveAndFinishWorker.start(mLockPatternUtils, mRequestGatekeeperPassword,
mChosenPassword, mCurrentCredential, mUserId);
}
@@ -1036,10 +1017,10 @@
private LockscreenCredential mChosenPassword;
private LockscreenCredential mCurrentCredential;
- public void start(LockPatternUtils utils, boolean required,
- boolean requestGatekeeperPassword, LockscreenCredential chosenPassword,
- LockscreenCredential currentCredential, int userId) {
- prepare(utils, required, requestGatekeeperPassword, userId);
+ public void start(LockPatternUtils utils, boolean requestGatekeeperPassword,
+ LockscreenCredential chosenPassword, LockscreenCredential currentCredential,
+ int userId) {
+ prepare(utils, requestGatekeeperPassword, userId);
mChosenPassword = chosenPassword;
mCurrentCredential = currentCredential != null ? currentCredential
diff --git a/src/com/android/settings/password/ChooseLockPattern.java b/src/com/android/settings/password/ChooseLockPattern.java
index 07c533f..9cdbaed 100644
--- a/src/com/android/settings/password/ChooseLockPattern.java
+++ b/src/com/android/settings/password/ChooseLockPattern.java
@@ -54,7 +54,6 @@
import com.android.internal.widget.LockPatternView.DisplayMode;
import com.android.internal.widget.LockscreenCredential;
import com.android.internal.widget.VerifyCredentialResponse;
-import com.android.settings.EncryptionInterstitial;
import com.android.settings.R;
import com.android.settings.SettingsActivity;
import com.android.settings.SetupWizardUtils;
@@ -106,7 +105,6 @@
public IntentBuilder(Context context) {
mIntent = new Intent(context, ChooseLockPattern.class);
- mIntent.putExtra(EncryptionInterstitial.EXTRA_REQUIRE_PASSWORD, false);
mIntent.putExtra(ChooseLockGeneric.CONFIRM_CREDENTIALS, false);
}
@@ -458,18 +456,6 @@
mLockPatternUtils = new LockPatternUtils(getActivity());
- if (intent.getBooleanExtra(
- ChooseLockSettingsHelper.EXTRA_KEY_FOR_CHANGE_CRED_REQUIRED_FOR_BOOT, false)) {
- SaveAndFinishWorker w = new SaveAndFinishWorker();
- final boolean required = getActivity().getIntent().getBooleanExtra(
- EncryptionInterstitial.EXTRA_REQUIRE_PASSWORD, true);
- LockscreenCredential current = intent.getParcelableExtra(
- ChooseLockSettingsHelper.EXTRA_KEY_PASSWORD);
- w.setBlocking(true);
- w.setListener(this);
- w.start(mLockPatternUtils, required, false /* requestGatekeeperPassword */, current,
- current, mUserId);
- }
mForFingerprint = intent.getBooleanExtra(
ChooseLockSettingsHelper.EXTRA_KEY_FOR_FINGERPRINT, false);
mForFace = intent.getBooleanExtra(
@@ -854,8 +840,6 @@
getFragmentManager().executePendingTransactions();
final Intent intent = getActivity().getIntent();
- final boolean required = intent.getBooleanExtra(
- EncryptionInterstitial.EXTRA_REQUIRE_PASSWORD, true);
if (intent.hasExtra(EXTRA_KEY_UNIFICATION_PROFILE_ID)) {
try (LockscreenCredential profileCredential = (LockscreenCredential)
intent.getParcelableExtra(EXTRA_KEY_UNIFICATION_PROFILE_CREDENTIAL)) {
@@ -865,8 +849,8 @@
profileCredential);
}
}
- mSaveAndFinishWorker.start(mLockPatternUtils, required,
- mRequestGatekeeperPassword, mChosenPattern, mCurrentCredential, mUserId);
+ mSaveAndFinishWorker.start(mLockPatternUtils, mRequestGatekeeperPassword,
+ mChosenPattern, mCurrentCredential, mUserId);
}
@Override
@@ -896,10 +880,10 @@
private LockscreenCredential mCurrentCredential;
private boolean mLockVirgin;
- public void start(LockPatternUtils utils, boolean credentialRequired,
- boolean requestGatekeeperPassword, LockscreenCredential chosenPattern,
- LockscreenCredential currentCredential, int userId) {
- prepare(utils, credentialRequired, requestGatekeeperPassword, userId);
+ public void start(LockPatternUtils utils, boolean requestGatekeeperPassword,
+ LockscreenCredential chosenPattern, LockscreenCredential currentCredential,
+ int userId) {
+ prepare(utils, requestGatekeeperPassword, userId);
mCurrentCredential = currentCredential != null ? currentCredential
: LockscreenCredential.createNone();
diff --git a/src/com/android/settings/password/ChooseLockSettingsHelper.java b/src/com/android/settings/password/ChooseLockSettingsHelper.java
index 85c203d..6ccf7be 100644
--- a/src/com/android/settings/password/ChooseLockSettingsHelper.java
+++ b/src/com/android/settings/password/ChooseLockSettingsHelper.java
@@ -58,7 +58,6 @@
public static final String EXTRA_KEY_FOR_FACE = "for_face";
// For the paths where multiple biometric sensors exist
public static final String EXTRA_KEY_FOR_BIOMETRICS = "for_biometrics";
- public static final String EXTRA_KEY_FOR_CHANGE_CRED_REQUIRED_FOR_BOOT = "for_cred_req_boot";
public static final String EXTRA_KEY_FOREGROUND_ONLY = "foreground_only";
public static final String EXTRA_KEY_REQUEST_GK_PW_HANDLE = "request_gk_pw_handle";
// Gatekeeper password handle, which can subsequently be used to generate Gatekeeper
diff --git a/src/com/android/settings/password/SaveChosenLockWorkerBase.java b/src/com/android/settings/password/SaveChosenLockWorkerBase.java
index 980b022..4864941 100644
--- a/src/com/android/settings/password/SaveChosenLockWorkerBase.java
+++ b/src/com/android/settings/password/SaveChosenLockWorkerBase.java
@@ -16,12 +16,10 @@
package com.android.settings.password;
-import android.content.Context;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.UserHandle;
-import android.os.UserManager;
import android.util.Pair;
import android.widget.Toast;
@@ -68,21 +66,12 @@
}
}
- protected void prepare(LockPatternUtils utils, boolean credentialRequired,
- boolean requestGatekeeperPassword, int userId) {
+ protected void prepare(LockPatternUtils utils, boolean requestGatekeeperPassword, int userId) {
mUtils = utils;
mUserId = userId;
mRequestGatekeeperPassword = requestGatekeeperPassword;
// This will be a no-op for non managed profiles.
mWasSecureBefore = mUtils.isSecure(mUserId);
-
- Context context = getContext();
- // If context is null, we're being invoked to change the setCredentialRequiredToDecrypt,
- // and we made sure that this is the primary user already.
- if (context == null || UserManager.get(context).getUserInfo(mUserId).isPrimary()) {
- mUtils.setCredentialRequiredToDecrypt(credentialRequired);
- }
-
mFinished = false;
mResultData = null;
}
diff --git a/src/com/android/settings/password/SetupChooseLockGeneric.java b/src/com/android/settings/password/SetupChooseLockGeneric.java
index 968af32..a3ae78e 100644
--- a/src/com/android/settings/password/SetupChooseLockGeneric.java
+++ b/src/com/android/settings/password/SetupChooseLockGeneric.java
@@ -38,7 +38,6 @@
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.utils.SettingsDividerItemDecoration;
@@ -217,15 +216,6 @@
}
@Override
- protected Intent getEncryptionInterstitialIntent(Context context, int quality,
- boolean required, Intent unlockMethodIntent) {
- Intent intent = SetupEncryptionInterstitial.createStartIntent(context, quality,
- required, unlockMethodIntent);
- SetupWizardUtils.copySetupExtras(getActivity().getIntent(), intent);
- return intent;
- }
-
- @Override
protected Intent getBiometricEnrollIntent(Context context) {
final Intent intent = super.getBiometricEnrollIntent(context);
SetupWizardUtils.copySetupExtras(getActivity().getIntent(), intent);
diff --git a/tests/robotests/src/com/android/settings/password/ChooseLockGenericTest.java b/tests/robotests/src/com/android/settings/password/ChooseLockGenericTest.java
index 0d26acf..d06ba59 100644
--- a/tests/robotests/src/com/android/settings/password/ChooseLockGenericTest.java
+++ b/tests/robotests/src/com/android/settings/password/ChooseLockGenericTest.java
@@ -253,17 +253,6 @@
}
@Test
- public void onActivityResult_requestcode101_shouldFinish() {
- initActivity(null);
-
- mFragment.onActivityResult(
- ChooseLockGenericFragment.ENABLE_ENCRYPTION_REQUEST, Activity.RESULT_OK,
- null /* data */);
-
- assertThat(mActivity.isFinishing()).isTrue();
- }
-
- @Test
public void onActivityResult_requestcode102_shouldFinish() {
initActivity(null);