From 09855a1123a48f31c17e390117fd62acc9b6a999 Mon Sep 17 00:00:00 2001 From: Beth Thibodeau Date: Fri, 29 Jul 2022 16:03:51 -0500 Subject: [PATCH] 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 --- .../src/com/android/systemui/qs/QSPanel.java | 5 ++ .../systemui/qs/QSPanelControllerBase.java | 6 +++ .../android/systemui/qs/logging/QSLogger.kt | 48 +++++++++++++++++++ 3 files changed, 59 insertions(+) diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java b/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java index 324c019590844..7155626a1aa1d 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java @@ -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); diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSPanelControllerBase.java b/packages/SystemUI/src/com/android/systemui/qs/QSPanelControllerBase.java index ec61ea6fffa82..6d5f844667e71 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSPanelControllerBase.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSPanelControllerBase.java @@ -88,6 +88,8 @@ public abstract class QSPanelControllerBase 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 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 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 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(); diff --git a/packages/SystemUI/src/com/android/systemui/qs/logging/QSLogger.kt b/packages/SystemUI/src/com/android/systemui/qs/logging/QSLogger.kt index ab795faf57e66..948fb14287808 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/logging/QSLogger.kt +++ b/packages/SystemUI/src/com/android/systemui/qs/logging/QSLogger.kt @@ -155,6 +155,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"