summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Cary Clark <cary@android.com> 2009-06-25 10:49:32 -0400
committer Cary Clark <cary@android.com> 2009-06-29 09:30:42 -0400
commit243ea06d2bf67e8b54da51977687b08f49aeb093 (patch)
tree3d10ab3977764849fed1915314277c86d7f0db64
parent215b72cbf7e8c8241dd8bbc12b8ad94825cd015e (diff)
Remove the web text view if the key cannot be handled
Also add some debugging to WebTextView Requires companion change in external/webkit
-rw-r--r--core/java/android/webkit/DebugFlags.java1
-rw-r--r--core/java/android/webkit/WebTextView.java16
-rw-r--r--core/java/android/webkit/WebView.java16
-rw-r--r--core/java/android/webkit/WebViewCore.java13
4 files changed, 43 insertions, 3 deletions
diff --git a/core/java/android/webkit/DebugFlags.java b/core/java/android/webkit/DebugFlags.java
index 89cb606df165..8e25395f1201 100644
--- a/core/java/android/webkit/DebugFlags.java
+++ b/core/java/android/webkit/DebugFlags.java
@@ -42,6 +42,7 @@ class DebugFlags {
public static final boolean WEB_BACK_FORWARD_LIST = false;
public static final boolean WEB_SETTINGS = false;
public static final boolean WEB_SYNC_MANAGER = false;
+ public static final boolean WEB_TEXT_VIEW = false;
public static final boolean WEB_VIEW = false;
public static final boolean WEB_VIEW_CORE = false;
diff --git a/core/java/android/webkit/WebTextView.java b/core/java/android/webkit/WebTextView.java
index 4a8fa3cb2f3b..79896f26661a 100644
--- a/core/java/android/webkit/WebTextView.java
+++ b/core/java/android/webkit/WebTextView.java
@@ -24,6 +24,7 @@ import android.text.Selection;
import android.text.Spannable;
import android.text.TextUtils;
import android.text.method.MovementMethod;
+import android.util.Log;
import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.InputMethodManager;
import android.view.KeyCharacterMap;
@@ -45,6 +46,8 @@ import java.util.ArrayList;
*/
/* package */ class WebTextView extends AutoCompleteTextView {
+ static final String LOGTAG = "webtextview";
+
private WebView mWebView;
private boolean mSingle;
private int mWidthSpec;
@@ -82,6 +85,7 @@ import java.util.ArrayList;
setImeOptions(EditorInfo.IME_ACTION_NONE);
// Allow webkit's drawing to show through
setWillNotDraw(true);
+ setCursorVisible(false);
}
@Override
@@ -268,6 +272,10 @@ import java.util.ArrayList;
@Override
protected void onSelectionChanged(int selStart, int selEnd) {
if (mWebView != null) {
+ if (DebugFlags.WEB_TEXT_VIEW) {
+ Log.v(LOGTAG, "onSelectionChanged selStart=" + selStart
+ + " selEnd=" + selEnd);
+ }
mWebView.setSelection(selStart, selEnd);
}
}
@@ -313,6 +321,10 @@ import java.util.ArrayList;
} else {
// This corrects the selection which may have been affected by the
// trackball or auto-correct.
+ if (DebugFlags.WEB_TEXT_VIEW) {
+ Log.v(LOGTAG, "onTextChanged start=" + start
+ + " start + before=" + (start + before));
+ }
mWebView.setSelection(start, start + before);
}
if (!cannotUseKeyEvents) {
@@ -542,6 +554,10 @@ import java.util.ArrayList;
} else if (start > length) {
start = length;
}
+ if (DebugFlags.WEB_TEXT_VIEW) {
+ Log.v(LOGTAG, "setText start=" + start
+ + " end=" + end);
+ }
Selection.setSelection(span, start, end);
}
diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java
index 6c7b1b9848ad..5603ec90c228 100644
--- a/core/java/android/webkit/WebView.java
+++ b/core/java/android/webkit/WebView.java
@@ -459,6 +459,8 @@ public class WebView extends AbsoluteLayout
static final int UPDATE_TEXTFIELD_TEXT_MSG_ID = 17;
static final int DID_FIRST_LAYOUT_MSG_ID = 18;
static final int MOVE_OUT_OF_PLUGIN = 19;
+ static final int CLEAR_TEXT_ENTRY = 20;
+
static final int UPDATE_CLIPBOARD = 22;
static final int LONG_PRESS_CENTER = 23;
static final int PREVENT_TOUCH_ID = 24;
@@ -486,7 +488,7 @@ public class WebView extends AbsoluteLayout
"UPDATE_TEXTFIELD_TEXT_MSG_ID", // = 17;
"DID_FIRST_LAYOUT_MSG_ID", // = 18;
"MOVE_OUT_OF_PLUGIN", // = 19;
- "20",
+ "CLEAR_TEXT_ENTRY", // = 20;
"21", // = 21;
"UPDATE_CLIPBOARD", // = 22;
"LONG_PRESS_CENTER", // = 23;
@@ -3108,6 +3110,9 @@ public class WebView extends AbsoluteLayout
mWebTextView.setInPassword(nativeFocusCandidateIsPassword());
if (null == text) {
mWebTextView.setText("", 0, 0);
+ if (DebugFlags.WEB_VIEW) {
+ Log.v(LOGTAG, "rebuildWebTextView null == text");
+ }
} else {
// Change to true to enable the old style behavior, where
// entering a textfield/textarea always set the selection to the
@@ -3122,8 +3127,14 @@ public class WebView extends AbsoluteLayout
} else if (isTextField) {
int length = text.length();
mWebTextView.setText(text, length, length);
+ if (DebugFlags.WEB_VIEW) {
+ Log.v(LOGTAG, "rebuildWebTextView length=" + length);
+ }
} else {
mWebTextView.setText(text, 0, 0);
+ if (DebugFlags.WEB_VIEW) {
+ Log.v(LOGTAG, "rebuildWebTextView !isTextField");
+ }
}
}
mWebTextView.requestFocus();
@@ -4847,6 +4858,9 @@ public class WebView extends AbsoluteLayout
}
rebuildWebTextView();
break;
+ case CLEAR_TEXT_ENTRY:
+ clearTextEntry();
+ break;
case INVAL_RECT_MSG_ID: {
Rect r = (Rect)msg.obj;
if (r == null) {
diff --git a/core/java/android/webkit/WebViewCore.java b/core/java/android/webkit/WebViewCore.java
index 2376d2e0f33b..b75ba94146ee 100644
--- a/core/java/android/webkit/WebViewCore.java
+++ b/core/java/android/webkit/WebViewCore.java
@@ -720,9 +720,11 @@ final class WebViewCore {
@Override
public void handleMessage(Message msg) {
if (DebugFlags.WEB_VIEW_CORE) {
- Log.v(LOGTAG, msg.what < LOAD_URL || msg.what
+ Log.v(LOGTAG, (msg.what < LOAD_URL || msg.what
> FREE_MEMORY ? Integer.toString(msg.what)
- : HandlerDebugString[msg.what - LOAD_URL]);
+ : HandlerDebugString[msg.what - LOAD_URL])
+ + " arg1=" + msg.arg1 + " arg2=" + msg.arg2
+ + " obj=" + msg.obj);
}
switch (msg.what) {
case WEBKIT_DRAW:
@@ -1749,6 +1751,13 @@ final class WebViewCore {
}
}
+ // called by JNI
+ private void clearTextEntry() {
+ if (mWebView == null) return;
+ Message.obtain(mWebView.mPrivateHandler,
+ WebView.CLEAR_TEXT_ENTRY).sendToTarget();
+ }
+
// these must be in document space (i.e. not scaled/zoomed).
private native void nativeSetScrollOffset(int gen, int dx, int dy);