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

Commit b19618ad 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

parents 435a5bc7 102c1454
Loading
Loading
Loading
Loading
+27 −1
Original line number Original line 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 {
    private val configListener = object : ConfigurationController.ConfigurationListener {
        override fun onDensityOrFontScaleChanged() {
        override fun onDensityOrFontScaleChanged() {
            // System font changes should only happen when UMO is offscreen or a flicker may occur
            // System font changes should only happen when UMO is offscreen or a flicker may occur
+4 −2
Original line number Original line Diff line number Diff line
@@ -28,6 +28,7 @@ import android.view.View;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.UiEventLogger;
import com.android.internal.logging.UiEventLogger;
import com.android.systemui.dump.DumpManager;
import com.android.systemui.dump.DumpManager;
import com.android.systemui.media.MediaCarouselController;
import com.android.systemui.media.MediaHierarchyManager;
import com.android.systemui.media.MediaHierarchyManager;
import com.android.systemui.media.MediaHost;
import com.android.systemui.media.MediaHost;
import com.android.systemui.media.MediaHostState;
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_USING_MEDIA_PLAYER) boolean usingMediaPlayer,
            @Named(QS_PANEL) MediaHost mediaHost,
            @Named(QS_PANEL) MediaHost mediaHost,
            QSTileRevealController.Factory qsTileRevealControllerFactory,
            QSTileRevealController.Factory qsTileRevealControllerFactory,
            DumpManager dumpManager, MetricsLogger metricsLogger, UiEventLogger uiEventLogger,
            DumpManager dumpManager, MediaCarouselController mediaCarouselController,
            MetricsLogger metricsLogger, UiEventLogger uiEventLogger,
            QSLogger qsLogger, BrightnessController.Factory brightnessControllerFactory,
            QSLogger qsLogger, BrightnessController.Factory brightnessControllerFactory,
            BrightnessSliderController.Factory brightnessSliderFactory,
            BrightnessSliderController.Factory brightnessSliderFactory,
            FalsingManager falsingManager,
            FalsingManager falsingManager,
            StatusBarKeyguardViewManager statusBarKeyguardViewManager) {
            StatusBarKeyguardViewManager statusBarKeyguardViewManager) {
        super(view, qstileHost, qsCustomizerController, usingMediaPlayer, mediaHost,
        super(view, qstileHost, qsCustomizerController, usingMediaPlayer, mediaHost,
                metricsLogger, uiEventLogger, qsLogger, dumpManager);
                metricsLogger, uiEventLogger, qsLogger, dumpManager, mediaCarouselController);
        mTunerService = tunerService;
        mTunerService = tunerService;
        mQsCustomizerController = qsCustomizerController;
        mQsCustomizerController = qsCustomizerController;
        mQsTileRevealControllerFactory = qsTileRevealControllerFactory;
        mQsTileRevealControllerFactory = qsTileRevealControllerFactory;
+6 −1
Original line number Original line Diff line number Diff line
@@ -31,6 +31,7 @@ import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.UiEventLogger;
import com.android.internal.logging.UiEventLogger;
import com.android.systemui.Dumpable;
import com.android.systemui.Dumpable;
import com.android.systemui.dump.DumpManager;
import com.android.systemui.dump.DumpManager;
import com.android.systemui.media.MediaCarouselController;
import com.android.systemui.media.MediaHost;
import com.android.systemui.media.MediaHost;
import com.android.systemui.plugins.qs.QSTile;
import com.android.systemui.plugins.qs.QSTile;
import com.android.systemui.plugins.qs.QSTileView;
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 UiEventLogger mUiEventLogger;
    private final QSLogger mQSLogger;
    private final QSLogger mQSLogger;
    private final DumpManager mDumpManager;
    private final DumpManager mDumpManager;
    private final MediaCarouselController mMediaCarouselController;
    protected final ArrayList<TileRecord> mRecords = new ArrayList<>();
    protected final ArrayList<TileRecord> mRecords = new ArrayList<>();
    protected boolean mShouldUseSplitNotificationShade;
    protected boolean mShouldUseSplitNotificationShade;


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


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


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


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


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


private val DATA = MediaTestUtils.emptyMediaData
private val DATA = MediaTestUtils.emptyMediaData


@@ -64,6 +67,10 @@ class MediaCarouselControllerTest : SysuiTestCase() {
    @Mock lateinit var dumpManager: DumpManager
    @Mock lateinit var dumpManager: DumpManager
    @Mock lateinit var logger: MediaUiEventLogger
    @Mock lateinit var logger: MediaUiEventLogger
    @Mock lateinit var debugLogger: MediaCarouselControllerLogger
    @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 val clock = FakeSystemClock()
    private lateinit var mediaCarouselController: MediaCarouselController
    private lateinit var mediaCarouselController: MediaCarouselController
@@ -258,4 +265,44 @@ class MediaCarouselControllerTest : SysuiTestCase() {


        verify(logger).logRecommendationRemoved(eq(packageName), eq(instanceId!!))
        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