From 74757b62fce144f27c25cc7744df82cd7411b2dc Mon Sep 17 00:00:00 2001 From: Leon Scroggins Date: Mon, 7 Dec 2009 13:42:46 -0500 Subject: Provide 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. --- WebKit/android/nav/WebView.cpp | 45 ++++++++++++++++++++++++++++++++++-------- 1 file changed, 37 insertions(+), 8 deletions(-) (limited to 'WebKit/android/nav/WebView.cpp') 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", -- cgit v1.1