summaryrefslogtreecommitdiffstats
path: root/WebKit
diff options
context:
space:
mode:
authorCary Clark <cary@android.com>2009-06-25 10:47:16 -0400
committerCary Clark <cary@android.com>2009-06-29 09:05:25 -0400
commit9ef86237529ed76780c62ff0e49c8a0a85a6562c (patch)
tree9d66e42fd31f7a14c0e21c84f00d6e34c30d13d0 /WebKit
parentb6631b666120e63a9ceee4a77613cf962fa37b1f (diff)
downloadexternal_webkit-9ef86237529ed76780c62ff0e49c8a0a85a6562c.zip
external_webkit-9ef86237529ed76780c62ff0e49c8a0a85a6562c.tar.gz
external_webkit-9ef86237529ed76780c62ff0e49c8a0a85a6562c.tar.bz2
Remove the web text view if the key press is abandoned
Requires companion change in frameworks/base
Diffstat (limited to 'WebKit')
-rw-r--r--WebKit/android/jni/WebViewCore.cpp11
-rw-r--r--WebKit/android/jni/WebViewCore.h2
2 files changed, 12 insertions, 1 deletions
diff --git a/WebKit/android/jni/WebViewCore.cpp b/WebKit/android/jni/WebViewCore.cpp
index 00cd64f..bce07ee 100644
--- a/WebKit/android/jni/WebViewCore.cpp
+++ b/WebKit/android/jni/WebViewCore.cpp
@@ -164,6 +164,7 @@ struct WebViewCore::JavaGlue {
jmethodID m_sendNotifyProgressFinished;
jmethodID m_sendViewInvalidate;
jmethodID m_updateTextfield;
+ jmethodID m_clearTextEntry;
jmethodID m_restoreScale;
jmethodID m_needTouchEvents;
jmethodID m_exceededDatabaseQuota;
@@ -227,6 +228,7 @@ WebViewCore::WebViewCore(JNIEnv* env, jobject javaWebViewCore, WebCore::Frame* m
m_javaGlue->m_sendNotifyProgressFinished = GetJMethod(env, clazz, "sendNotifyProgressFinished", "()V");
m_javaGlue->m_sendViewInvalidate = GetJMethod(env, clazz, "sendViewInvalidate", "(IIII)V");
m_javaGlue->m_updateTextfield = GetJMethod(env, clazz, "updateTextfield", "(IZLjava/lang/String;I)V");
+ m_javaGlue->m_clearTextEntry = GetJMethod(env, clazz, "clearTextEntry", "()V");
m_javaGlue->m_restoreScale = GetJMethod(env, clazz, "restoreScale", "(I)V");
m_javaGlue->m_needTouchEvents = GetJMethod(env, clazz, "needTouchEvents", "(Z)V");
m_javaGlue->m_exceededDatabaseQuota = GetJMethod(env, clazz, "exceededDatabaseQuota", "(Ljava/lang/String;Ljava/lang/String;J)V");
@@ -1418,11 +1420,13 @@ void WebViewCore::passToJs(int generation, const WebCore::String& current,
WebCore::Node* focus = currentFocus();
if (!focus) {
DBG_NAV_LOG("!focus");
+ clearTextEntry();
return;
}
WebCore::RenderObject* renderer = focus->renderer();
if (!renderer || (!renderer->isTextField() && !renderer->isTextArea())) {
DBG_NAV_LOGD("renderer==%p || not text", renderer);
+ clearTextEntry();
return;
}
// Block text field updates during a key press.
@@ -1908,6 +1912,13 @@ void WebViewCore::updateTextfield(WebCore::Node* ptr, bool changeToPassword,
checkException(env);
}
+void WebViewCore::clearTextEntry()
+{
+ JNIEnv* env = JSC::Bindings::getJNIEnv();
+ env->CallVoidMethod(m_javaGlue->object(env).get(),
+ m_javaGlue->m_clearTextEntry);
+}
+
void WebViewCore::setSnapAnchor(int x, int y)
{
m_snapAnchorNode = 0;
diff --git a/WebKit/android/jni/WebViewCore.h b/WebKit/android/jni/WebViewCore.h
index 06e9100..7f38cce 100644
--- a/WebKit/android/jni/WebViewCore.h
+++ b/WebKit/android/jni/WebViewCore.h
@@ -160,7 +160,7 @@ namespace android {
*/
void updateTextfield(WebCore::Node* pointer,
bool changeToPassword, const WebCore::String& text);
-
+ void clearTextEntry();
// JavaScript support
void jsAlert(const WebCore::String& url, const WebCore::String& text);
bool jsConfirm(const WebCore::String& url, const WebCore::String& text);