From 92cd6093925e0954620962dbc8eb55a139af452d 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 Merged-In: Ic338a0c7772410bdb0964e4686ac0283947e657c (cherry picked from commit 09855a1123a48f31c17e390117fd62acc9b6a999) --- .../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 86ef85824eb0e..87aa06dfb6f48 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/logging/QSLogger.kt +++ b/packages/SystemUI/src/com/android/systemui/qs/logging/QSLogger.kt @@ -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"