Initialize horizontal panel as GONE and add logs

The horizontal layout view should only be visible when the configuration
has changed to landscape, so it should be initialized as GONE normally.
Also add more logs to help debug if/when this layout changes.

Bug: 198319256
Test: manual, verify correct behavior when rotating

Change-Id: Ic338a0c7772410bdb0964e4686ac0283947e657c
Merged-In: Ic338a0c7772410bdb0964e4686ac0283947e657c
(cherry picked from commit 09855a1123)
This commit is contained in:
Beth Thibodeau
2022-07-29 16:03:51 -05:00
parent 945f5b8839
commit 92cd609392
3 changed files with 59 additions and 0 deletions

View File

@@ -128,6 +128,8 @@ public class QSPanel extends LinearLayout implements Tunable {
if (mUsingMediaPlayer) {
mHorizontalLinearLayout = new RemeasuringLinearLayout(mContext);
mHorizontalLinearLayout.setOrientation(LinearLayout.HORIZONTAL);
mHorizontalLinearLayout.setVisibility(
mUsingHorizontalLayout ? View.VISIBLE : View.GONE);
mHorizontalLinearLayout.setClipChildren(false);
mHorizontalLinearLayout.setClipToPadding(false);
@@ -445,6 +447,8 @@ public class QSPanel extends LinearLayout implements Tunable {
mMediaHostView = hostView;
ViewGroup newParent = horizontal ? mHorizontalLinearLayout : this;
ViewGroup currentParent = (ViewGroup) hostView.getParent();
Log.d(getDumpableTag(), "Reattaching media host: " + horizontal
+ ", current " + currentParent + ", new " + newParent);
if (currentParent != newParent) {
if (currentParent != null) {
currentParent.removeView(hostView);
@@ -589,6 +593,7 @@ public class QSPanel extends LinearLayout implements Tunable {
void setUsingHorizontalLayout(boolean horizontal, ViewGroup mediaHostView, boolean force) {
if (horizontal != mUsingHorizontalLayout || force) {
Log.d(getDumpableTag(), "setUsingHorizontalLayout: " + horizontal + ", " + force);
mUsingHorizontalLayout = horizontal;
ViewGroup newParent = horizontal ? mHorizontalContentContainer : this;
switchAllContentToParent(newParent, mTileLayout);

View File

@@ -88,6 +88,8 @@ public abstract class QSPanelControllerBase<T extends QSPanel> extends ViewContr
public void onConfigurationChange(Configuration newConfig) {
mShouldUseSplitNotificationShade =
LargeScreenUtils.shouldUseSplitNotificationShade(getResources());
mQSLogger.logOnConfigurationChanged(mLastOrientation, newConfig.orientation,
mView.getDumpableTag());
onConfigurationChanged();
if (newConfig.orientation != mLastOrientation) {
mLastOrientation = newConfig.orientation;
@@ -164,6 +166,7 @@ public abstract class QSPanelControllerBase<T extends QSPanel> extends ViewContr
mHost.addCallback(mQSHostCallback);
setTiles();
mLastOrientation = getResources().getConfiguration().orientation;
mQSLogger.logOnViewAttached(mLastOrientation, mView.getDumpableTag());
switchTileLayout(true);
mDumpManager.registerDumpable(mView.getDumpableTag(), this);
@@ -171,6 +174,7 @@ public abstract class QSPanelControllerBase<T extends QSPanel> extends ViewContr
@Override
protected void onViewDetached() {
mQSLogger.logOnViewDetached(mLastOrientation, mView.getDumpableTag());
mView.removeOnConfigurationChangedListener(mOnConfigurationChangedListener);
mHost.removeCallback(mQSHostCallback);
@@ -325,6 +329,8 @@ public abstract class QSPanelControllerBase<T extends QSPanel> extends ViewContr
/* Whether or not the panel currently contains a media player. */
boolean horizontal = shouldUseHorizontalLayout();
if (horizontal != mUsingHorizontalLayout || force) {
mQSLogger.logSwitchTileLayout(horizontal, mUsingHorizontalLayout, force,
mView.getDumpableTag());
mUsingHorizontalLayout = horizontal;
mView.setUsingHorizontalLayout(mUsingHorizontalLayout, mMediaHost.getHostView(), force);
updateMediaDisappearParameters();

View File

@@ -128,6 +128,54 @@ class QSLogger @Inject constructor(
})
}
fun logOnViewAttached(orientation: Int, containerName: String) {
log(DEBUG, {
str1 = containerName
int1 = orientation
}, {
"onViewAttached: $str1 orientation $int1"
})
}
fun logOnViewDetached(orientation: Int, containerName: String) {
log(DEBUG, {
str1 = containerName
int1 = orientation
}, {
"onViewDetached: $str1 orientation $int1"
})
}
fun logOnConfigurationChanged(
lastOrientation: Int,
newOrientation: Int,
containerName: String
) {
log(DEBUG, {
str1 = containerName
int1 = lastOrientation
int2 = newOrientation
}, {
"configuration change: $str1 orientation was $int1, now $int2"
})
}
fun logSwitchTileLayout(
after: Boolean,
before: Boolean,
force: Boolean,
containerName: String
) {
log(DEBUG, {
str1 = containerName
bool1 = after
bool2 = before
bool3 = force
}, {
"change tile layout: $str1 horizontal=$bool1 (was $bool2), force? $bool3"
})
}
private fun toStateString(state: Int): String {
return when (state) {
Tile.STATE_ACTIVE -> "active"