From 0dadde727f2aa9bd7e45770624e356a757662a94 Mon Sep 17 00:00:00 2001 From: Robert Snoeberger Date: Mon, 6 Apr 2020 23:35:54 -0400 Subject: [PATCH] Check if QQS shows player when updating height The media session attached to the player may have changed since the last time the QQS layout was switched. So, check if the QuickQSPanel is showing a player when deciding how to update the height. Don't check the state of the media session. Fixes: 149503712 Test: play podcast, pause and dismiss app. Go to lock screen and swipe down to see QuickQS. Verify that the panel is appropriately sized. Change-Id: I1d6252a1ea09d6938fe1b5da6a4bee05b2ebc30c --- .../src/com/android/systemui/qs/QuickQSPanel.java | 15 +++++++++------ .../android/systemui/qs/QuickStatusBarHeader.java | 2 +- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/qs/QuickQSPanel.java b/packages/SystemUI/src/com/android/systemui/qs/QuickQSPanel.java index 8fa64d3aaf0c1..e6876bd98d218 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QuickQSPanel.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QuickQSPanel.java @@ -66,7 +66,10 @@ public class QuickQSPanel extends QSPanel { private int mMaxTiles; protected QSPanel mFullPanel; private QuickQSMediaPlayer mMediaPlayer; + /** Whether or not the QS media player feature is enabled. */ private boolean mUsingMediaPlayer; + /** Whether or not the QuickQSPanel currently contains a media player. */ + private boolean mHasMediaPlayer; private LinearLayout mHorizontalLinearLayout; // Only used with media @@ -185,8 +188,8 @@ public class QuickQSPanel extends QSPanel { boolean switchTileLayout() { if (!mUsingMediaPlayer) return false; - if (mMediaPlayer.hasMediaSession() - && mHorizontalLinearLayout.getVisibility() == View.GONE) { + mHasMediaPlayer = mMediaPlayer.hasMediaSession(); + if (mHasMediaPlayer && mHorizontalLinearLayout.getVisibility() == View.GONE) { mHorizontalLinearLayout.setVisibility(View.VISIBLE); ((View) mRegularTileLayout).setVisibility(View.GONE); mTileLayout.setListening(false); @@ -198,8 +201,7 @@ public class QuickQSPanel extends QSPanel { if (mHost != null) setTiles(mHost.getTiles()); mTileLayout.setListening(mListening); return true; - } else if (!mMediaPlayer.hasMediaSession() - && mHorizontalLinearLayout.getVisibility() == View.VISIBLE) { + } else if (!mHasMediaPlayer && mHorizontalLinearLayout.getVisibility() == View.VISIBLE) { mHorizontalLinearLayout.setVisibility(View.GONE); ((View) mRegularTileLayout).setVisibility(View.VISIBLE); mTileLayout.setListening(false); @@ -215,8 +217,9 @@ public class QuickQSPanel extends QSPanel { return false; } - public boolean hasMediaPlayerSession() { - return mMediaPlayer.hasMediaSession(); + /** Returns true if this panel currently contains a media player. */ + public boolean hasMediaPlayer() { + return mHasMediaPlayer; } @Override diff --git a/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java b/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java index 11b625f417374..e1ffad4df2c30 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java @@ -344,7 +344,7 @@ public class QuickStatusBarHeader extends RelativeLayout implements if (mQsDisabled) { lp.height = resources.getDimensionPixelSize( com.android.internal.R.dimen.quick_qs_offset_height); - } else if (useQsMediaPlayer(mContext) && mHeaderQsPanel.hasMediaPlayerSession()) { + } else if (useQsMediaPlayer(mContext) && mHeaderQsPanel.hasMediaPlayer()) { lp.height = Math.max(getMinimumHeight(), resources.getDimensionPixelSize( com.android.internal.R.dimen.quick_qs_total_height_with_media));