diff options
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; } |