diff options
| -rw-r--r-- | packages/SystemUI/multivalentTests/src/com/android/systemui/qs/QSPanelControllerBaseTest.java | 34 | ||||
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/qs/QSPanelControllerBase.java | 8 |
2 files changed, 42 insertions, 0 deletions
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/QSPanelControllerBaseTest.java b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/QSPanelControllerBaseTest.java index 225adab04ff0..527aeaac426d 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/QSPanelControllerBaseTest.java +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/QSPanelControllerBaseTest.java @@ -136,6 +136,8 @@ public class QSPanelControllerBaseTest extends SysuiTestCase { @Mock private ViewTreeObserver mViewTreeObserver; + private boolean mPagedTileLayoutListening = false; + private TestableLongPressEffectProvider mLongPressEffectProvider = new TestableLongPressEffectProvider(); @@ -213,6 +215,11 @@ public class QSPanelControllerBaseTest extends SysuiTestCase { return null; }).when(mQSPanel).setListening(anyBoolean()); + doAnswer(invocation -> { + mPagedTileLayoutListening = invocation.getArgument(0); + return null; + }).when(mPagedTileLayout).setListening(anyBoolean(), any()); + mController = new TestableQSPanelControllerBase(mQSPanel, mQSHost, mQSCustomizerController, mMediaHost, mMetricsLogger, mUiEventLogger, mQSLogger, mDumpManager); @@ -571,6 +578,33 @@ public class QSPanelControllerBaseTest extends SysuiTestCase { assertThat(mController.mRecords).isEmpty(); } + @Test + public void listening_dettach_reAttach_listeningSetAgain() { + mController.setListening(true); + + assertThat(mPagedTileLayoutListening).isTrue(); + + mController.onViewDetached(); + assertThat(mPagedTileLayoutListening).isFalse(); + + mController.onViewAttached(); + assertThat(mPagedTileLayoutListening).isTrue(); + } + + @Test + public void notListening_dettach_reAttach_stillNotListening() { + mController.setListening(false); + + assertThat(mPagedTileLayoutListening).isFalse(); + + mController.onViewDetached(); + assertThat(mPagedTileLayoutListening).isFalse(); + + mController.onViewAttached(); + assertThat(mPagedTileLayoutListening).isFalse(); + } + + private boolean usingMediaPlayer() { return !SceneContainerFlag.isEnabled(); } diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSPanelControllerBase.java b/packages/SystemUI/src/com/android/systemui/qs/QSPanelControllerBase.java index 13cedc2d2f3b..6cf5b32e469b 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSPanelControllerBase.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSPanelControllerBase.java @@ -107,6 +107,8 @@ public abstract class QSPanelControllerBase<T extends QSPanel> extends ViewContr setLayoutForMediaInScene(); }; + private boolean mLastListening; + @VisibleForTesting protected final QSPanel.OnConfigurationChangedListener mOnConfigurationChangedListener = new QSPanel.OnConfigurationChangedListener() { @@ -242,6 +244,8 @@ public abstract class QSPanelControllerBase<T extends QSPanel> extends ViewContr switchTileLayout(true); mDumpManager.registerDumpable(mView.getDumpableTag(), this); + + setListening(mLastListening); } private void registerForMediaInteractorChanges() { @@ -259,7 +263,10 @@ public abstract class QSPanelControllerBase<T extends QSPanel> extends ViewContr mQSLogger.logOnViewDetached(mLastOrientation, mView.getDumpableTag()); mView.removeOnConfigurationChangedListener(mOnConfigurationChangedListener); + // Call directly so mLastListening is not modified. We want that to have the last actual + // value. mView.getTileLayout().setListening(false, mUiEventLogger); + mView.setListening(false); mMediaHost.removeVisibilityChangeListener(mMediaHostVisibilityListener); @@ -436,6 +443,7 @@ public abstract class QSPanelControllerBase<T extends QSPanel> extends ViewContr } void setListening(boolean listening) { + mLastListening = listening; if (mView.isListening() == listening) return; mView.setListening(listening); |