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

Commit 102c1454 authored by Sherry Zhou's avatar Sherry Zhou Committed by Android (Google) Code Review
Browse files

Merge "Make UMO squishy in split shade" into tm-qpr-dev

parents 02410d42 9f4ec2cf
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