From d56a49785fe6357991aa7edc708bbf6c339ce85d Mon Sep 17 00:00:00 2001 From: Felipe Leme Date: Wed, 6 Sep 2017 17:03:16 -0700 Subject: Add pseudo-filtering on authenticated views. When the autofill UI is shown for an authenticated FillResponse or Dataset and the user types something, it should be filtered as if the matched failed. Test: cts-tradefed run commandAndExit cts-dev -m CtsAutoFillServiceTestCases Fixes: 65415443 Change-Id: I6a6b5af369e4e5a9cea49ae124dc517dbe5c70be --- .../java/com/android/server/autofill/ui/FillUi.java | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) 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 24f3b339b761..371e74d6f04e 100644 --- a/services/autofill/java/com/android/server/autofill/ui/FillUi.java +++ b/services/autofill/java/com/android/server/autofill/ui/FillUi.java @@ -229,6 +229,13 @@ final class FillUi { public void setFilterText(@Nullable String filterText) { throwIfDestroyed(); if (mAdapter == null) { + // ViewState doesn't not support filtering - typically when it's for an authenticated + // FillResponse. + if (TextUtils.isEmpty(filterText)) { + mCallback.requestShowFillUi(mContentWidth, mContentHeight, mWindowPresenter); + } else { + mCallback.requestHideFillUi(); + } return; } @@ -510,8 +517,9 @@ final class FillUi { final ViewItem item = mAllItems.get(i); final String value = item.getValue(); // No value, i.e. null, matches any filter - if (value == null - || value.toLowerCase().startsWith(constraintLowerCase)) { + if ((value == null && item.mDataset.getAuthentication() == null) + || (value != null + && value.toLowerCase().startsWith(constraintLowerCase))) { filteredItems.add(item); } } @@ -525,9 +533,11 @@ final class FillUi { final boolean resultCountChanged; final int oldItemCount = mFilteredItems.size(); mFilteredItems.clear(); - @SuppressWarnings("unchecked") - final List items = (List) results.values; - mFilteredItems.addAll(items); + if (results.count > 0) { + @SuppressWarnings("unchecked") + final List items = (List) results.values; + mFilteredItems.addAll(items); + } resultCountChanged = (oldItemCount != mFilteredItems.size()); if (resultCountChanged) { announceSearchResultIfNeeded(); -- cgit v1.2.3-59-g8ed1b