Loading core/java/android/webkit/WebTextView.java +3 −2 Original line number Diff line number Diff line Loading @@ -814,7 +814,6 @@ import java.util.ArrayList; | EditorInfo.TYPE_TEXT_FLAG_CAP_SENTENCES | EditorInfo.TYPE_TEXT_FLAG_AUTO_CORRECT; setImeOptions(EditorInfo.IME_ACTION_NONE); setHint(null); break; case 2: // PASSWORD inPassword = true; Loading Loading @@ -843,9 +842,11 @@ import java.util.ArrayList; default: break; } setHint(null); if (single) { mWebView.requestLabel(mWebView.nativeFocusCandidateFramePointer(), mNodePointer); maxLength = mWebView.nativeFocusCandidateMaxLength(); setHint(mWebView.nativeFocusCandidateLabel()); if (type != 2 /* PASSWORD */) { String name = mWebView.nativeFocusCandidateName(); if (name != null && name.length() > 0) { Loading core/java/android/webkit/WebView.java +30 −4 Original line number Diff line number Diff line Loading @@ -499,6 +499,7 @@ public class WebView extends AbsoluteLayout static final int DOM_FOCUS_CHANGED = 31; static final int IMMEDIATE_REPAINT_MSG_ID = 32; static final int SET_ROOT_LAYER_MSG_ID = 33; static final int RETURN_LABEL = 34; static final String[] HandlerDebugString = { "REMEMBER_PASSWORD", // = 1; Loading Loading @@ -533,7 +534,8 @@ public class WebView extends AbsoluteLayout "HIDE_FULLSCREEN", // = 30; "DOM_FOCUS_CHANGED", // = 31; "IMMEDIATE_REPAINT_MSG_ID", // = 32; "SET_ROOT_LAYER_MSG_ID" // = 33; "SET_ROOT_LAYER_MSG_ID", // = 33; "RETURN_LABEL" // = 34; }; // If the site doesn't use the viewport meta tag to specify the viewport, Loading Loading @@ -3308,6 +3310,17 @@ public class WebView extends AbsoluteLayout } } /** * Pass a message to find out the <label> associated with the <input> * identified by nodePointer * @param framePointer Pointer to the frame containing the <input> node * @param nodePointer Pointer to the node for which a <label> is desired. */ /* package */ void requestLabel(int framePointer, int nodePointer) { mWebViewCore.sendMessage(EventHub.REQUEST_LABEL, framePointer, nodePointer); } /* * This class runs the layers animations in their own thread, * so that we do not slow down the UI. Loading Loading @@ -5361,7 +5374,7 @@ public class WebView extends AbsoluteLayout // exclude INVAL_RECT_MSG_ID since it is frequently output if (DebugFlags.WEB_VIEW && msg.what != INVAL_RECT_MSG_ID) { Log.v(LOGTAG, msg.what < REMEMBER_PASSWORD || msg.what > SET_ROOT_LAYER_MSG_ID ? Integer.toString(msg.what) > RETURN_LABEL ? Integer.toString(msg.what) : HandlerDebugString[msg.what - REMEMBER_PASSWORD]); } if (mWebViewCore == null) { Loading Loading @@ -5592,6 +5605,20 @@ public class WebView extends AbsoluteLayout tData.mEnd); } break; case RETURN_LABEL: if (inEditingMode() && mWebTextView.isSameTextField(msg.arg1)) { mWebTextView.setHint((String) msg.obj); InputMethodManager imm = InputMethodManager.peekInstance(); // The hint is propagated to the IME in // onCreateInputConnection. If the IME is already // active, restart it so that its hint text is updated. if (imm != null && imm.isActive(mWebTextView)) { imm.restartInput(mWebTextView); } } break; case MOVE_OUT_OF_PLUGIN: navHandledKey(msg.arg1, 1, false, 0, true); break; Loading Loading @@ -6350,12 +6377,11 @@ public class WebView extends AbsoluteLayout private native void nativeDumpDisplayTree(String urlOrNull); private native int nativeFindAll(String findLower, String findUpper); private native void nativeFindNext(boolean forward); private native int nativeFocusCandidateFramePointer(); /* package */ native int nativeFocusCandidateFramePointer(); private native boolean nativeFocusCandidateIsPassword(); private native boolean nativeFocusCandidateIsPlugin(); private native boolean nativeFocusCandidateIsRtlText(); private native boolean nativeFocusCandidateIsTextInput(); /* package */ native String nativeFocusCandidateLabel(); /* package */ native int nativeFocusCandidateMaxLength(); /* package */ native String nativeFocusCandidateName(); private native Rect nativeFocusCandidateNodeBounds(); Loading core/java/android/webkit/WebViewCore.java +18 −3 Original line number Diff line number Diff line Loading @@ -746,6 +746,7 @@ final class WebViewCore { } static final String[] HandlerDebugString = { "REQUEST_LABEL", // 97 "UPDATE_FRAME_CACHE_IF_LOADING", // = 98 "SCROLL_TEXT_INPUT", // = 99 "LOAD_URL", // = 100; Loading Loading @@ -799,6 +800,7 @@ final class WebViewCore { class EventHub { // Message Ids static final int REQUEST_LABEL = 97; static final int UPDATE_FRAME_CACHE_IF_LOADING = 98; static final int SCROLL_TEXT_INPUT = 99; static final int LOAD_URL = 100; Loading Loading @@ -911,11 +913,11 @@ final class WebViewCore { @Override public void handleMessage(Message msg) { if (DebugFlags.WEB_VIEW_CORE) { Log.v(LOGTAG, (msg.what < UPDATE_FRAME_CACHE_IF_LOADING Log.v(LOGTAG, (msg.what < REQUEST_LABEL || msg.what > VALID_NODE_BOUNDS ? Integer.toString(msg.what) : HandlerDebugString[msg.what - UPDATE_FRAME_CACHE_IF_LOADING]) - REQUEST_LABEL]) + " arg1=" + msg.arg1 + " arg2=" + msg.arg2 + " obj=" + msg.obj); } Loading @@ -936,6 +938,19 @@ final class WebViewCore { } break; case REQUEST_LABEL: if (mWebView != null) { int nodePointer = msg.arg2; String label = nativeRequestLabel(msg.arg1, nodePointer); if (label != null && label.length() > 0) { Message.obtain(mWebView.mPrivateHandler, WebView.RETURN_LABEL, nodePointer, 0, label).sendToTarget(); } } break; case UPDATE_FRAME_CACHE_IF_LOADING: nativeUpdateFrameCacheIfLoading(); break; Loading Loading @@ -2201,7 +2216,7 @@ final class WebViewCore { } private native void nativeUpdateFrameCacheIfLoading(); private native String nativeRequestLabel(int framePtr, int nodePtr); /** * Scroll the focused textfield to (xPercent, y) in document space */ Loading Loading
core/java/android/webkit/WebTextView.java +3 −2 Original line number Diff line number Diff line Loading @@ -814,7 +814,6 @@ import java.util.ArrayList; | EditorInfo.TYPE_TEXT_FLAG_CAP_SENTENCES | EditorInfo.TYPE_TEXT_FLAG_AUTO_CORRECT; setImeOptions(EditorInfo.IME_ACTION_NONE); setHint(null); break; case 2: // PASSWORD inPassword = true; Loading Loading @@ -843,9 +842,11 @@ import java.util.ArrayList; default: break; } setHint(null); if (single) { mWebView.requestLabel(mWebView.nativeFocusCandidateFramePointer(), mNodePointer); maxLength = mWebView.nativeFocusCandidateMaxLength(); setHint(mWebView.nativeFocusCandidateLabel()); if (type != 2 /* PASSWORD */) { String name = mWebView.nativeFocusCandidateName(); if (name != null && name.length() > 0) { Loading
core/java/android/webkit/WebView.java +30 −4 Original line number Diff line number Diff line Loading @@ -499,6 +499,7 @@ public class WebView extends AbsoluteLayout static final int DOM_FOCUS_CHANGED = 31; static final int IMMEDIATE_REPAINT_MSG_ID = 32; static final int SET_ROOT_LAYER_MSG_ID = 33; static final int RETURN_LABEL = 34; static final String[] HandlerDebugString = { "REMEMBER_PASSWORD", // = 1; Loading Loading @@ -533,7 +534,8 @@ public class WebView extends AbsoluteLayout "HIDE_FULLSCREEN", // = 30; "DOM_FOCUS_CHANGED", // = 31; "IMMEDIATE_REPAINT_MSG_ID", // = 32; "SET_ROOT_LAYER_MSG_ID" // = 33; "SET_ROOT_LAYER_MSG_ID", // = 33; "RETURN_LABEL" // = 34; }; // If the site doesn't use the viewport meta tag to specify the viewport, Loading Loading @@ -3308,6 +3310,17 @@ public class WebView extends AbsoluteLayout } } /** * Pass a message to find out the <label> associated with the <input> * identified by nodePointer * @param framePointer Pointer to the frame containing the <input> node * @param nodePointer Pointer to the node for which a <label> is desired. */ /* package */ void requestLabel(int framePointer, int nodePointer) { mWebViewCore.sendMessage(EventHub.REQUEST_LABEL, framePointer, nodePointer); } /* * This class runs the layers animations in their own thread, * so that we do not slow down the UI. Loading Loading @@ -5361,7 +5374,7 @@ public class WebView extends AbsoluteLayout // exclude INVAL_RECT_MSG_ID since it is frequently output if (DebugFlags.WEB_VIEW && msg.what != INVAL_RECT_MSG_ID) { Log.v(LOGTAG, msg.what < REMEMBER_PASSWORD || msg.what > SET_ROOT_LAYER_MSG_ID ? Integer.toString(msg.what) > RETURN_LABEL ? Integer.toString(msg.what) : HandlerDebugString[msg.what - REMEMBER_PASSWORD]); } if (mWebViewCore == null) { Loading Loading @@ -5592,6 +5605,20 @@ public class WebView extends AbsoluteLayout tData.mEnd); } break; case RETURN_LABEL: if (inEditingMode() && mWebTextView.isSameTextField(msg.arg1)) { mWebTextView.setHint((String) msg.obj); InputMethodManager imm = InputMethodManager.peekInstance(); // The hint is propagated to the IME in // onCreateInputConnection. If the IME is already // active, restart it so that its hint text is updated. if (imm != null && imm.isActive(mWebTextView)) { imm.restartInput(mWebTextView); } } break; case MOVE_OUT_OF_PLUGIN: navHandledKey(msg.arg1, 1, false, 0, true); break; Loading Loading @@ -6350,12 +6377,11 @@ public class WebView extends AbsoluteLayout private native void nativeDumpDisplayTree(String urlOrNull); private native int nativeFindAll(String findLower, String findUpper); private native void nativeFindNext(boolean forward); private native int nativeFocusCandidateFramePointer(); /* package */ native int nativeFocusCandidateFramePointer(); private native boolean nativeFocusCandidateIsPassword(); private native boolean nativeFocusCandidateIsPlugin(); private native boolean nativeFocusCandidateIsRtlText(); private native boolean nativeFocusCandidateIsTextInput(); /* package */ native String nativeFocusCandidateLabel(); /* package */ native int nativeFocusCandidateMaxLength(); /* package */ native String nativeFocusCandidateName(); private native Rect nativeFocusCandidateNodeBounds(); Loading
core/java/android/webkit/WebViewCore.java +18 −3 Original line number Diff line number Diff line Loading @@ -746,6 +746,7 @@ final class WebViewCore { } static final String[] HandlerDebugString = { "REQUEST_LABEL", // 97 "UPDATE_FRAME_CACHE_IF_LOADING", // = 98 "SCROLL_TEXT_INPUT", // = 99 "LOAD_URL", // = 100; Loading Loading @@ -799,6 +800,7 @@ final class WebViewCore { class EventHub { // Message Ids static final int REQUEST_LABEL = 97; static final int UPDATE_FRAME_CACHE_IF_LOADING = 98; static final int SCROLL_TEXT_INPUT = 99; static final int LOAD_URL = 100; Loading Loading @@ -911,11 +913,11 @@ final class WebViewCore { @Override public void handleMessage(Message msg) { if (DebugFlags.WEB_VIEW_CORE) { Log.v(LOGTAG, (msg.what < UPDATE_FRAME_CACHE_IF_LOADING Log.v(LOGTAG, (msg.what < REQUEST_LABEL || msg.what > VALID_NODE_BOUNDS ? Integer.toString(msg.what) : HandlerDebugString[msg.what - UPDATE_FRAME_CACHE_IF_LOADING]) - REQUEST_LABEL]) + " arg1=" + msg.arg1 + " arg2=" + msg.arg2 + " obj=" + msg.obj); } Loading @@ -936,6 +938,19 @@ final class WebViewCore { } break; case REQUEST_LABEL: if (mWebView != null) { int nodePointer = msg.arg2; String label = nativeRequestLabel(msg.arg1, nodePointer); if (label != null && label.length() > 0) { Message.obtain(mWebView.mPrivateHandler, WebView.RETURN_LABEL, nodePointer, 0, label).sendToTarget(); } } break; case UPDATE_FRAME_CACHE_IF_LOADING: nativeUpdateFrameCacheIfLoading(); break; Loading Loading @@ -2201,7 +2216,7 @@ final class WebViewCore { } private native void nativeUpdateFrameCacheIfLoading(); private native String nativeRequestLabel(int framePtr, int nodePtr); /** * Scroll the focused textfield to (xPercent, y) in document space */ Loading