summaryrefslogtreecommitdiff
path: root/core/java/android
diff options
context:
space:
mode:
authorBen Murdoch <benm@google.com>2011-09-09 16:49:44 +0100
committerBen Murdoch <benm@google.com>2011-09-09 22:38:39 +0100
commit2376f8253f59e70e733bdf338e9cb49535f3d50f (patch)
treee1e0fdcad17eb98d6904967c9588064b26eaeedf /core/java/android
parent02ea7d48773210fa0f29299269aca26b3201b1d0 (diff)
Relax form autocomplete conditions
Use the URL host and path rather than the complete url to store form autocomplete data. This helps in the situation that a site uses some dynamic query string on the page that contains the form. Also set the autoocmplete threshold to 1 so that we don't flick the autocomplete options up and down as you type the first few characters. Bug: 5265606 Change-Id: I7b372400062ae34f70a78b786007910dc179b101
Diffstat (limited to 'core/java/android')
-rw-r--r--core/java/android/webkit/BrowserFrame.java6
-rw-r--r--core/java/android/webkit/WebTextView.java15
-rw-r--r--core/java/android/webkit/WebView.java2
3 files changed, 19 insertions, 4 deletions
diff --git a/core/java/android/webkit/BrowserFrame.java b/core/java/android/webkit/BrowserFrame.java
index 49b4f66485e7..309857d033e0 100644
--- a/core/java/android/webkit/BrowserFrame.java
+++ b/core/java/android/webkit/BrowserFrame.java
@@ -422,9 +422,9 @@ class BrowserFrame extends Handler {
final WebHistoryItem h = mCallbackProxy.getBackForwardList()
.getCurrentItem();
if (h != null) {
- String currentUrl = h.getUrl();
- if (currentUrl != null) {
- mDatabase.setFormData(currentUrl, data);
+ String url = WebTextView.urlForAutoCompleteData(h.getUrl());
+ if (url != null) {
+ mDatabase.setFormData(url, data);
}
}
}
diff --git a/core/java/android/webkit/WebTextView.java b/core/java/android/webkit/WebTextView.java
index 2a79caad77be..217ad7c4367e 100644
--- a/core/java/android/webkit/WebTextView.java
+++ b/core/java/android/webkit/WebTextView.java
@@ -60,6 +60,8 @@ import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.TextView;
+import java.net.MalformedURLException;
+import java.net.URL;
import java.util.ArrayList;
import junit.framework.Assert;
@@ -1044,6 +1046,7 @@ import junit.framework.Assert;
break;
}
setHint(null);
+ setThreshold(1);
if (single) {
mWebView.requestLabel(mWebView.nativeFocusCandidateFramePointer(),
mNodePointer);
@@ -1077,4 +1080,16 @@ import junit.framework.Assert;
/* package */ void setAutoFillProfileIsSet(boolean autoFillProfileIsSet) {
mAutoFillProfileIsSet = autoFillProfileIsSet;
}
+
+ static String urlForAutoCompleteData(String urlString) {
+ // Remove any fragment or query string.
+ URL url = null;
+ try {
+ url = new URL(urlString);
+ } catch (MalformedURLException e) {
+ Log.e(LOGTAG, "Unable to parse URL "+url);
+ }
+
+ return url != null ? url.getProtocol() + "://" + url.getHost() + url.getPath() : null;
+ }
}
diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java
index 7ba93da0d832..47abbc2e6d2d 100644
--- a/core/java/android/webkit/WebView.java
+++ b/core/java/android/webkit/WebView.java
@@ -4826,7 +4826,7 @@ public class WebView extends AbsoluteLayout
public RequestFormData(String name, String url, Message msg,
boolean autoFillable, boolean autoComplete) {
mName = name;
- mUrl = url;
+ mUrl = WebTextView.urlForAutoCompleteData(url);
mUpdateMessage = msg;
mAutoFillable = autoFillable;
mAutoComplete = autoComplete;