Skip to content

Commit 401c856

Browse files
Adam CohenAndroid Git Automerger
authored andcommitted
am 18e9575: am 6dbf861: Fix for NPE with pattern recovery (issue 7341237)
* commit '18e9575cad3bfc5c764396a359f9c2f5193e96a9': Fix for NPE with pattern recovery (issue 7341237)
2 parents 0450a94 + 18e9575 commit 401c856

File tree

6 files changed

+30
-12
lines changed

6 files changed

+30
-12
lines changed

policy/src/com/android/internal/policy/impl/keyguard/KeyguardAccountView.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,9 @@ public KeyguardAccountView(Context context, AttributeSet attrs, int defStyle) {
8484
protected void onFinishInflate() {
8585
super.onFinishInflate();
8686

87+
// We always set a dummy NavigationManager to avoid null checks
88+
mSecurityMessageDisplay = new KeyguardNavigationManager(null);
89+
8790
mLogin = (EditText) findViewById(R.id.login);
8891
mLogin.setFilters(new InputFilter[] { new LoginFilter.UsernameFilterGeneric() } );
8992
mLogin.addTextChangedListener(this);
@@ -315,7 +318,8 @@ public void onResume() {
315318

316319
@Override
317320
public void setSecurityMessageDisplay(SecurityMessageDisplay display) {
318-
mSecurityMessageDisplay = display;
321+
mSecurityMessageDisplay = display;
322+
reset();
319323
}
320324
}
321325

policy/src/com/android/internal/policy/impl/keyguard/KeyguardNavigationManager.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,16 +23,20 @@ public class KeyguardNavigationManager implements SecurityMessageDisplay {
2323
private TextView mMessageArea;
2424

2525
public KeyguardNavigationManager(TextView messageArea) {
26-
mMessageArea = messageArea;
27-
mMessageArea.setSelected(true); // Make marquee work
26+
if (messageArea != null) {
27+
mMessageArea = messageArea;
28+
mMessageArea.setSelected(true); // Make marquee work
29+
}
2830
}
2931

3032
public void setMessage(CharSequence msg, boolean important) {
33+
if (mMessageArea == null) return;
3134
mMessageArea.setText(msg);
3235
mMessageArea.announceForAccessibility(mMessageArea.getText());
3336
}
3437

3538
public void setMessage(int resId, boolean important) {
39+
if (mMessageArea == null) return;
3640
if (resId != 0) {
3741
mMessageArea.setText(resId);
3842
mMessageArea.announceForAccessibility(mMessageArea.getText());
@@ -42,6 +46,7 @@ public void setMessage(int resId, boolean important) {
4246
}
4347

4448
public void setMessage(int resId, boolean important, Object... formatArgs) {
49+
if (mMessageArea == null) return;
4550
if (resId != 0) {
4651
mMessageArea.setText(mMessageArea.getContext().getString(resId, formatArgs));
4752
mMessageArea.announceForAccessibility(mMessageArea.getText());

policy/src/com/android/internal/policy/impl/keyguard/KeyguardPasswordView.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,9 @@ private void resetState() {
109109

110110
@Override
111111
protected void onFinishInflate() {
112+
// We always set a dummy NavigationManager to avoid null checks
113+
mSecurityMessageDisplay = new KeyguardNavigationManager(null);
114+
112115
mLockPatternUtils = new LockPatternUtils(mContext); // TODO: use common one
113116

114117
final int quality = mLockPatternUtils.getKeyguardStoredPasswordQuality();
@@ -366,10 +369,10 @@ public void onTextChanged(CharSequence s, int start, int before, int count) {
366369
public void afterTextChanged(Editable s) {
367370
}
368371

369-
370372
@Override
371373
public void setSecurityMessageDisplay(SecurityMessageDisplay display) {
372-
mSecurityMessageDisplay = display;
374+
mSecurityMessageDisplay = display;
375+
reset();
373376
}
374377
}
375378

policy/src/com/android/internal/policy/impl/keyguard/KeyguardPatternView.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,9 @@ public void setLockPatternUtils(LockPatternUtils utils) {
111111
protected void onFinishInflate() {
112112
super.onFinishInflate();
113113

114+
// We always set a dummy NavigationManager to avoid null checks
115+
mSecurityMessageDisplay = new KeyguardNavigationManager(null);
116+
114117
mLockPatternUtils = mLockPatternUtils == null
115118
? new LockPatternUtils(mContext) : mLockPatternUtils;
116119

@@ -371,7 +374,8 @@ public KeyguardSecurityCallback getCallback() {
371374

372375
@Override
373376
public void setSecurityMessageDisplay(SecurityMessageDisplay display) {
374-
mSecurityMessageDisplay = display;
377+
mSecurityMessageDisplay = display;
378+
reset();
375379
}
376380
}
377381

policy/src/com/android/internal/policy/impl/keyguard/KeyguardSimPinView.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,9 @@ public void setKeyguardCallback(KeyguardSecurityCallback callback) {
7676
protected void onFinishInflate() {
7777
super.onFinishInflate();
7878

79+
// We always set a dummy NavigationManager to avoid null checks
80+
mSecurityMessageDisplay = new KeyguardNavigationManager(null);
81+
7982
mPinEntry = (EditText) findViewById(R.id.sim_pin_entry);
8083
mPinEntry.setOnEditorActionListener(this);
8184
mPinEntry.addTextChangedListener(this);
@@ -110,9 +113,7 @@ protected boolean onRequestFocusInDescendants(int direction, Rect previouslyFocu
110113

111114
public void reset() {
112115
// start fresh
113-
if (mSecurityMessageDisplay != null) {
114-
mSecurityMessageDisplay.setMessage(R.string.kg_sim_pin_instructions, true);
115-
}
116+
mSecurityMessageDisplay.setMessage(R.string.kg_sim_pin_instructions, true);
116117

117118
// make sure that the number of entered digits is consistent when we
118119
// erase the SIM unlock code, including orientation changes.

policy/src/com/android/internal/policy/impl/keyguard/KeyguardSimPukView.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -107,9 +107,7 @@ void reset() {
107107
mPinText="";
108108
mPukText="";
109109
state = ENTER_PUK;
110-
if (mSecurityMessageDisplay != null) {
111-
mSecurityMessageDisplay.setMessage(R.string.kg_puk_enter_puk_hint, true);
112-
}
110+
mSecurityMessageDisplay.setMessage(R.string.kg_puk_enter_puk_hint, true);
113111
mSimPinEntry.requestFocus();
114112
}
115113
}
@@ -132,6 +130,9 @@ public void setKeyguardCallback(KeyguardSecurityCallback callback) {
132130
protected void onFinishInflate() {
133131
super.onFinishInflate();
134132

133+
// We always set a dummy NavigationManager to avoid null checks
134+
mSecurityMessageDisplay = new KeyguardNavigationManager(null);
135+
135136
mSimPinEntry = (TextView) findViewById(R.id.sim_pin_entry);
136137
mSimPinEntry.setOnEditorActionListener(this);
137138
mSimPinEntry.addTextChangedListener(this);

0 commit comments

Comments
 (0)