Fix error handle regression

Bring mBrowseTreeHasChildren back so that the order of
handlePlaybackState() and updateTabs() doesn't matter.
(Otherwise we have to call the latter before the former.)

Fixes: 145834200
Test: manual
Change-Id: I19c6e80db8b54a84b24cd45796f6b5084cdd1148
diff --git a/src/com/android/car/media/MediaActivity.java b/src/com/android/car/media/MediaActivity.java
index 8bb2434..cdda6d9 100644
--- a/src/com/android/car/media/MediaActivity.java
+++ b/src/com/android/car/media/MediaActivity.java
@@ -106,7 +106,7 @@
     private Intent mCurrentSourcePreferences;
     private boolean mCanShowMiniPlaybackControls;
     private boolean mShouldShowSoundSettings;
-
+    private boolean mBrowseTreeHasChildren;
     private PlaybackViewModel.PlaybackStateWrapper mCurrentPlaybackStateWrapper;
     /**
      * Media items to display as tabs. If null, it means we haven't finished loading them yet. If
@@ -270,9 +270,17 @@
                 if (Log.isLoggable(TAG, Log.INFO)) {
                     Log.i(TAG, "Loading browse tree...");
                 }
+                mBrowseTreeHasChildren = false;
                 updateTabs(null);
                 return;
             }
+            final boolean browseTreeHasChildren =
+                    futureData.getData() != null && !futureData.getData().isEmpty();
+            if (Log.isLoggable(TAG, Log.INFO)) {
+                Log.i(TAG, "Browse tree loaded, status (has children or not) changed: "
+                        + mBrowseTreeHasChildren + " -> " + browseTreeHasChildren);
+            }
+            mBrowseTreeHasChildren = browseTreeHasChildren;
             handlePlaybackState(playbackViewModel.getPlaybackStateWrapper().getValue(), false);
             updateTabs(futureData.getData() != null ? futureData.getData() : new ArrayList<>());
         });
@@ -380,7 +388,7 @@
 
         boolean isFatalError = false;
         if (!TextUtils.isEmpty(displayedMessage)) {
-            if (mTopItems != null) {
+            if (mBrowseTreeHasChildren) {
                 if (intent != null && !isUxRestricted()) {
                     showDialog(intent, displayedMessage, label, getString(android.R.string.cancel));
                 } else {
@@ -476,6 +484,7 @@
         mBrowseFragment.resetState();
         mSearchFragment.resetState();
 
+        mBrowseTreeHasChildren = false;
         mCurrentPlaybackStateWrapper = null;
         maybeCancelToast();
         maybeCancelDialog();