diff options
| author | 2022-02-23 18:35:31 +0100 | |
|---|---|---|
| committer | 2022-02-23 19:41:57 +0100 | |
| commit | f0733a2530d4260f3552bf57670510a5e37bb503 (patch) | |
| tree | 2238d380a4aa5016dea4f714554fda3439da7cc7 | |
| parent | 6bc26a037445e92b14d277f281f9783457305e8c (diff) | |
Split shade: make sure media expanded is expanded on QS when the new
layout is available.
Fixes: 221076838
Test: QSPanelControllerTest + Manually on device
Change-Id: Idb4b44a9b9a50e295c9e576c8323cb279895c7c1
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/qs/QSPanelController.java | 16 | ||||
| -rw-r--r-- | packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelControllerTest.kt | 136 |
2 files changed, 150 insertions, 2 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSPanelController.java b/packages/SystemUI/src/com/android/systemui/qs/QSPanelController.java index 983412968e7d..00142799c541 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSPanelController.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSPanelController.java @@ -33,8 +33,10 @@ import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.systemui.dump.DumpManager; import com.android.systemui.flags.FeatureFlags; import com.android.systemui.flags.Flags; +import com.android.systemui.media.MediaFlags; import com.android.systemui.media.MediaHierarchyManager; import com.android.systemui.media.MediaHost; +import com.android.systemui.media.MediaHostState; import com.android.systemui.plugins.FalsingManager; import com.android.systemui.qs.customize.QSCustomizerController; import com.android.systemui.qs.dagger.QSScope; @@ -63,6 +65,7 @@ public class QSPanelController extends QSPanelControllerBase<QSPanel> { private final FalsingManager mFalsingManager; private final BrightnessController mBrightnessController; private final BrightnessSliderController mBrightnessSliderController; + private final MediaFlags mMediaFlags; private final BrightnessMirrorHandler mBrightnessMirrorHandler; private final FeatureFlags mFeatureFlags; @@ -102,7 +105,8 @@ public class QSPanelController extends QSPanelControllerBase<QSPanel> { DumpManager dumpManager, MetricsLogger metricsLogger, UiEventLogger uiEventLogger, QSLogger qsLogger, BrightnessController.Factory brightnessControllerFactory, BrightnessSliderController.Factory brightnessSliderFactory, - FalsingManager falsingManager, FeatureFlags featureFlags) { + FalsingManager falsingManager, FeatureFlags featureFlags, + MediaFlags mediaFlags) { super(view, qstileHost, qsCustomizerController, usingMediaPlayer, mediaHost, metricsLogger, uiEventLogger, qsLogger, dumpManager); mQSFgsManagerFooter = qsFgsManagerFooter; @@ -113,6 +117,7 @@ public class QSPanelController extends QSPanelControllerBase<QSPanel> { mFalsingManager = falsingManager; mBrightnessSliderController = brightnessSliderFactory.create(getContext(), mView); + mMediaFlags = mediaFlags; mView.setBrightnessView(mBrightnessSliderController.getRootView()); mBrightnessController = brightnessControllerFactory.create(mBrightnessSliderController); @@ -133,7 +138,14 @@ public class QSPanelController extends QSPanelControllerBase<QSPanel> { } private void updateMediaExpansion() { - mMediaHost.setExpansion(Utils.shouldUseSplitNotificationShade(getResources()) ? 0 : 1); + boolean inSplitShade = Utils.shouldUseSplitNotificationShade(getResources()); + float expansion; + if (inSplitShade && !mMediaFlags.useMediaSessionLayout()) { + expansion = MediaHostState.COLLAPSED; + } else { + expansion = MediaHostState.EXPANDED; + } + mMediaHost.setExpansion(expansion); } @Override diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelControllerTest.kt new file mode 100644 index 000000000000..ac1e86f58f86 --- /dev/null +++ b/packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelControllerTest.kt @@ -0,0 +1,136 @@ +package com.android.systemui.qs + +import android.test.suitebuilder.annotation.SmallTest +import android.testing.AndroidTestingRunner +import com.android.internal.logging.MetricsLogger +import com.android.internal.logging.UiEventLogger +import com.android.systemui.R +import com.android.systemui.SysuiTestCase +import com.android.systemui.dump.DumpManager +import com.android.systemui.flags.FeatureFlags +import com.android.systemui.media.MediaFlags +import com.android.systemui.media.MediaHost +import com.android.systemui.media.MediaHostState +import com.android.systemui.plugins.FalsingManager +import com.android.systemui.qs.customize.QSCustomizerController +import com.android.systemui.qs.logging.QSLogger +import com.android.systemui.settings.brightness.BrightnessController +import com.android.systemui.settings.brightness.BrightnessSliderController +import com.android.systemui.tuner.TunerService +import org.junit.After +import org.junit.Before +import org.junit.Test +import org.junit.runner.RunWith +import org.mockito.Mock +import org.mockito.Mockito.any +import org.mockito.Mockito.reset +import org.mockito.Mockito.verify +import org.mockito.Mockito.`when` as whenever +import org.mockito.MockitoAnnotations + +@SmallTest +@RunWith(AndroidTestingRunner::class) +class QSPanelControllerTest : SysuiTestCase() { + + @Mock private lateinit var qsPanel: QSPanel + @Mock private lateinit var qsFgsManagerFooter: QSFgsManagerFooter + @Mock private lateinit var qsSecurityFooter: QSSecurityFooter + @Mock private lateinit var tunerService: TunerService + @Mock private lateinit var qsTileHost: QSTileHost + @Mock private lateinit var qsCustomizerController: QSCustomizerController + @Mock private lateinit var qsTileRevealControllerFactory: QSTileRevealController.Factory + @Mock private lateinit var dumpManager: DumpManager + @Mock private lateinit var metricsLogger: MetricsLogger + @Mock private lateinit var uiEventLogger: UiEventLogger + @Mock private lateinit var qsLogger: QSLogger + @Mock private lateinit var brightnessControllerFactory: BrightnessController.Factory + @Mock private lateinit var brightnessController: BrightnessController + @Mock private lateinit var brightnessSlider: BrightnessSliderController + @Mock private lateinit var brightnessSliderFactory: BrightnessSliderController.Factory + @Mock private lateinit var falsingManager: FalsingManager + @Mock private lateinit var featureFlags: FeatureFlags + @Mock private lateinit var mediaFlags: MediaFlags + @Mock private lateinit var mediaHost: MediaHost + + private lateinit var controller: QSPanelController + + @Before + fun setUp() { + MockitoAnnotations.initMocks(this) + + whenever(brightnessSliderFactory.create(any(), any())).thenReturn(brightnessSlider) + whenever(brightnessControllerFactory.create(any())).thenReturn(brightnessController) + whenever(qsPanel.resources).thenReturn(mContext.orCreateTestableResources.resources) + + controller = QSPanelController( + qsPanel, + qsFgsManagerFooter, + qsSecurityFooter, + tunerService, + qsTileHost, + qsCustomizerController, + /* usingMediaPlayer= */ true, + mediaHost, + qsTileRevealControllerFactory, + dumpManager, + metricsLogger, + uiEventLogger, + qsLogger, + brightnessControllerFactory, + brightnessSliderFactory, + falsingManager, + featureFlags, + mediaFlags + ) + } + + @After + fun tearDown() { + reset(mediaHost) + } + + @Test + fun onInit_notSplitShade_newMediaLayoutAvailable_setsMediaAsExpanded() { + setSplitShadeEnabled(false) + whenever(mediaFlags.useMediaSessionLayout()).thenReturn(true) + + controller.onInit() + + verify(mediaHost).expansion = MediaHostState.EXPANDED + } + + @Test + fun onInit_notSplitShade_newMediaLayoutNotAvailable_setsMediaAsExpanded() { + setSplitShadeEnabled(false) + whenever(mediaFlags.useMediaSessionLayout()).thenReturn(false) + + controller.onInit() + + verify(mediaHost).expansion = MediaHostState.EXPANDED + } + + @Test + fun onInit_inSplitShade_newMediaLayoutAvailable_setsMediaAsExpanded() { + setSplitShadeEnabled(true) + whenever(mediaFlags.useMediaSessionLayout()).thenReturn(true) + + controller.onInit() + + verify(mediaHost).expansion = MediaHostState.EXPANDED + } + + @Test + fun onInit_inSplitShade_newMediaLayoutNotAvailable_setsMediaAsCollapsed() { + setSplitShadeEnabled(true) + whenever(mediaFlags.useMediaSessionLayout()).thenReturn(false) + + controller.onInit() + + verify(mediaHost).expansion = MediaHostState.COLLAPSED + } + + private fun setSplitShadeEnabled(enabled: Boolean) { + mContext.orCreateTestableResources + .addOverride(R.bool.config_use_split_notification_shade, enabled) + } +} |