summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/view/autofill/AutoFillValue.java5
-rw-r--r--core/java/android/view/autofill/AutofillValue.java6
-rw-r--r--services/autofill/java/com/android/server/autofill/AutofillManagerServiceImpl.java17
-rw-r--r--services/autofill/java/com/android/server/autofill/ui/AutoFillUI.java2
-rw-r--r--services/autofill/java/com/android/server/autofill/ui/FillUi.java51
5 files changed, 46 insertions, 35 deletions
diff --git a/core/java/android/view/autofill/AutoFillValue.java b/core/java/android/view/autofill/AutoFillValue.java
index 5dd17f1c2bee..4774d8f0a71a 100644
--- a/core/java/android/view/autofill/AutoFillValue.java
+++ b/core/java/android/view/autofill/AutoFillValue.java
@@ -89,11 +89,6 @@ public final class AutoFillValue implements Parcelable {
return mRealValue.equals(other.mRealValue);
}
- /** @hide */
- public String coerceToString() {
- return mRealValue.coerceToString();
- }
-
@Override
public String toString() {
if (!DEBUG) return super.toString();
diff --git a/core/java/android/view/autofill/AutofillValue.java b/core/java/android/view/autofill/AutofillValue.java
index 9babb59d0076..0e6b172af814 100644
--- a/core/java/android/view/autofill/AutofillValue.java
+++ b/core/java/android/view/autofill/AutofillValue.java
@@ -157,12 +157,6 @@ public final class AutofillValue implements Parcelable {
}
}
- /** @hide */
- public String coerceToString() {
- // TODO(b/33197203): How can we filter on toggles or list values?
- return mValue.toString();
- }
-
@Override
public String toString() {
if (!DEBUG) return super.toString();
diff --git a/services/autofill/java/com/android/server/autofill/AutofillManagerServiceImpl.java b/services/autofill/java/com/android/server/autofill/AutofillManagerServiceImpl.java
index 411aee0d6c2f..9663e0e69891 100644
--- a/services/autofill/java/com/android/server/autofill/AutofillManagerServiceImpl.java
+++ b/services/autofill/java/com/android/server/autofill/AutofillManagerServiceImpl.java
@@ -914,7 +914,11 @@ final class AutofillManagerServiceImpl {
viewState.mAutofillValue = value;
// Update the chooser UI
- getUiForShowing().filterFillUi(value.coerceToString());
+ if (value.isText()) {
+ getUiForShowing().filterFillUi(value.getTextValue().toString());
+ } else {
+ getUiForShowing().filterFillUi(null);
+ }
}
return;
@@ -952,14 +956,9 @@ final class AutofillManagerServiceImpl {
@Override
public void onFillReady(ViewState viewState, FillResponse response, Rect bounds,
AutofillId filledId, @Nullable AutofillValue value) {
- String filterText = "";
- if (value != null) {
- // TODO(b/33197203): Handle other AutofillValue types
- if (value.isText()) {
- filterText = value.getTextValue().toString();
- } else {
- Log.w(TAG, value + " could not be autofilled into " + this);
- }
+ String filterText = null;
+ if (value != null && value.isText()) {
+ filterText = value.getTextValue().toString();
}
getUiForShowing().showFillUi(filledId, response, bounds, filterText);
diff --git a/services/autofill/java/com/android/server/autofill/ui/AutoFillUI.java b/services/autofill/java/com/android/server/autofill/ui/AutoFillUI.java
index 3eefa7cb6506..c7e59a39aeef 100644
--- a/services/autofill/java/com/android/server/autofill/ui/AutoFillUI.java
+++ b/services/autofill/java/com/android/server/autofill/ui/AutoFillUI.java
@@ -123,7 +123,7 @@ public final class AutoFillUI {
}
hideSaveUiUiThread();
if (mFillUi != null) {
- mFillUi.filter(filterText);
+ mFillUi.setFilterText(filterText);
}
});
}
diff --git a/services/autofill/java/com/android/server/autofill/ui/FillUi.java b/services/autofill/java/com/android/server/autofill/ui/FillUi.java
index 3fdcd9e85876..a7d9fe96d0da 100644
--- a/services/autofill/java/com/android/server/autofill/ui/FillUi.java
+++ b/services/autofill/java/com/android/server/autofill/ui/FillUi.java
@@ -113,8 +113,13 @@ final class FillUi {
Slog.e(TAG, "Error inflating remote views", e);
continue;
}
- items.add(new ViewItem(dataset, value.coerceToString()
- .toLowerCase(), view));
+
+ String valueText = null;
+ if (value.isText()) {
+ valueText = value.getTextValue().toString().toLowerCase();
+ }
+
+ items.add(new ViewItem(dataset, valueText, view));
}
}
@@ -134,7 +139,13 @@ final class FillUi {
mCallback.onDatasetPicked(vi.getDataset());
});
- filter(filterText);
+ if (filterText == null) {
+ mFilterText = null;
+ } else {
+ mFilterText = filterText.toLowerCase();
+ }
+
+ applyNewFilterText();
mWindow = new AnchoredWindow(windowToken, mListView);
}
}
@@ -147,16 +158,8 @@ final class FillUi {
}
}
- public void filter(@Nullable String filterText) {
- throwIfDestroyed();
- if (mAdapter == null) {
- return;
- }
- if (Objects.equal(mFilterText, filterText)) {
- return;
- }
- mFilterText = filterText;
- mAdapter.getFilter().filter(filterText, (count) -> {
+ private void applyNewFilterText() {
+ mAdapter.getFilter().filter(mFilterText, (count) -> {
if (mDestroyed) {
return;
}
@@ -176,6 +179,26 @@ final class FillUi {
});
}
+ public void setFilterText(@Nullable String filterText) {
+ throwIfDestroyed();
+ if (mAdapter == null) {
+ return;
+ }
+
+ if (filterText == null) {
+ filterText = null;
+ } else {
+ filterText = filterText.toLowerCase();
+ }
+
+ if (Objects.equal(mFilterText, filterText)) {
+ return;
+ }
+ mFilterText = filterText;
+
+ applyNewFilterText();
+ }
+
public void destroy() {
throwIfDestroyed();
mWindow.hide();
@@ -235,7 +258,7 @@ final class FillUi {
ViewItem(Dataset dataset, String value, View view) {
mDataset = dataset;
- mValue = value.toLowerCase();
+ mValue = value;
mView = view;
}