Fully split browse and search results output

Bug: 130646668
Test: Manual
Change-Id: Ie6b1b4e63c38973c21d25605410bb789da09ff44
diff --git a/car-media-common/src/com/android/car/media/common/browse/MediaBrowserViewModel.java b/car-media-common/src/com/android/car/media/common/browse/MediaBrowserViewModel.java
index d90d739..74143c1 100644
--- a/car-media-common/src/com/android/car/media/common/browse/MediaBrowserViewModel.java
+++ b/car-media-common/src/com/android/car/media/common/browse/MediaBrowserViewModel.java
@@ -70,11 +70,8 @@
      * A MediaSource must be selected and its MediaBrowser connected, otherwise the FutureData will
      * always contain a {@code null} data value.
      *
-     * Will emit browse results if provided search query is {@code null},
-     * and search query results otherwise.
-     *
      * @return a LiveData that emits a FutureData that contains the loading status and the
-     * MediaItemMetadatas for the current search query or browsed id
+     * MediaItemMetadatas for the current browsed id
      */
     LiveData<FutureData<List<MediaItemMetadata>>> getBrowsedMediaItems();
 
@@ -82,7 +79,7 @@
      * Fetches the MediaItemMetadatas for the current search query, and the loading status of the
      * fetch operation.
      *
-     * This is the same as {@link #getBrowsedMediaItems()}, but only returning search results
+     * See {@link #getBrowsedMediaItems()}
      */
     LiveData<FutureData<List<MediaItemMetadata>>> getSearchedMediaItems();
 
diff --git a/car-media-common/src/com/android/car/media/common/browse/MediaBrowserViewModelImpl.java b/car-media-common/src/com/android/car/media/common/browse/MediaBrowserViewModelImpl.java
index 83f8489..71a1e56 100644
--- a/car-media-common/src/com/android/car/media/common/browse/MediaBrowserViewModelImpl.java
+++ b/car-media-common/src/com/android/car/media/common/browse/MediaBrowserViewModelImpl.java
@@ -19,8 +19,6 @@
 import static androidx.lifecycle.Transformations.map;
 
 import static com.android.car.arch.common.LiveDataFunctions.dataOf;
-import static com.android.car.arch.common.LiveDataFunctions.emitsNull;
-import static com.android.car.arch.common.LiveDataFunctions.ifThenElse;
 import static com.android.car.arch.common.LiveDataFunctions.loadingSwitchMap;
 import static com.android.car.arch.common.LiveDataFunctions.pair;
 import static com.android.car.arch.common.LiveDataFunctions.split;
@@ -63,7 +61,7 @@
             map(mMediaBrowserSwitch.asLiveData(), MediaBrowserViewModelImpl::requireConnected);
 
     private final LiveData<FutureData<List<MediaItemMetadata>>> mSearchedMediaItems;
-    private final LiveData<FutureData<List<MediaItemMetadata>>> mCurrentMediaItems;
+    private final LiveData<FutureData<List<MediaItemMetadata>>> mBrowsedMediaItems;
 
     private final LiveData<BrowseState> mBrowseState;
 
@@ -78,7 +76,7 @@
                     return mediaBrowser.getServiceComponent().getPackageName();
                 });
 
-        LiveData<FutureData<List<MediaItemMetadata>>> currentBrowseItems =
+        mBrowsedMediaItems =
                 loadingSwitchMap(pair(mConnectedMediaBrowser, mCurrentBrowseId),
                         split((mediaBrowser, browseId) ->
                                 mediaBrowser == null
@@ -90,12 +88,11 @@
                                 (mediaBrowser == null || TextUtils.isEmpty(query))
                                         ? null
                                         : new SearchedMediaItems(mediaBrowser, query)));
-        mCurrentMediaItems = ifThenElse(emitsNull(mCurrentSearchQuery),
-                currentBrowseItems, mSearchedMediaItems);
+
         mBrowseState = new MediatorLiveData<BrowseState>() {
             {
                 setValue(BrowseState.EMPTY);
-                addSource(mCurrentMediaItems, items -> update());
+                addSource(mBrowsedMediaItems, items -> update());
             }
 
             private void update() {
@@ -103,14 +100,14 @@
             }
 
             private BrowseState getState() {
-                if (mCurrentMediaItems.getValue() == null) {
+                if (mBrowsedMediaItems.getValue() == null) {
                     // Uninitialized
                     return BrowseState.EMPTY;
                 }
-                if (mCurrentMediaItems.getValue().isLoading()) {
+                if (mBrowsedMediaItems.getValue().isLoading()) {
                     return BrowseState.LOADING;
                 }
-                List<MediaItemMetadata> items = mCurrentMediaItems.getValue().getData();
+                List<MediaItemMetadata> items = mBrowsedMediaItems.getValue().getData();
                 if (items == null) {
                     // Normally this could be null if it hasn't been initialized, but in that case
                     // isLoading would not be false, so this means it must have encountered an
@@ -176,26 +173,9 @@
         return mBrowseState;
     }
 
-    /**
-     * Fetches the MediaItemMetadatas for the current browsed id, and the loading status of the
-     * fetch operation.
-     *
-     * This LiveData will never emit {@code null}. If the data is loading, the data component of the
-     * {@link FutureData} will be null
-     * A MediaSource must be selected and its MediaBrowser connected, otherwise the FutureData will
-     * always contain a {@code null} data value.
-     *
-     * Will emit browse results if provided search query is {@code null},
-     * and search query results otherwise.
-     *
-     * @return a LiveData that emits a FutureData that contains the loading status and the
-     * MediaItemMetadatas for the current search query or browsed id
-     * @see #setCurrentBrowseId(String)
-     * @see #search(String)
-     */
     @Override
     public LiveData<FutureData<List<MediaItemMetadata>>> getBrowsedMediaItems() {
-        return mCurrentMediaItems;
+        return mBrowsedMediaItems;
     }
 
     @Override