diff options
author | Jim Miller <jaggies@google.com> | 2010-04-13 17:43:36 -0700 |
---|---|---|
committer | Jim Miller <jaggies@google.com> | 2010-04-14 01:15:05 -0700 |
commit | 2deec7edc937b1d19df0a74c4cd0c5ee3ef33070 (patch) | |
tree | 29bae509042b617da667c1dc1c49590feccb29d2 /src/com | |
parent | fc5a02225e8bca21f07543f55e1b51a33670c501 (diff) | |
download | packages_apps_settings-2deec7edc937b1d19df0a74c4cd0c5ee3ef33070.zip packages_apps_settings-2deec7edc937b1d19df0a74c4cd0c5ee3ef33070.tar.gz packages_apps_settings-2deec7edc937b1d19df0a74c4cd0c5ee3ef33070.tar.bz2 |
Fix 2594148: confirm PIN/Password before resetting device
This fixes a bug where user was allowed to factory reset the device
without entering their PIN/Password.
It also fixes the same issue with MediaFormat (Settings->SD Card->Format).
Change-Id: I0677a50aa771ad8663513fd7ec398a70953dcde2
Diffstat (limited to 'src/com')
-rw-r--r-- | src/com/android/settings/ChooseLockGeneric.java | 2 | ||||
-rw-r--r-- | src/com/android/settings/ChooseLockPassword.java | 3 | ||||
-rw-r--r-- | src/com/android/settings/ChooseLockPattern.java | 3 | ||||
-rw-r--r-- | src/com/android/settings/ChooseLockSettingsHelper.java | 15 | ||||
-rw-r--r-- | src/com/android/settings/MasterClear.java | 25 | ||||
-rw-r--r-- | src/com/android/settings/MediaFormat.java | 21 |
6 files changed, 36 insertions, 33 deletions
diff --git a/src/com/android/settings/ChooseLockGeneric.java b/src/com/android/settings/ChooseLockGeneric.java index 7578078..0672ad9 100644 --- a/src/com/android/settings/ChooseLockGeneric.java +++ b/src/com/android/settings/ChooseLockGeneric.java @@ -54,7 +54,7 @@ public class ChooseLockGeneric extends PreferenceActivity { if (!mPasswordConfirmed) { ChooseLockSettingsHelper helper = new ChooseLockSettingsHelper(this); - if (!helper.launchConfirmationActivity(CONFIRM_EXISTING_REQUEST)) { + if (!helper.launchConfirmationActivity(CONFIRM_EXISTING_REQUEST, null, null)) { mPasswordConfirmed = true; // no password set, so no need to confirm updatePreferencesOrFinish(); } diff --git a/src/com/android/settings/ChooseLockPassword.java b/src/com/android/settings/ChooseLockPassword.java index 63c7896..b5e72d7 100644 --- a/src/com/android/settings/ChooseLockPassword.java +++ b/src/com/android/settings/ChooseLockPassword.java @@ -119,7 +119,8 @@ public class ChooseLockPassword extends Activity implements OnClickListener, OnE if (savedInstanceState == null) { updateStage(Stage.Introduction); if (confirmCredentials) { - mChooseLockSettingsHelper.launchConfirmationActivity(CONFIRM_EXISTING_REQUEST); + mChooseLockSettingsHelper.launchConfirmationActivity(CONFIRM_EXISTING_REQUEST, + null, null); } } } diff --git a/src/com/android/settings/ChooseLockPattern.java b/src/com/android/settings/ChooseLockPattern.java index 786d563..b5c0e80 100644 --- a/src/com/android/settings/ChooseLockPattern.java +++ b/src/com/android/settings/ChooseLockPattern.java @@ -288,7 +288,8 @@ public class ChooseLockPattern extends Activity implements View.OnClickListener{ // there isn't an existing password or the user confirms their password. updateStage(Stage.NeedToConfirm); boolean launchedConfirmationActivity = - mChooseLockSettingsHelper.launchConfirmationActivity(CONFIRM_EXISTING_REQUEST); + mChooseLockSettingsHelper.launchConfirmationActivity(CONFIRM_EXISTING_REQUEST, + null, null); if (!launchedConfirmationActivity) { updateStage(Stage.Introduction); } diff --git a/src/com/android/settings/ChooseLockSettingsHelper.java b/src/com/android/settings/ChooseLockSettingsHelper.java index 6382891..ba83f8e 100644 --- a/src/com/android/settings/ChooseLockSettingsHelper.java +++ b/src/com/android/settings/ChooseLockSettingsHelper.java @@ -37,18 +37,22 @@ public class ChooseLockSettingsHelper { /** * If a pattern, password or PIN exists, prompt the user before allowing them to change it. + * @param message optional message to display about the action about to be done + * @param details optional detail message to display * @return true if one exists and we launched an activity to confirm it * @see #onActivityResult(int, int, android.content.Intent) */ - protected boolean launchConfirmationActivity(int request) { + protected boolean launchConfirmationActivity(int request, + CharSequence message, CharSequence details) { boolean launched = false; switch (mLockPatternUtils.getKeyguardStoredPasswordQuality()) { case DevicePolicyManager.PASSWORD_QUALITY_SOMETHING: - launched = confirmPattern(request); + launched = confirmPattern(request, message, details); break; case DevicePolicyManager.PASSWORD_QUALITY_NUMERIC: case DevicePolicyManager.PASSWORD_QUALITY_ALPHABETIC: case DevicePolicyManager.PASSWORD_QUALITY_ALPHANUMERIC: + // TODO: update UI layout for ConfirmPassword to show message and details launched = confirmPassword(request); break; } @@ -57,14 +61,19 @@ public class ChooseLockSettingsHelper { /** * Launch screen to confirm the existing lock pattern. + * @param message shown in header of ConfirmLockPattern if not null + * @param details shown in footer of ConfirmLockPattern if not null * @see #onActivityResult(int, int, android.content.Intent) * @return true if we launched an activity to confirm pattern */ - private boolean confirmPattern(int request) { + private boolean confirmPattern(int request, CharSequence message, CharSequence details) { if (!mLockPatternUtils.isLockPatternEnabled() || !mLockPatternUtils.savedPatternExists()) { return false; } final Intent intent = new Intent(); + // supply header and footer text in the intent + intent.putExtra(ConfirmLockPattern.HEADER_TEXT, message); + intent.putExtra(ConfirmLockPattern.FOOTER_TEXT, details); intent.setClassName("com.android.settings", "com.android.settings.ConfirmLockPattern"); mActivity.startActivityForResult(intent, request); return true; diff --git a/src/com/android/settings/MasterClear.java b/src/com/android/settings/MasterClear.java index 7e408d1..4de0e44 100644 --- a/src/com/android/settings/MasterClear.java +++ b/src/com/android/settings/MasterClear.java @@ -69,19 +69,16 @@ public class MasterClear extends Activity { }; /** - * Keyguard validation is run using the standard {@link ConfirmLockPattern} + * Keyguard validation is run using the standard {@link ConfirmLockPattern} * component as a subactivity + * @param request the request code to be returned once confirmation finishes + * @return true if confirmation launched */ - private void runKeyguardConfirmation() { - final Intent intent = new Intent(); - intent.setClassName("com.android.settings", - "com.android.settings.ConfirmLockPattern"); - // supply header and footer text in the intent - intent.putExtra(ConfirmLockPattern.HEADER_TEXT, - getText(R.string.master_clear_gesture_prompt)); - intent.putExtra(ConfirmLockPattern.FOOTER_TEXT, - getText(R.string.master_clear_gesture_explanation)); - startActivityForResult(intent, KEYGUARD_REQUEST); + private boolean runKeyguardConfirmation(int request) { + return new ChooseLockSettingsHelper(this) + .launchConfirmationActivity(request, + getText(R.string.master_clear_gesture_prompt), + getText(R.string.master_clear_gesture_explanation)); } @Override @@ -96,6 +93,8 @@ public class MasterClear extends Activity { // confirmation prompt; otherwise, go back to the initial state. if (resultCode == Activity.RESULT_OK) { establishFinalConfirmationState(); + } else if (resultCode == Activity.RESULT_CANCELED) { + finish(); } else { establishInitialState(); } @@ -108,9 +107,7 @@ public class MasterClear extends Activity { */ private Button.OnClickListener mInitiateListener = new Button.OnClickListener() { public void onClick(View v) { - if (mLockUtils.isLockPatternEnabled()) { - runKeyguardConfirmation(); - } else { + if (!runKeyguardConfirmation(KEYGUARD_REQUEST)) { establishFinalConfirmationState(); } } diff --git a/src/com/android/settings/MediaFormat.java b/src/com/android/settings/MediaFormat.java index 075534d..b78ff62 100644 --- a/src/com/android/settings/MediaFormat.java +++ b/src/com/android/settings/MediaFormat.java @@ -88,16 +88,11 @@ public class MediaFormat extends Activity { * Keyguard validation is run using the standard {@link ConfirmLockPattern} * component as a subactivity */ - private void runKeyguardConfirmation() { - final Intent intent = new Intent(); - intent.setClassName("com.android.settings", - "com.android.settings.ConfirmLockPattern"); - // supply header and footer text in the intent - intent.putExtra(ConfirmLockPattern.HEADER_TEXT, - getText(R.string.media_format_gesture_prompt)); - intent.putExtra(ConfirmLockPattern.FOOTER_TEXT, - getText(R.string.media_format_gesture_explanation)); - startActivityForResult(intent, KEYGUARD_REQUEST); + private boolean runKeyguardConfirmation(int request) { + return new ChooseLockSettingsHelper(this) + .launchConfirmationActivity(request, + getText(R.string.media_format_gesture_prompt), + getText(R.string.media_format_gesture_explanation)); } @Override @@ -112,6 +107,8 @@ public class MediaFormat extends Activity { // confirmation prompt; otherwise, go back to the initial state. if (resultCode == Activity.RESULT_OK) { establishFinalConfirmationState(); + } else if (resultCode == Activity.RESULT_CANCELED) { + finish(); } else { establishInitialState(); } @@ -124,9 +121,7 @@ public class MediaFormat extends Activity { */ private Button.OnClickListener mInitiateListener = new Button.OnClickListener() { public void onClick(View v) { - if (mLockUtils.isLockPatternEnabled()) { - runKeyguardConfirmation(); - } else { + if (!runKeyguardConfirmation(KEYGUARD_REQUEST)) { establishFinalConfirmationState(); } } |