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();