Differentiate empty-string + filter searching from just tapping a filter
Fixes: 154346423
Test: atest DocumentsUIGoogleTests:com.android.documentsui.queries.SearchViewManagerTest
Change-Id: I838e12eebc0d6a16d668dd0a77610d0ca41e6f64
diff --git a/src/com/android/documentsui/queries/SearchViewManager.java b/src/com/android/documentsui/queries/SearchViewManager.java
index c4b91d5..5ecbe94 100644
--- a/src/com/android/documentsui/queries/SearchViewManager.java
+++ b/src/com/android/documentsui/queries/SearchViewManager.java
@@ -159,6 +159,11 @@
final Bundle queryArgs = mChipViewManager.getCheckedChipQueryArgs();
if (!TextUtils.isEmpty(mCurrentSearch)) {
queryArgs.putString(DocumentsContract.QUERY_ARG_DISPLAY_NAME, mCurrentSearch);
+ } else if (isExpanded() && isSearching()) {
+ // The existence of the DocumentsContract.QUERY_ARG_DISPLAY_NAME constant is used to
+ // determine if this is a text search (as opposed to simply filtering from within a
+ // non-searching view), so ensure the argument exists when searching.
+ queryArgs.putString(DocumentsContract.QUERY_ARG_DISPLAY_NAME, "");
}
return queryArgs;
diff --git a/tests/unit/com/android/documentsui/queries/SearchViewManagerTest.java b/tests/unit/com/android/documentsui/queries/SearchViewManagerTest.java
index f78cb18..7b7076c 100644
--- a/tests/unit/com/android/documentsui/queries/SearchViewManagerTest.java
+++ b/tests/unit/com/android/documentsui/queries/SearchViewManagerTest.java
@@ -352,6 +352,37 @@
}
@Test
+ public void testBuildQueryArgs_emptySearchString_expandedSearchWithChips_hasEmptyButNotMissingSearchString()
+ throws Exception {
+ mSearchViewManager.onClick(null);
+ mSearchChipViewManager.mCheckedChipItems = getFakeSearchChipDataList();
+ fastForwardTo(SearchViewManager.SEARCH_DELAY_MS);
+
+ final String queryString =
+ mSearchViewManager.buildQueryArgs()
+ .getString(DocumentsContract.QUERY_ARG_DISPLAY_NAME);
+ assertEquals("", queryString);
+ }
+
+ @Test
+ public void testBuildQueryArgs_emptySearchString_withChipsWithoutExpandedSearch_hasNoSearchString()
+ throws Exception {
+ mSearchChipViewManager.mCheckedChipItems = getFakeSearchChipDataList();
+ fastForwardTo(SearchViewManager.SEARCH_DELAY_MS);
+
+ assertFalse(mSearchViewManager.buildQueryArgs().containsKey(QUERY_ARG_DISPLAY_NAME));
+ }
+
+ @Test
+ public void testBuildQueryArgs_emptySearchString_expandedSearchWithNoChips_hasNoSearchString()
+ throws Exception {
+ mSearchViewManager.onClick(null);
+ fastForwardTo(SearchViewManager.SEARCH_DELAY_MS);
+
+ assertFalse(mSearchViewManager.buildQueryArgs().containsKey(QUERY_ARG_DISPLAY_NAME));
+ }
+
+ @Test
public void testBuildQueryArgs_hasMimeType() throws Exception {
mSearchViewManager.onClick(null);
mSearchChipViewManager.mCheckedChipItems = getFakeSearchChipDataList();