summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Fabián Kozynski <kozynski@google.com> 2024-09-24 15:28:40 -0400
committer Fabián Kozynski <kozynski@google.com> 2024-09-24 15:28:40 -0400
commit79c8c820ad1e7fbd3eb1bf6d06ca3b44d40cd832 (patch)
tree3befaef47c322f6496b2bf5da29f2d2cff3a23ff
parent7aa881eb4b478d34423fff22713da16f2f790854 (diff)
Restore QSPanelControllerBase listening state
In flexiglass, when the views are detached we set the tile layout to be not listening. However, if we were listening before, we should still be listening after re-attaching. This makes sure that that is restored properly. Note that this applies to both QQS and QS (as they both use the same abstract controller class). Fixes: 366362115 Test: atest QSPanelControllerBaseTest Test: atest PlatformScenarioTest:AirplaneModeIconTest Flag: EXEMPT bugfix Change-Id: Ia67ab43b67bf7699eeaca7687d6a9a70078e01d3
-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);