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
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user