diff options
| author | John Wang <johnwang@google.com> | 2011-06-16 12:49:17 -0700 | 
|---|---|---|
| committer | Android Git Automerger <android-git-automerger@android.com> | 2011-06-16 12:49:17 -0700 | 
| commit | 1766974b02a1accf6b0b553e3e7239b7c8416199 (patch) | |
| tree | 6de73c385b7b801af9a191011fda7c21cd011759 /policy | |
| parent | 19f913a887fa05e5fbc2d6c2ad9aac0f630f2ee6 (diff) | |
| parent | 03cbb58e2418dc22ae18a8648404382da4ee46e8 (diff) | |
| download | frameworks_base-1766974b02a1accf6b0b553e3e7239b7c8416199.zip frameworks_base-1766974b02a1accf6b0b553e3e7239b7c8416199.tar.gz frameworks_base-1766974b02a1accf6b0b553e3e7239b7c8416199.tar.bz2  | |
am 03cbb58e: am ff42c04d: Merge "Support SIM permanently disabled state." into honeycomb-LTE
* commit '03cbb58e2418dc22ae18a8648404382da4ee46e8':
  Support SIM permanently disabled state.
Diffstat (limited to 'policy')
5 files changed, 46 insertions, 9 deletions
diff --git a/policy/src/com/android/internal/policy/impl/KeyguardUpdateMonitor.java b/policy/src/com/android/internal/policy/impl/KeyguardUpdateMonitor.java index 72209f6..f385a23 100644 --- a/policy/src/com/android/internal/policy/impl/KeyguardUpdateMonitor.java +++ b/policy/src/com/android/internal/policy/impl/KeyguardUpdateMonitor.java @@ -114,7 +114,15 @@ public class KeyguardUpdateMonitor {              }              String stateExtra = intent.getStringExtra(IccCard.INTENT_KEY_ICC_STATE);              if (IccCard.INTENT_VALUE_ICC_ABSENT.equals(stateExtra)) { -                this.simState = IccCard.State.ABSENT; +                final String absentReason = intent +                    .getStringExtra(IccCard.INTENT_KEY_LOCKED_REASON); + +                if (IccCard.INTENT_VALUE_ABSENT_ON_PERM_DISABLED.equals( +                        absentReason)) { +                    this.simState = IccCard.State.PERM_DISABLED; +                } else { +                    this.simState = IccCard.State.ABSENT; +                }              } else if (IccCard.INTENT_VALUE_ICC_READY.equals(stateExtra)) {                  this.simState = IccCard.State.READY;              } else if (IccCard.INTENT_VALUE_ICC_LOCKED.equals(stateExtra)) { diff --git a/policy/src/com/android/internal/policy/impl/KeyguardViewMediator.java b/policy/src/com/android/internal/policy/impl/KeyguardViewMediator.java index 8a60098..8ba235b 100644 --- a/policy/src/com/android/internal/policy/impl/KeyguardViewMediator.java +++ b/policy/src/com/android/internal/policy/impl/KeyguardViewMediator.java @@ -580,7 +580,9 @@ public class KeyguardViewMediator implements KeyguardViewCallback,              final boolean provisioned = mUpdateMonitor.isDeviceProvisioned();              final IccCard.State state = mUpdateMonitor.getSimState();              final boolean lockedOrMissing = state.isPinLocked() -                    || ((state == IccCard.State.ABSENT) && requireSim); +                    || ((state == IccCard.State.ABSENT +                            || state == IccCard.State.PERM_DISABLED) +                            && requireSim);              if (!lockedOrMissing && !provisioned) {                  if (DEBUG) Log.d(TAG, "doKeyguard: not showing because device isn't provisioned" @@ -687,12 +689,15 @@ public class KeyguardViewMediator implements KeyguardViewCallback,          switch (simState) {              case ABSENT: +            case PERM_DISABLED:                  // only force lock screen in case of missing sim if user hasn't                  // gone through setup wizard                  if (!mUpdateMonitor.isDeviceProvisioned()) {                      if (!isShowing()) { -                        if (DEBUG) Log.d(TAG, "INTENT_VALUE_ICC_ABSENT and keygaurd isn't showing, we need " -                             + "to show the keyguard since the device isn't provisioned yet."); +                        if (DEBUG) Log.d(TAG, "INTENT_VALUE_ICC_ABSENT " +                                + "or PERM_DISABLED and keygaurd isn't showing," +                                + " we need to show the keyguard since the " +                                + "device isn't provisioned yet.");                          doKeyguard();                      } else {                          resetStateLocked(); diff --git a/policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java b/policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java index 874acd0..eea3040 100644 --- a/policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java +++ b/policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java @@ -181,7 +181,8 @@ public class LockPatternKeyguardView extends KeyguardViewBase {      private boolean stuckOnLockScreenBecauseSimMissing() {          return mRequiresSim                  && (!mUpdateMonitor.isDeviceProvisioned()) -                && (mUpdateMonitor.getSimState() == IccCard.State.ABSENT); +                && (mUpdateMonitor.getSimState() == IccCard.State.ABSENT || +                    mUpdateMonitor.getSimState() == IccCard.State.PERM_DISABLED);      }      /** diff --git a/policy/src/com/android/internal/policy/impl/LockPatternKeyguardViewProperties.java b/policy/src/com/android/internal/policy/impl/LockPatternKeyguardViewProperties.java index ed5a058..19adb3e 100644 --- a/policy/src/com/android/internal/policy/impl/LockPatternKeyguardViewProperties.java +++ b/policy/src/com/android/internal/policy/impl/LockPatternKeyguardViewProperties.java @@ -55,8 +55,10 @@ public class LockPatternKeyguardViewProperties implements KeyguardViewProperties      private boolean isSimPinSecure() {          final IccCard.State simState = mUpdateMonitor.getSimState(); -        return (simState == IccCard.State.PIN_REQUIRED || simState == IccCard.State.PUK_REQUIRED -            || simState == IccCard.State.ABSENT); +        return (simState == IccCard.State.PIN_REQUIRED +                || simState == IccCard.State.PUK_REQUIRED +                || simState == IccCard.State.ABSENT +                || simState == IccCard.State.PERM_DISABLED);      }  } diff --git a/policy/src/com/android/internal/policy/impl/LockScreen.java b/policy/src/com/android/internal/policy/impl/LockScreen.java index 08f9ebb..8b7a61e 100644 --- a/policy/src/com/android/internal/policy/impl/LockScreen.java +++ b/policy/src/com/android/internal/policy/impl/LockScreen.java @@ -129,7 +129,12 @@ class LockScreen extends LinearLayout implements KeyguardScreen,          /**           * The sim card is locked.           */ -        SimLocked(true); +        SimLocked(true), + +        /** +         * The sim card is permanently disabled due to puk unlock failure +         */ +        SimPermDisabled(false);          private final boolean mShowStatusLines; @@ -503,7 +508,9 @@ class LockScreen extends LinearLayout implements KeyguardScreen,       */      private Status getCurrentStatus(IccCard.State simState) {          boolean missingAndNotProvisioned = (!mUpdateMonitor.isDeviceProvisioned() -                && simState == IccCard.State.ABSENT); +                && (simState == IccCard.State.ABSENT +                        || simState == IccCard.State.PERM_DISABLED)); +          if (missingAndNotProvisioned) {              return Status.SimMissingLocked;          } @@ -521,6 +528,8 @@ class LockScreen extends LinearLayout implements KeyguardScreen,                  return Status.SimPukLocked;              case READY:                  return Status.Normal; +            case PERM_DISABLED: +                return Status.SimPermDisabled;              case UNKNOWN:                  return Status.SimMissing;          } @@ -595,6 +604,18 @@ class LockScreen extends LinearLayout implements KeyguardScreen,                  enableUnlock(); // do not need to show the e-call button; user may unlock                  break; +            case SimPermDisabled: +                // text +                mStatusView.setCarrierText(R.string.lockscreen_missing_sim_message_short); +                mScreenLocked.setText( +                        R.string.lockscreen_permanent_disabled_sim_instructions); + +                // layout +                mScreenLocked.setVisibility(View.VISIBLE); +                mLockPatternUtils.updateEmergencyCallText(mEmergencyCallText); +                enableUnlock(); // do not need to show the e-call button; user may unlock +                break; +              case SimMissingLocked:                  // text                  mStatusView.setCarrierText(  | 
