diff options
author | Leon Scroggins <scroggo@google.com> | 2009-12-07 13:42:46 -0500 |
---|---|---|
committer | Leon Scroggins <scroggo@google.com> | 2009-12-07 16:36:40 -0500 |
commit | 74757b62fce144f27c25cc7744df82cd7411b2dc (patch) | |
tree | 1ab52350cf6e2952e680a464bef5723cf0078a77 /WebKit/android/nav/WebView.cpp | |
parent | 2eddb240f196ef15ba9940c3e291bbb6318f1200 (diff) | |
download | external_webkit-74757b62fce144f27c25cc7744df82cd7411b2dc.zip external_webkit-74757b62fce144f27c25cc7744df82cd7411b2dc.tar.gz external_webkit-74757b62fce144f27c25cc7744df82cd7411b2dc.tar.bz2 |
Provide <input> type information to Java side.
Help to fix http://b/issue?id=1890360 and http://b/issue?id=2150538
CacheBuilder.cpp:
Explicitly set isTextField to false for textareas.
CachedRoot:
Remove the code which checks to see if the textfield is a search,
since if it is, we can avoid this path altogether.
WebView:
Return a single integer which tells what type the current text
input field is.
Requires a change to frameworks/base.
Diffstat (limited to 'WebKit/android/nav/WebView.cpp')
-rw-r--r-- | WebKit/android/nav/WebView.cpp | 45 |
1 files changed, 37 insertions, 8 deletions
diff --git a/WebKit/android/nav/WebView.cpp b/WebKit/android/nav/WebView.cpp index af9227d..938d93c 100644 --- a/WebKit/android/nav/WebView.cpp +++ b/WebKit/android/nav/WebView.cpp @@ -1623,12 +1623,6 @@ static bool nativeFocusCandidateIsRtlText(JNIEnv *env, jobject obj) return input ? input->isRtlText() : false; } -static bool nativeFocusCandidateIsTextField(JNIEnv *env, jobject obj) -{ - const CachedInput* input = getInputCandidate(env, obj); - return input ? input->isTextField() : false; -} - static bool nativeFocusCandidateIsTextInput(JNIEnv *env, jobject obj) { const CachedNode* node = getFocusCandidate(env, obj); @@ -1684,6 +1678,41 @@ static jint nativeFocusCandidateTextSize(JNIEnv *env, jobject obj) return input ? input->textSize() : 0; } +enum type { + NONE = -1, + NORMAL_TEXT_FIELD = 0, + TEXT_AREA = 1, + PASSWORD = 2, + SEARCH = 3, + EMAIL = 4, + NUMBER = 5, + TELEPHONE = 6, + URL = 7 +}; + +static int nativeFocusCandidateType(JNIEnv *env, jobject obj) +{ + const CachedInput* input = getInputCandidate(env, obj); + if (!input) return NONE; + if (!input->isTextField()) return TEXT_AREA; + switch (input->inputType()) { + case HTMLInputElement::PASSWORD: + return PASSWORD; + case HTMLInputElement::SEARCH: + return SEARCH; + case HTMLInputElement::EMAIL: + return EMAIL; + case HTMLInputElement::NUMBER: + return NUMBER; + case HTMLInputElement::TELEPHONE: + return TELEPHONE; + case HTMLInputElement::URL: + return URL; + default: + return NORMAL_TEXT_FIELD; + } +} + static bool nativeFocusCandidateIsPlugin(JNIEnv *env, jobject obj) { const CachedNode* node = getFocusCandidate(env, obj); @@ -2058,8 +2087,6 @@ static JNINativeMethod gJavaWebViewMethods[] = { (void*) nativeFocusCandidateIsPlugin }, { "nativeFocusCandidateIsRtlText", "()Z", (void*) nativeFocusCandidateIsRtlText }, - { "nativeFocusCandidateIsTextField", "()Z", - (void*) nativeFocusCandidateIsTextField }, { "nativeFocusCandidateIsTextInput", "()Z", (void*) nativeFocusCandidateIsTextInput }, { "nativeFocusCandidateMaxLength", "()I", @@ -2074,6 +2101,8 @@ static JNINativeMethod gJavaWebViewMethods[] = { (void*) nativeFocusCandidateText }, { "nativeFocusCandidateTextSize", "()I", (void*) nativeFocusCandidateTextSize }, + { "nativeFocusCandidateType", "()I", + (void*) nativeFocusCandidateType }, { "nativeFocusIsPlugin", "()Z", (void*) nativeFocusIsPlugin }, { "nativeFocusNodePointer", "()I", |