summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/EncryptionInterstitial.java
diff options
context:
space:
mode:
authorMaurice Lam <yukl@google.com>2017-03-21 17:57:55 -0700
committerMaurice Lam <yukl@google.com>2017-03-22 18:41:46 -0700
commit18d7965a1169f14d40e63a3b1761ba1a259bb66c (patch)
tree9946dfc1d002df09135773d48855f78a14b70b2f /src/com/android/settings/EncryptionInterstitial.java
parent9be96e06bb1e12e5068f2672dfbb9baa0051d604 (diff)
downloadpackages_apps_Settings-18d7965a1169f14d40e63a3b1761ba1a259bb66c.tar.gz
packages_apps_Settings-18d7965a1169f14d40e63a3b1761ba1a259bb66c.tar.bz2
packages_apps_Settings-18d7965a1169f14d40e63a3b1761ba1a259bb66c.zip
Use InstrumentedFragment for EncryptionInterstitial
Since EncryptionInterstitial now uses buttons and not preference list items, extend InstrumentedFragment rather than SettingsPreferenceFragment for less overhead. Test: Run EncryptionInterstitialTest via `am instrument` Change-Id: Idb56b467ae03a1aff680dbc25d2889dad77f391d
Diffstat (limited to 'src/com/android/settings/EncryptionInterstitial.java')
-rw-r--r--src/com/android/settings/EncryptionInterstitial.java146
1 files changed, 85 insertions, 61 deletions
diff --git a/src/com/android/settings/EncryptionInterstitial.java b/src/com/android/settings/EncryptionInterstitial.java
index 42ca516b50..ed9596d9c2 100644
--- a/src/com/android/settings/EncryptionInterstitial.java
+++ b/src/com/android/settings/EncryptionInterstitial.java
@@ -17,6 +17,7 @@
package com.android.settings;
import android.accessibilityservice.AccessibilityServiceInfo;
+import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.admin.DevicePolicyManager;
@@ -29,11 +30,12 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.accessibility.AccessibilityManager;
-import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
+import com.android.settings.core.InstrumentedFragment;
+import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
import com.android.setupwizardlib.GlifLayout;
import java.util.List;
@@ -74,10 +76,8 @@ public class EncryptionInterstitial extends SettingsActivity {
layout.setFitsSystemWindows(false);
}
- public static class EncryptionInterstitialFragment extends SettingsPreferenceFragment
- implements View.OnClickListener, DialogInterface.OnClickListener {
-
- private static final int ACCESSIBILITY_WARNING_DIALOG = 1;
+ public static class EncryptionInterstitialFragment extends InstrumentedFragment
+ implements View.OnClickListener {
private View mRequirePasswordToDecrypt;
private View mDontRequirePasswordToDecrypt;
@@ -164,7 +164,10 @@ public class EncryptionInterstitial extends SettingsActivity {
final boolean accEn = AccessibilityManager.getInstance(getActivity()).isEnabled();
if (accEn && !mPasswordRequired) {
setRequirePasswordState(false); // clear the UI state
- showDialog(ACCESSIBILITY_WARNING_DIALOG);
+ AccessibilityWarningDialogFragment.newInstance(mRequestedPasswordQuality)
+ .show(
+ getChildFragmentManager(),
+ AccessibilityWarningDialogFragment.TAG);
} else {
setRequirePasswordState(true);
startLockIntent();
@@ -175,72 +178,93 @@ public class EncryptionInterstitial extends SettingsActivity {
}
}
- @Override
- public Dialog onCreateDialog(int dialogId) {
- switch(dialogId) {
- case ACCESSIBILITY_WARNING_DIALOG: {
- final int titleId;
- final int messageId;
- switch (mRequestedPasswordQuality) {
- 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;
- }
-
-
- List<AccessibilityServiceInfo> list =
- AccessibilityManager.getInstance(getActivity())
- .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(getPackageManager());
- }
- return new AlertDialog.Builder(getActivity())
- .setTitle(titleId)
- .setMessage(getString(messageId, exampleAccessibility))
- .setCancelable(true)
- .setPositiveButton(android.R.string.ok, this)
- .setNegativeButton(android.R.string.cancel, this)
- .create();
- }
- default: throw new IllegalArgumentException();
+ 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 int getDialogMetricsCategory(int dialogId) {
- if (dialogId == ACCESSIBILITY_WARNING_DIALOG) {
- return MetricsEvent.DIALOG_ENCRYPTION_INTERSTITIAL_ACCESSIBILITY;
+ 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;
}
- return 0;
+
+
+ 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();
}
- private void setRequirePasswordState(boolean required) {
- mPasswordRequired = required;
+ @Override
+ public int getMetricsCategory() {
+ return MetricsEvent.DIALOG_ENCRYPTION_INTERSTITIAL_ACCESSIBILITY;
}
@Override
public void onClick(DialogInterface dialog, int which) {
- if (which == DialogInterface.BUTTON_POSITIVE) {
- setRequirePasswordState(true);
- startLockIntent();
- } else if (which == DialogInterface.BUTTON_NEGATIVE) {
- setRequirePasswordState(false);
+ 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);
+ }
}
}
}