diff options
-rw-r--r-- | core/java/android/webkit/WebTextView.java | 17 | ||||
-rw-r--r-- | core/java/android/webkit/WebView.java | 4 |
2 files changed, 19 insertions, 2 deletions
diff --git a/core/java/android/webkit/WebTextView.java b/core/java/android/webkit/WebTextView.java index dc952e6..19abec1 100644 --- a/core/java/android/webkit/WebTextView.java +++ b/core/java/android/webkit/WebTextView.java @@ -301,6 +301,23 @@ import java.util.ArrayList; } @Override + protected void onDraw(Canvas canvas) { + // onDraw should only be called for password fields. If WebTextView is + // still drawing, but is no longer corresponding to a password field, + // remove it. + if (mWebView == null || !mWebView.nativeFocusCandidateIsPassword() + || !isSameTextField(mWebView.nativeFocusCandidatePointer())) { + // Although calling remove() would seem to make more sense here, + // changing it to not be a password field will make it not draw. + // Other code will make sure that it is removed completely, but this + // way the user will not see it. + setInPassword(false); + } else { + super.onDraw(canvas); + } + } + + @Override public void onEditorAction(int actionCode) { switch (actionCode) { case EditorInfo.IME_ACTION_NEXT: diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java index e2f5de4..66dad0b 100644 --- a/core/java/android/webkit/WebView.java +++ b/core/java/android/webkit/WebView.java @@ -7256,13 +7256,13 @@ public class WebView extends AbsoluteLayout private native void nativeFindNext(boolean forward); /* package */ native int nativeFocusCandidateFramePointer(); /* package */ native boolean nativeFocusCandidateHasNextTextfield(); - private native boolean nativeFocusCandidateIsPassword(); + /* package */ native boolean nativeFocusCandidateIsPassword(); private native boolean nativeFocusCandidateIsRtlText(); private native boolean nativeFocusCandidateIsTextInput(); /* package */ native int nativeFocusCandidateMaxLength(); /* package */ native String nativeFocusCandidateName(); private native Rect nativeFocusCandidateNodeBounds(); - private native int nativeFocusCandidatePointer(); + /* package */ native int nativeFocusCandidatePointer(); private native String nativeFocusCandidateText(); private native int nativeFocusCandidateTextSize(); /** |