am 09e8303f: Merge "Clear security message on user input" into mnc-dev

* commit '09e8303fd8eb2368f2de0763ecf6fee868d5d71c':
  Clear security message on user input
This commit is contained in:
Xiyuan Xia
2015-05-14 15:14:17 +00:00
committed by Android Git Automerger
6 changed files with 49 additions and 16 deletions

View File

@@ -174,9 +174,16 @@ public abstract class KeyguardAbsKeyInputView extends LinearLayout
}.start(); }.start();
} }
protected void onUserInput() {
if (mCallback != null) {
mCallback.userActivity();
}
mSecurityMessageDisplay.setMessage("", false);
}
@Override @Override
public boolean onKeyDown(int keyCode, KeyEvent event) { public boolean onKeyDown(int keyCode, KeyEvent event) {
mCallback.userActivity(); onUserInput();
return false; return false;
} }

View File

@@ -88,24 +88,33 @@ class KeyguardMessageArea extends TextView {
} }
} }
@Override
public void setMessage(CharSequence msg, boolean important) { public void setMessage(CharSequence msg, boolean important) {
if (!TextUtils.isEmpty(msg) && important) { if (!TextUtils.isEmpty(msg) && important) {
mMessageArea.mMessage = msg; mMessageArea.mMessage = msg;
mMessageArea.securityMessageChanged(); mMessageArea.securityMessageChanged();
} else {
mMessageArea.clearMessage();
} }
} }
@Override
public void setMessage(int resId, boolean important) { public void setMessage(int resId, boolean important) {
if (resId != 0 && important) { if (resId != 0 && important) {
mMessageArea.mMessage = mMessageArea.getContext().getResources().getText(resId); mMessageArea.mMessage = mMessageArea.getContext().getResources().getText(resId);
mMessageArea.securityMessageChanged(); mMessageArea.securityMessageChanged();
} else {
mMessageArea.clearMessage();
} }
} }
@Override
public void setMessage(int resId, boolean important, Object... formatArgs) { public void setMessage(int resId, boolean important, Object... formatArgs) {
if (resId != 0 && important) { if (resId != 0 && important) {
mMessageArea.mMessage = mMessageArea.getContext().getString(resId, formatArgs); mMessageArea.mMessage = mMessageArea.getContext().getString(resId, formatArgs);
mMessageArea.securityMessageChanged(); mMessageArea.securityMessageChanged();
} else {
mMessageArea.clearMessage();
} }
} }
@@ -176,6 +185,11 @@ class KeyguardMessageArea extends TextView {
(SystemClock.uptimeMillis() + ANNOUNCEMENT_DELAY)); (SystemClock.uptimeMillis() + ANNOUNCEMENT_DELAY));
} }
public void clearMessage() {
mHandler.removeCallbacks(mClearMessageRunnable);
mHandler.post(mClearMessageRunnable);
}
/** /**
* Update the status lines based on these rules: * Update the status lines based on these rules:
* AlarmStatus: Alarm state always gets it's own line. * AlarmStatus: Alarm state always gets it's own line.

View File

@@ -20,6 +20,7 @@ import android.content.Context;
import android.graphics.Rect; import android.graphics.Rect;
import android.text.Editable; import android.text.Editable;
import android.text.InputType; import android.text.InputType;
import android.text.TextUtils;
import android.text.TextWatcher; import android.text.TextWatcher;
import android.text.method.TextKeyListener; import android.text.method.TextKeyListener;
import android.util.AttributeSet; import android.util.AttributeSet;
@@ -138,20 +139,6 @@ public class KeyguardPasswordView extends KeyguardAbsKeyInputView
// Set selected property on so the view can send accessibility events. // Set selected property on so the view can send accessibility events.
mPasswordEntry.setSelected(true); mPasswordEntry.setSelected(true);
mPasswordEntry.addTextChangedListener(new TextWatcher() {
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
public void afterTextChanged(Editable s) {
if (mCallback != null) {
mCallback.userActivity();
}
}
});
mPasswordEntry.requestFocus(); mPasswordEntry.requestFocus();
// If there's more than one IME, enable the IME switcher button // If there's more than one IME, enable the IME switcher button
@@ -293,6 +280,11 @@ public class KeyguardPasswordView extends KeyguardAbsKeyInputView
@Override @Override
public void afterTextChanged(Editable s) { public void afterTextChanged(Editable s) {
// Poor man's user edit detection, assuming empty text is programmatic and everything else
// is from the user.
if (!TextUtils.isEmpty(s)) {
onUserInput();
}
} }
@Override @Override

View File

@@ -208,6 +208,7 @@ public class KeyguardPatternView extends LinearLayout implements KeyguardSecurit
public void onPatternStart() { public void onPatternStart() {
mLockPatternView.removeCallbacks(mCancelPatternRunnable); mLockPatternView.removeCallbacks(mCancelPatternRunnable);
mSecurityMessageDisplay.setMessage("", false);
} }
public void onPatternCleared() { public void onPatternCleared() {

View File

@@ -148,7 +148,14 @@ public abstract class KeyguardPinBasedInputView extends KeyguardAbsKeyInputView
// Poke the wakelock any time the text is selected or modified // Poke the wakelock any time the text is selected or modified
mPasswordEntry.setOnClickListener(new OnClickListener() { mPasswordEntry.setOnClickListener(new OnClickListener() {
public void onClick(View v) { public void onClick(View v) {
mCallback.userActivity(); onUserInput();
}
});
mPasswordEntry.setUserActivityListener(new PasswordTextView.UserActivityListener() {
@Override
public void onUserActivity() {
onUserInput();
} }
}); });

View File

@@ -92,6 +92,11 @@ public class PasswordTextView extends View {
private Interpolator mDisappearInterpolator; private Interpolator mDisappearInterpolator;
private Interpolator mFastOutSlowInInterpolator; private Interpolator mFastOutSlowInInterpolator;
private boolean mShowPassword; private boolean mShowPassword;
private UserActivityListener mUserActivityListener;
public interface UserActivityListener {
void onUserActivity();
}
public PasswordTextView(Context context) { public PasswordTextView(Context context) {
this(context, null); this(context, null);
@@ -206,8 +211,15 @@ public class PasswordTextView extends View {
sendAccessibilityEventTypeViewTextChanged(textbefore, textbefore.length(), 0, 1); sendAccessibilityEventTypeViewTextChanged(textbefore, textbefore.length(), 0, 1);
} }
public void setUserActivityListener(UserActivityListener userActivitiListener) {
mUserActivityListener = userActivitiListener;
}
private void userActivity() { private void userActivity() {
mPM.userActivity(SystemClock.uptimeMillis(), false); mPM.userActivity(SystemClock.uptimeMillis(), false);
if (mUserActivityListener != null) {
mUserActivityListener.onUserActivity();
}
} }
public void deleteLastChar() { public void deleteLastChar() {