diff options
| author | Leon Scroggins <scroggo@google.com> | 2009-12-02 14:47:32 -0500 |
|---|---|---|
| committer | Leon Scroggins <scroggo@google.com> | 2009-12-02 15:06:38 -0500 |
| commit | 4e95824e8ae0b33b964420c5cd6dc13580adeafd (patch) | |
| tree | 3e96aec5258948e5098256a846c2d09a203fb2b9 /WebKit/android | |
| parent | 8ec4217018562da37ecf4144e582fa848b807263 (diff) | |
| download | external_webkit-4e95824e8ae0b33b964420c5cd6dc13580adeafd.zip external_webkit-4e95824e8ae0b33b964420c5cd6dc13580adeafd.tar.gz external_webkit-4e95824e8ae0b33b964420c5cd6dc13580adeafd.tar.bz2 | |
Save form data for elements other than type "text".
Partial fix for http://b/issue?id=2232001
When returning the form data for a page, check other types of textfields
besides "text" input elements. Also consider "email", "number", etc.
Diffstat (limited to 'WebKit/android')
| -rw-r--r-- | WebKit/android/jni/WebCoreFrameBridge.cpp | 35 |
1 files changed, 15 insertions, 20 deletions
diff --git a/WebKit/android/jni/WebCoreFrameBridge.cpp b/WebKit/android/jni/WebCoreFrameBridge.cpp index 36f58e9..4255422 100644 --- a/WebKit/android/jni/WebCoreFrameBridge.cpp +++ b/WebKit/android/jni/WebCoreFrameBridge.cpp @@ -1450,9 +1450,6 @@ static jobject GetFormTextData(JNIEnv *env, jobject obj) "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;"); LOG_ASSERT(put, "Could not find put method on HashMap"); - static const WebCore::AtomicString text("text"); - static const WebCore::AtomicString off("off"); - WebCore::HTMLFormElement* form; WebCore::HTMLInputElement* input; for (WebCore::Node* node = collection->firstItem(); node; node = collection->nextItem()) { @@ -1462,23 +1459,21 @@ static jobject GetFormTextData(JNIEnv *env, jobject obj) size_t size = elements.size(); for (size_t i = 0; i < size; i++) { WebCore::HTMLFormControlElement* e = elements[i]; - if (e->type() == text) { - if (e->hasAttribute(WebCore::HTMLNames::autocompleteAttr)) { - const WebCore::AtomicString& attr = e->getAttribute(WebCore::HTMLNames::autocompleteAttr); - if (attr == off) - continue; - } - input = (WebCore::HTMLInputElement*) e; - WebCore::String value = input->value(); - int len = value.length(); - if (len) { - const WebCore::AtomicString& name = input->name(); - jstring key = env->NewString((jchar *)name.characters(), name.length()); - jstring val = env->NewString((jchar *)value.characters(), len); - LOG_ASSERT(key && val, "name or value not set"); - env->CallObjectMethod(hashMap, put, key, val); - env->DeleteLocalRef(key); - env->DeleteLocalRef(val); + if (e->hasTagName(WebCore::HTMLNames::inputTag)) { + input = static_cast<WebCore::HTMLInputElement*>(e); + if (input->isTextField() && !input->isPasswordField() + && input->autoComplete()) { + WebCore::String value = input->value(); + int len = value.length(); + if (len) { + const WebCore::AtomicString& name = input->name(); + jstring key = env->NewString((jchar *)name.characters(), name.length()); + jstring val = env->NewString((jchar *)value.characters(), len); + LOG_ASSERT(key && val, "name or value not set"); + env->CallObjectMethod(hashMap, put, key, val); + env->DeleteLocalRef(key); + env->DeleteLocalRef(val); + } } } } |
