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

Commit e5a0aef7 authored by Sherry Zhou's avatar Sherry Zhou Committed by Automerger Merge Worker
Browse files

Merge "Make UMO squishy in split shade" into tm-qpr-dev am: 102c1454 am: b19618ad

parents d64f7fff b19618ad
Loading
Loading
Loading
Loading
+27 −1
Original line number Diff line number Diff line
@@ -148,6 +148,32 @@ class MediaCarouselController @Inject constructor(
                }
            }
        }

    companion object {
        private const val SQUISHINESS_SCALE_START = 0.5
        private const val SQUISHINESS_SCALE_FACTOR = 0.5
        private fun getSquishinessScale(squishinessFraction: Float): Double {
            return SQUISHINESS_SCALE_START + SQUISHINESS_SCALE_FACTOR * squishinessFraction
        }
    }

    var squishinessFraction: Float = 1f
        set(value) {
            if (field == value) {
                return
            }
            field = value

            val scale = getSquishinessScale(field)
            for (mediaPlayer in MediaPlayerData.players()) {
                mediaPlayer.mediaViewHolder?.let {
                    it.player.bottom = it.player.top + (scale * it.player.measuredHeight).toInt()
                } ?: mediaPlayer.recommendationViewHolder?.let {
                    it.recommendations.bottom = it.recommendations.top +
                            (scale * it.recommendations.measuredHeight).toInt()
                }
            }
        }
    private val configListener = object : ConfigurationController.ConfigurationListener {
        override fun onDensityOrFontScaleChanged() {
            // System font changes should only happen when UMO is offscreen or a flicker may occur
+4 −2
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@ import android.view.View;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.UiEventLogger;
import com.android.systemui.dump.DumpManager;
import com.android.systemui.media.MediaCarouselController;
import com.android.systemui.media.MediaHierarchyManager;
import com.android.systemui.media.MediaHost;
import com.android.systemui.media.MediaHostState;
@@ -87,13 +88,14 @@ public class QSPanelController extends QSPanelControllerBase<QSPanel> {
            @Named(QS_USING_MEDIA_PLAYER) boolean usingMediaPlayer,
            @Named(QS_PANEL) MediaHost mediaHost,
            QSTileRevealController.Factory qsTileRevealControllerFactory,
            DumpManager dumpManager, MetricsLogger metricsLogger, UiEventLogger uiEventLogger,
            DumpManager dumpManager, MediaCarouselController mediaCarouselController,
            MetricsLogger metricsLogger, UiEventLogger uiEventLogger,
            QSLogger qsLogger, BrightnessController.Factory brightnessControllerFactory,
            BrightnessSliderController.Factory brightnessSliderFactory,
            FalsingManager falsingManager,
            StatusBarKeyguardViewManager statusBarKeyguardViewManager) {
        super(view, qstileHost, qsCustomizerController, usingMediaPlayer, mediaHost,
                metricsLogger, uiEventLogger, qsLogger, dumpManager);
                metricsLogger, uiEventLogger, qsLogger, dumpManager, mediaCarouselController);
        mTunerService = tunerService;
        mQsCustomizerController = qsCustomizerController;
        mQsTileRevealControllerFactory = qsTileRevealControllerFactory;
+6 −1
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@ import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.UiEventLogger;
import com.android.systemui.Dumpable;
import com.android.systemui.dump.DumpManager;
import com.android.systemui.media.MediaCarouselController;
import com.android.systemui.media.MediaHost;
import com.android.systemui.plugins.qs.QSTile;
import com.android.systemui.plugins.qs.QSTileView;
@@ -68,6 +69,7 @@ public abstract class QSPanelControllerBase<T extends QSPanel> extends ViewContr
    private final UiEventLogger mUiEventLogger;
    private final QSLogger mQSLogger;
    private final DumpManager mDumpManager;
    private final MediaCarouselController mMediaCarouselController;
    protected final ArrayList<TileRecord> mRecords = new ArrayList<>();
    protected boolean mShouldUseSplitNotificationShade;

@@ -122,7 +124,8 @@ public abstract class QSPanelControllerBase<T extends QSPanel> extends ViewContr
            MetricsLogger metricsLogger,
            UiEventLogger uiEventLogger,
            QSLogger qsLogger,
            DumpManager dumpManager
            DumpManager dumpManager,
            MediaCarouselController mediaCarouselController
    ) {
        super(view);
        mHost = host;
@@ -135,6 +138,7 @@ public abstract class QSPanelControllerBase<T extends QSPanel> extends ViewContr
        mDumpManager = dumpManager;
        mShouldUseSplitNotificationShade =
                LargeScreenUtils.shouldUseSplitNotificationShade(getResources());
        mMediaCarouselController = mediaCarouselController;
    }

    @Override
@@ -152,6 +156,7 @@ public abstract class QSPanelControllerBase<T extends QSPanel> extends ViewContr

    public void setSquishinessFraction(float squishinessFraction) {
        mView.setSquishinessFraction(squishinessFraction);
        mMediaCarouselController.setSquishinessFraction(squishinessFraction);
    }

    @Override
+3 −2
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.UiEventLogger;
import com.android.systemui.R;
import com.android.systemui.dump.DumpManager;
import com.android.systemui.media.MediaCarouselController;
import com.android.systemui.media.MediaHierarchyManager;
import com.android.systemui.media.MediaHost;
import com.android.systemui.plugins.qs.QSTile;
@@ -63,10 +64,10 @@ public class QuickQSPanelController extends QSPanelControllerBase<QuickQSPanel>
            @Named(QS_USING_COLLAPSED_LANDSCAPE_MEDIA)
                    Provider<Boolean> usingCollapsedLandscapeMediaProvider,
            MetricsLogger metricsLogger, UiEventLogger uiEventLogger, QSLogger qsLogger,
            DumpManager dumpManager
            DumpManager dumpManager, MediaCarouselController mediaCarouselController
    ) {
        super(view, qsTileHost, qsCustomizerController, usingMediaPlayer, mediaHost, metricsLogger,
                uiEventLogger, qsLogger, dumpManager);
                uiEventLogger, qsLogger, dumpManager, mediaCarouselController);
        mUsingCollapsedLandscapeMediaProvider = usingCollapsedLandscapeMediaProvider;
    }

