Merge "Fix 4560303: Add setting to lock later when power button pressed" into ics-mr1

This commit is contained in:
Jim Miller
2012-01-10 10:28:21 -08:00
committed by Android (Google) Code Review
2 changed files with 30 additions and 12 deletions

View File

@@ -117,6 +117,8 @@ public class LockPatternUtils {
= "lockscreen.biometric_weak_fallback"; = "lockscreen.biometric_weak_fallback";
public final static String BIOMETRIC_WEAK_EVER_CHOSEN_KEY public final static String BIOMETRIC_WEAK_EVER_CHOSEN_KEY
= "lockscreen.biometricweakeverchosen"; = "lockscreen.biometricweakeverchosen";
public final static String LOCKSCREEN_POWER_BUTTON_INSTANTLY_LOCKS
= "lockscreen.power_button_instantly_locks";
private final static String PASSWORD_HISTORY_KEY = "lockscreen.passwordhistory"; private final static String PASSWORD_HISTORY_KEY = "lockscreen.passwordhistory";
@@ -335,7 +337,7 @@ public class LockPatternUtils {
* @return True if the user has ever chosen a pattern. * @return True if the user has ever chosen a pattern.
*/ */
public boolean isPatternEverChosen() { public boolean isPatternEverChosen() {
return getBoolean(PATTERN_EVER_CHOSEN_KEY); return getBoolean(PATTERN_EVER_CHOSEN_KEY, false);
} }
/** /**
@@ -345,7 +347,7 @@ public class LockPatternUtils {
* @return True if the user has ever chosen biometric weak. * @return True if the user has ever chosen biometric weak.
*/ */
public boolean isBiometricWeakEverChosen() { public boolean isBiometricWeakEverChosen() {
return getBoolean(BIOMETRIC_WEAK_EVER_CHOSEN_KEY); return getBoolean(BIOMETRIC_WEAK_EVER_CHOSEN_KEY, false);
} }
/** /**
@@ -838,7 +840,7 @@ public class LockPatternUtils {
getLong(PASSWORD_TYPE_ALTERNATE_KEY, DevicePolicyManager.PASSWORD_QUALITY_SOMETHING) getLong(PASSWORD_TYPE_ALTERNATE_KEY, DevicePolicyManager.PASSWORD_QUALITY_SOMETHING)
== DevicePolicyManager.PASSWORD_QUALITY_SOMETHING; == DevicePolicyManager.PASSWORD_QUALITY_SOMETHING;
return getBoolean(Settings.Secure.LOCK_PATTERN_ENABLED) return getBoolean(Settings.Secure.LOCK_PATTERN_ENABLED, false)
&& (getLong(PASSWORD_TYPE_KEY, DevicePolicyManager.PASSWORD_QUALITY_SOMETHING) && (getLong(PASSWORD_TYPE_KEY, DevicePolicyManager.PASSWORD_QUALITY_SOMETHING)
== DevicePolicyManager.PASSWORD_QUALITY_SOMETHING || == DevicePolicyManager.PASSWORD_QUALITY_SOMETHING ||
(usingBiometricWeak() && backupEnabled)); (usingBiometricWeak() && backupEnabled));
@@ -884,7 +886,7 @@ public class LockPatternUtils {
* @return Whether the visible pattern is enabled. * @return Whether the visible pattern is enabled.
*/ */
public boolean isVisiblePatternEnabled() { public boolean isVisiblePatternEnabled() {
return getBoolean(Settings.Secure.LOCK_PATTERN_VISIBLE); return getBoolean(Settings.Secure.LOCK_PATTERN_VISIBLE, false);
} }
/** /**
@@ -898,7 +900,7 @@ public class LockPatternUtils {
* @return Whether tactile feedback for the pattern is enabled. * @return Whether tactile feedback for the pattern is enabled.
*/ */
public boolean isTactileFeedbackEnabled() { public boolean isTactileFeedbackEnabled() {
return getBoolean(Settings.Secure.LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED); return getBoolean(Settings.Secure.LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED, false);
} }
/** /**
@@ -939,7 +941,7 @@ public class LockPatternUtils {
* attempts. * attempts.
*/ */
public boolean isPermanentlyLocked() { public boolean isPermanentlyLocked() {
return getBoolean(LOCKOUT_PERMANENT_KEY); return getBoolean(LOCKOUT_PERMANENT_KEY, false);
} }
/** /**
@@ -982,9 +984,10 @@ public class LockPatternUtils {
return nextAlarm; return nextAlarm;
} }
private boolean getBoolean(String secureSettingKey) { private boolean getBoolean(String secureSettingKey, boolean defaultValue) {
return 1 == return 1 ==
android.provider.Settings.Secure.getInt(mContentResolver, secureSettingKey, 0); android.provider.Settings.Secure.getInt(mContentResolver, secureSettingKey,
defaultValue ? 1 : 0);
} }
private void setBoolean(String secureSettingKey, boolean enabled) { private void setBoolean(String secureSettingKey, boolean enabled) {
@@ -1085,4 +1088,12 @@ public class LockPatternUtils {
mContext.startActivity(intent); mContext.startActivity(intent);
} }
public void setPowerButtonInstantlyLocks(boolean enabled) {
setBoolean(LOCKSCREEN_POWER_BUTTON_INSTANTLY_LOCKS, enabled);
}
public boolean getPowerButtonInstantlyLocks() {
return getBoolean(LOCKSCREEN_POWER_BUTTON_INSTANTLY_LOCKS, true);
}
} }

View File

@@ -350,6 +350,12 @@ public class KeyguardViewMediator implements KeyguardViewCallback,
mScreenOn = false; mScreenOn = false;
if (DEBUG) Log.d(TAG, "onScreenTurnedOff(" + why + ")"); if (DEBUG) Log.d(TAG, "onScreenTurnedOff(" + why + ")");
// Lock immediately based on setting if secure (user has a pin/pattern/password).
// This also "locks" the device when not secure to provide easy access to the
// camera while preventing unwanted input.
final boolean lockImmediately =
mLockPatternUtils.getPowerButtonInstantlyLocks() || !mLockPatternUtils.isSecure();
if (mExitSecureCallback != null) { if (mExitSecureCallback != null) {
if (DEBUG) Log.d(TAG, "pending exit secure callback cancelled"); if (DEBUG) Log.d(TAG, "pending exit secure callback cancelled");
mExitSecureCallback.onKeyguardExitResult(false); mExitSecureCallback.onKeyguardExitResult(false);
@@ -360,8 +366,10 @@ public class KeyguardViewMediator implements KeyguardViewCallback,
} else if (mShowing) { } else if (mShowing) {
notifyScreenOffLocked(); notifyScreenOffLocked();
resetStateLocked(); resetStateLocked();
} else if (why == WindowManagerPolicy.OFF_BECAUSE_OF_TIMEOUT) { } else if (why == WindowManagerPolicy.OFF_BECAUSE_OF_TIMEOUT
// if the screen turned off because of timeout, set an alarm || (why == WindowManagerPolicy.OFF_BECAUSE_OF_USER && !lockImmediately)) {
// if the screen turned off because of timeout or the user hit the power button
// and we don't need to lock immediately, set an alarm
// to enable it a little bit later (i.e, give the user a chance // to enable it a little bit later (i.e, give the user a chance
// to turn the screen back on within a certain window without // to turn the screen back on within a certain window without
// having to unlock the screen) // having to unlock the screen)
@@ -400,8 +408,7 @@ public class KeyguardViewMediator implements KeyguardViewCallback,
intent.putExtra("seq", mDelayedShowingSequence); intent.putExtra("seq", mDelayedShowingSequence);
PendingIntent sender = PendingIntent.getBroadcast(mContext, PendingIntent sender = PendingIntent.getBroadcast(mContext,
0, intent, PendingIntent.FLAG_CANCEL_CURRENT); 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
mAlarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, when, mAlarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, when, sender);
sender);
if (DEBUG) Log.d(TAG, "setting alarm to turn off keyguard, seq = " if (DEBUG) Log.d(TAG, "setting alarm to turn off keyguard, seq = "
+ mDelayedShowingSequence); + mDelayedShowingSequence);
} }