summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeff Brown <jeffbrown@google.com>2012-06-13 20:00:49 -0700
committerJeff Brown <jeffbrown@google.com>2012-06-13 20:00:49 -0700
commit47cd14d9bc5a448f8eb5c5acd111793e2332af70 (patch)
treee22b64e5d298131b9179cbf8514b5f42089be131
parent82134f76936be049cc4b23a894ba7decc1d59952 (diff)
downloadframeworks_base-47cd14d9bc5a448f8eb5c5acd111793e2332af70.zip
frameworks_base-47cd14d9bc5a448f8eb5c5acd111793e2332af70.tar.gz
frameworks_base-47cd14d9bc5a448f8eb5c5acd111793e2332af70.tar.bz2
When SIM absent, keyguard should be considered non-secure.
Previously, it was observed that while a SIM is being initialized by the hardware the SIM may briefly be reported as being in an ABSENT state before eventually transitioning into a READY, PIN_REQUIRED, PUK_REQUIRED, PERM_DISABLE state. While booting up, the phone might observe that the SIM is ABSENT and therefore bypass the keyguard going straight to the home screen. Later when the SIM was fully initialized, the phone would revert back to the lock screen in order to ask for the PIN. The user might turn on the phone, slide out the keyboard (bypassing the keyguard), then a few moments later the keyguard would pop up prompting for a PIN. The user experience could be somewhat jarring, so the keyguard was changed to handle the transient case differently. While the SIM was ABSENT, the keyguard would not be automatically bypassed by opening the keyboard slider. Thus the user would be forced to manually swipe away the keyguard before interacting with the device. This would help to cover the time it would take before the SIM was fully initialized and the keyguard could determine whether the user would need to be prompted for a SIM PIN or PUK. To prevent the keyguard from being bypassed automatically, we hacked up the keyguard so that it would be considered to be in a secure state while the SIM was ABSENT. It's worth noting that considering the keyguard to be secure did not confer any additional security properties to the system whatsoever. If the user did not have a pattern lock, PIN or password set then all it would take to access the phone is to swipe away the keyguard. This old hack was all about devices with slide-out keyboards, but it had some side-effects. Namely, it assumed that the SIM ABSENT state was transient. But what about phones that are being used without a SIM at all? Considering the keyguard to be secure when the SIM is ABSENT breaks stuff. In fact, it turns out that making the keyguard secure isn't really what we want at all. What we want is a way to prevent the keyguard from being automatically bypassed on boot when the user opens up a sliding keyboard. But we don't have those anymore... and in the worst case it was just a little janky... and what's more, nowadays the keyguard provides useful features so maybe we shouldn't bypass it anyhow... oh and actually, I deleted the code that used to bypass the keyguard when the keyboard slider was opened... so this does nothing useful at all. Right... This change removes the old hack thereby ensuring that non-secure keyguard features like launching the Camera or Assistant or application features like hands-free voice search will work correctly on phones without a SIM. Bug: 6022658 Change-Id: I019d1d8c65c55cbf4d10d4928e1d2b2b242162a6
-rw-r--r--policy/src/com/android/internal/policy/impl/LockPatternKeyguardViewProperties.java1
1 files changed, 0 insertions, 1 deletions
diff --git a/policy/src/com/android/internal/policy/impl/LockPatternKeyguardViewProperties.java b/policy/src/com/android/internal/policy/impl/LockPatternKeyguardViewProperties.java
index d7fb19a..58d14ed 100644
--- a/policy/src/com/android/internal/policy/impl/LockPatternKeyguardViewProperties.java
+++ b/policy/src/com/android/internal/policy/impl/LockPatternKeyguardViewProperties.java
@@ -58,7 +58,6 @@ public class LockPatternKeyguardViewProperties implements KeyguardViewProperties
final IccCard.State simState = mUpdateMonitor.getSimState();
return (simState == IccCard.State.PIN_REQUIRED
|| simState == IccCard.State.PUK_REQUIRED
- || simState == IccCard.State.ABSENT
|| simState == IccCard.State.PERM_DISABLED);
}