diff options
4 files changed, 43 insertions, 34 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 83f95eaf4cda..e9633f49f76d 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/QSPanelControllerBaseTest.java +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/QSPanelControllerBaseTest.java @@ -21,9 +21,6 @@ import static com.android.systemui.flags.SceneContainerFlagParameterizationKt.pa import static com.google.common.truth.Truth.assertThat; -import static kotlinx.coroutines.flow.FlowKt.asStateFlow; -import static kotlinx.coroutines.flow.StateFlowKt.MutableStateFlow; - import static org.junit.Assert.assertEquals; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyBoolean; @@ -39,6 +36,9 @@ import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +import static kotlinx.coroutines.flow.FlowKt.asStateFlow; +import static kotlinx.coroutines.flow.StateFlowKt.MutableStateFlow; + import android.content.res.Configuration; import android.content.res.Resources; import android.platform.test.annotations.DisableFlags; @@ -70,9 +70,6 @@ import com.android.systemui.scene.shared.flag.SceneContainerFlag; import com.android.systemui.statusbar.policy.ResourcesSplitShadeStateController; import com.android.systemui.util.animation.DisappearParameters; -import kotlinx.coroutines.flow.MutableStateFlow; -import kotlinx.coroutines.flow.StateFlow; - import org.junit.After; import org.junit.Before; import org.junit.Rule; @@ -88,6 +85,8 @@ import java.util.List; import javax.inject.Provider; +import kotlinx.coroutines.flow.MutableStateFlow; +import kotlinx.coroutines.flow.StateFlow; import platform.test.runner.parameterized.ParameterizedAndroidJunit4; import platform.test.runner.parameterized.Parameters; @@ -232,6 +231,7 @@ public class QSPanelControllerBaseTest extends SysuiTestCase { @After public void tearDown() { + mController.destroy(); disallowTestableLooperAsMainThread(); } diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/QSPanelControllerTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/QSPanelControllerTest.kt index 02c5b5ad214c..96f6a622e2f3 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/QSPanelControllerTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/QSPanelControllerTest.kt @@ -1,10 +1,10 @@ package com.android.systemui.qs import android.content.res.Configuration -import androidx.test.ext.junit.runners.AndroidJUnit4 -import androidx.test.filters.SmallTest import android.testing.TestableResources import android.view.ContextThemeWrapper +import androidx.test.ext.junit.runners.AndroidJUnit4 +import androidx.test.filters.SmallTest import com.android.internal.logging.MetricsLogger import com.android.internal.logging.UiEventLogger import com.android.systemui.SysuiTestCase @@ -37,8 +37,8 @@ import org.mockito.Mockito.any import org.mockito.Mockito.never import org.mockito.Mockito.reset import org.mockito.Mockito.verify -import org.mockito.MockitoAnnotations import org.mockito.Mockito.`when` as whenever +import org.mockito.MockitoAnnotations @SmallTest @RunWith(AndroidJUnit4::class) @@ -81,37 +81,39 @@ class QSPanelControllerTest : SysuiTestCase() { setShouldUseSplitShade(false) whenever(qsPanel.resources).thenReturn(testableResources.resources) whenever(qsPanel.context) - .thenReturn( ContextThemeWrapper(context, R.style.Theme_SystemUI_QuickSettings)) + .thenReturn(ContextThemeWrapper(context, R.style.Theme_SystemUI_QuickSettings)) whenever(qsPanel.getOrCreateTileLayout()).thenReturn(pagedTileLayout) whenever(statusBarKeyguardViewManager.isPrimaryBouncerInTransit()).thenReturn(false) whenever(qsPanel.setListening(anyBoolean())).then { whenever(qsPanel.isListening).thenReturn(it.getArgument(0)) } - controller = QSPanelController( - qsPanel, - tunerService, - qsHost, - qsCustomizerController, - /* usingMediaPlayer= */ usingMediaPlayer, - mediaHost, - qsTileRevealControllerFactory, - dumpManager, - metricsLogger, - uiEventLogger, - qsLogger, - brightnessControllerFactory, - brightnessSliderFactory, - falsingManager, - statusBarKeyguardViewManager, - ResourcesSplitShadeStateController(), - longPressEffectProvider, - mediaCarouselInteractor, - ) + controller = + QSPanelController( + qsPanel, + tunerService, + qsHost, + qsCustomizerController, + /* usingMediaPlayer= */ usingMediaPlayer, + mediaHost, + qsTileRevealControllerFactory, + dumpManager, + metricsLogger, + uiEventLogger, + qsLogger, + brightnessControllerFactory, + brightnessSliderFactory, + falsingManager, + statusBarKeyguardViewManager, + ResourcesSplitShadeStateController(), + longPressEffectProvider, + mediaCarouselInteractor, + ) } @After fun tearDown() { + controller.destroy() reset(mediaHost) } diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/QuickQSPanelControllerTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/QuickQSPanelControllerTest.kt index 369bb228494c..7880aceb53be 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/QuickQSPanelControllerTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/QuickQSPanelControllerTest.kt @@ -34,6 +34,7 @@ import com.android.systemui.qs.logging.QSLogger import com.android.systemui.res.R import com.android.systemui.statusbar.policy.ResourcesSplitShadeStateController import com.android.systemui.util.leak.RotationUtils +import javax.inject.Provider import org.junit.After import org.junit.Before import org.junit.Test @@ -45,9 +46,8 @@ import org.mockito.Mockito.any import org.mockito.Mockito.reset import org.mockito.Mockito.times import org.mockito.Mockito.verify -import org.mockito.MockitoAnnotations -import javax.inject.Provider import org.mockito.Mockito.`when` as whenever +import org.mockito.MockitoAnnotations @SmallTest @RunWith(AndroidJUnit4::class) @@ -108,6 +108,7 @@ class QuickQSPanelControllerTest : SysuiTestCase() { @After fun tearDown() { controller.onViewDetached() + controller.destroy() } @Test @@ -184,7 +185,7 @@ class QuickQSPanelControllerTest : SysuiTestCase() { dumpManager, ResourcesSplitShadeStateController(), longPressEffectProvider, - mediaCarouselInteractor + mediaCarouselInteractor, ) { private var rotation = RotationUtils.ROTATION_NONE diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSPanelControllerBase.java b/packages/SystemUI/src/com/android/systemui/qs/QSPanelControllerBase.java index 85bcc25e140c..afb852ae824c 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSPanelControllerBase.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSPanelControllerBase.java @@ -50,6 +50,7 @@ import com.android.systemui.util.kotlin.JavaAdapterKt; import kotlin.Unit; import kotlin.jvm.functions.Function1; +import kotlinx.coroutines.DisposableHandle; import kotlinx.coroutines.flow.StateFlow; import java.io.PrintWriter; @@ -107,6 +108,8 @@ public abstract class QSPanelControllerBase<T extends QSPanel> extends ViewContr setLayoutForMediaInScene(); }; + private DisposableHandle mJavaAdapterDisposableHandle; + private boolean mLastListening; @VisibleForTesting @@ -221,6 +224,9 @@ public abstract class QSPanelControllerBase<T extends QSPanel> extends ViewContr mView.removeTile(record); } mRecords.clear(); + if (mJavaAdapterDisposableHandle != null) { + mJavaAdapterDisposableHandle.dispose(); + } } @Override @@ -255,7 +261,7 @@ public abstract class QSPanelControllerBase<T extends QSPanel> extends ViewContr } private void registerForMediaInteractorChanges() { - JavaAdapterKt.collectFlow( + mJavaAdapterDisposableHandle = JavaAdapterKt.collectFlow( mView, getMediaVisibleFlow(), mMediaOrRecommendationVisibleConsumer |