summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/java/android/webkit/WebTextView.java17
-rw-r--r--core/java/android/webkit/WebView.java4
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();
/**