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