+49 −2
Original line number Diff line number Diff line
@@ -28,9 +28,11 @@ import com.android.systemui.plugins.ActivityStarter
import com.android.systemui.plugins.FalsingManager
import com.android.systemui.statusbar.notification.collection.provider.VisualStabilityProvider
import com.android.systemui.statusbar.policy.ConfigurationController
import com.android.systemui.util.animation.TransitionLayout
import com.android.systemui.util.concurrency.DelayableExecutor
import com.android.systemui.util.mockito.eq
import com.android.systemui.util.time.FakeSystemClock
import javax.inject.Provider
import junit.framework.Assert.assertEquals
import junit.framework.Assert.assertTrue
import org.junit.Before
@@ -38,8 +40,9 @@ import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.Mock
import org.mockito.Mockito.verify
import org.mockito.Mockito.verifyNoMoreInteractions
import org.mockito.Mockito.`when` as whenever
import org.mockito.MockitoAnnotations
import javax.inject.Provider

private val DATA = MediaTestUtils.emptyMediaData

@@ -64,6 +67,10 @@ class MediaCarouselControllerTest : SysuiTestCase() {
    @Mock lateinit var dumpManager: DumpManager
    @Mock lateinit var logger: MediaUiEventLogger
    @Mock lateinit var debugLogger: MediaCarouselControllerLogger
    @Mock lateinit var mediaViewHolder: MediaViewHolder
    @Mock lateinit var player: TransitionLayout
    @Mock lateinit var recommendationViewHolder: RecommendationViewHolder
    @Mock lateinit var recommendations: TransitionLayout

    private val clock = FakeSystemClock()
    private lateinit var mediaCarouselController: MediaCarouselController
@@ -258,4 +265,44 @@ class MediaCarouselControllerTest : SysuiTestCase() {

        verify(logger).logRecommendationRemoved(eq(packageName), eq(instanceId!!))
    }

    @Test
    fun testSetSquishinessFractionForMedia_setPlayerBottom() {
        whenever(panel.mediaViewHolder).thenReturn(mediaViewHolder)
        whenever(mediaViewHolder.player).thenReturn(player)
        whenever(player.measuredHeight).thenReturn(100)

        val playingLocal = Triple("playing local",
                DATA.copy(active = true, isPlaying = true,
                        playbackLocation = MediaData.PLAYBACK_LOCAL, resumption = false),
                4500L)
        MediaPlayerData.addMediaPlayer(playingLocal.first, playingLocal.second, panel, clock,
                false, debugLogger)

        mediaCarouselController.squishinessFraction = 0.0f
        verify(player).bottom = 50
        verifyNoMoreInteractions(recommendationViewHolder)

        mediaCarouselController.squishinessFraction = 0.5f
        verify(player).bottom = 75
        verifyNoMoreInteractions(recommendationViewHolder)
    }

    @Test
    fun testSetSquishinessFractionForRecommendation_setPlayerBottom() {
        whenever(panel.recommendationViewHolder).thenReturn(recommendationViewHolder)
        whenever(recommendationViewHolder.recommendations).thenReturn(recommendations)
        whenever(recommendations.measuredHeight).thenReturn(100)

        MediaPlayerData.addMediaRecommendation(SMARTSPACE_KEY, EMPTY_SMARTSPACE_MEDIA_DATA, panel,
                false, clock)

        mediaCarouselController.squishinessFraction = 0.0f
        verifyNoMoreInteractions(mediaViewHolder)
        verify(recommendationViewHolder.recommendations).bottom = 50

        mediaCarouselController.squishinessFraction = 0.5f
        verifyNoMoreInteractions(mediaViewHolder)
        verify(recommendationViewHolder.recommendations).bottom = 75
    }
}
Loading