summaryrefslogtreecommitdiffstats
path: root/WebKit/android
diff options
context:
space:
mode:
authorLeon Scroggins <scroggo@google.com>2009-12-02 14:47:32 -0500
committerLeon Scroggins <scroggo@google.com>2009-12-02 15:06:38 -0500
commit4e95824e8ae0b33b964420c5cd6dc13580adeafd (patch)
tree3e96aec5258948e5098256a846c2d09a203fb2b9 /WebKit/android
parent8ec4217018562da37ecf4144e582fa848b807263 (diff)
downloadexternal_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.cpp35
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);
+ }
}
}
}