Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 99e033fd authored by Fabian Kozynski's avatar Fabian Kozynski Committed by Android (Google) Code Review
Browse files

Merge "Properly dispose of JavaAdapter collector" into main

parents 5cf2de7e 5081110e
Loading
Loading
Loading
Loading
+6 −6
Original line number Diff line number Diff line
@@ -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();
    }

+26 −24
Original line number Diff line number Diff line
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)
@@ -88,7 +88,8 @@ class QSPanelControllerTest : SysuiTestCase() {
            whenever(qsPanel.isListening).thenReturn(it.getArgument(0))
        }

        controller = QSPanelController(
        controller =
            QSPanelController(
                qsPanel,
                tunerService,
                qsHost,
@@ -112,6 +113,7 @@ class QSPanelControllerTest : SysuiTestCase() {

    @After
    fun tearDown() {
        controller.destroy()
        reset(mediaHost)
    }

+4 −3
Original line number Diff line number Diff line
@@ -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
+7 −1
Original line number Diff line number Diff line
@@ -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