summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/QSPanelControllerBaseTest.java34
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/QSPanelControllerBase.java8
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);