summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Christian Göllner <chrisgollner@google.com> 2022-02-23 18:35:31 +0100
committer Christian Göllner <chrisgollner@google.com> 2022-02-23 19:41:57 +0100
commitf0733a2530d4260f3552bf57670510a5e37bb503 (patch)
tree2238d380a4aa5016dea4f714554fda3439da7cc7
parent6bc26a037445e92b14d277f281f9783457305e8c (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.java16
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelControllerTest.kt136
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)
+ }
+}