Merge "Refreshing visibility of QS elements whenever configuration changes" into sc-v2-dev

This commit is contained in:
Michał Brzeziński
2021-08-26 08:36:26 +00:00
committed by Android (Google) Code Review
4 changed files with 31 additions and 16 deletions

View File

@@ -213,5 +213,13 @@ class FooterActionsController @Inject constructor(
mView.setKeyguardShowing() mView.setKeyguardShowing()
} }
fun refreshVisibility(shouldBeVisible: Boolean) {
if (shouldBeVisible) {
showFooter()
} else {
hideFooter()
}
}
private fun isTunerEnabled() = tunerService.isTunerEnabled private fun isTunerEnabled() = tunerService.isTunerEnabled
} }

View File

@@ -84,15 +84,15 @@ public abstract class QSPanelControllerBase<T extends QSPanel> extends ViewContr
public void onConfigurationChange(Configuration newConfig) { public void onConfigurationChange(Configuration newConfig) {
mShouldUseSplitNotificationShade = mShouldUseSplitNotificationShade =
Utils.shouldUseSplitNotificationShade(getResources()); Utils.shouldUseSplitNotificationShade(getResources());
onConfigurationChanged();
if (newConfig.orientation != mLastOrientation) { if (newConfig.orientation != mLastOrientation) {
mLastOrientation = newConfig.orientation; mLastOrientation = newConfig.orientation;
onScreenRotated();
switchTileLayout(false); switchTileLayout(false);
} }
} }
}; };
protected void onScreenRotated() { } protected void onConfigurationChanged() { }
private final Function1<Boolean, Unit> mMediaHostVisibilityListener = (visible) -> { private final Function1<Boolean, Unit> mMediaHostVisibilityListener = (visible) -> {
if (mMediaVisibilityChangedListener != null) { if (mMediaVisibilityChangedListener != null) {

View File

@@ -81,7 +81,7 @@ public class QuickQSPanelController extends QSPanelControllerBase<QuickQSPanel>
mMediaHost.init(MediaHierarchyManager.LOCATION_QQS); mMediaHost.init(MediaHierarchyManager.LOCATION_QQS);
mBrightnessController.init(mShouldUseSplitNotificationShade); mBrightnessController.init(mShouldUseSplitNotificationShade);
mFooterActionsController.init(); mFooterActionsController.init();
refreshFooterVisibility(); mFooterActionsController.refreshVisibility(mShouldUseSplitNotificationShade);
} }
@Override @Override
@@ -109,14 +109,6 @@ public class QuickQSPanelController extends QSPanelControllerBase<QuickQSPanel>
return mView.isListening(); return mView.isListening();
} }
private void refreshFooterVisibility() {
if (mShouldUseSplitNotificationShade) {
mFooterActionsController.showFooter();
} else {
mFooterActionsController.hideFooter();
}
}
private void setMaxTiles(int parseNumTiles) { private void setMaxTiles(int parseNumTiles) {
mView.setMaxTiles(parseNumTiles); mView.setMaxTiles(parseNumTiles);
setTiles(); setTiles();
@@ -129,9 +121,9 @@ public class QuickQSPanelController extends QSPanelControllerBase<QuickQSPanel>
} }
@Override @Override
protected void onScreenRotated() { protected void onConfigurationChanged() {
mBrightnessController.refreshVisibility(mShouldUseSplitNotificationShade); mBrightnessController.refreshVisibility(mShouldUseSplitNotificationShade);
refreshFooterVisibility(); mFooterActionsController.refreshVisibility(mShouldUseSplitNotificationShade);
} }
@Override @Override

View File

@@ -16,6 +16,7 @@
package com.android.systemui.qs package com.android.systemui.qs
import android.content.res.Configuration
import android.test.suitebuilder.annotation.SmallTest import android.test.suitebuilder.annotation.SmallTest
import android.testing.AndroidTestingRunner import android.testing.AndroidTestingRunner
import com.android.internal.logging.MetricsLogger import com.android.internal.logging.MetricsLogger
@@ -27,12 +28,13 @@ import com.android.systemui.plugins.qs.QSTile
import com.android.systemui.plugins.qs.QSTileView import com.android.systemui.plugins.qs.QSTileView
import com.android.systemui.qs.customize.QSCustomizerController import com.android.systemui.qs.customize.QSCustomizerController
import com.android.systemui.qs.logging.QSLogger import com.android.systemui.qs.logging.QSLogger
import com.android.systemui.flags.FeatureFlags
import org.junit.After import org.junit.After
import org.junit.Before import org.junit.Before
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith import org.junit.runner.RunWith
import org.mockito.ArgumentCaptor
import org.mockito.ArgumentMatchers.anyBoolean import org.mockito.ArgumentMatchers.anyBoolean
import org.mockito.Captor
import org.mockito.Mock import org.mockito.Mock
import org.mockito.Mockito.`when` import org.mockito.Mockito.`when`
import org.mockito.Mockito.any import org.mockito.Mockito.any
@@ -65,11 +67,11 @@ class QuickQSPanelControllerTest : SysuiTestCase() {
@Mock @Mock
private lateinit var tileView: QSTileView private lateinit var tileView: QSTileView
@Mock @Mock
private lateinit var featureFlags: FeatureFlags
@Mock
private lateinit var quickQsBrightnessController: QuickQSBrightnessController private lateinit var quickQsBrightnessController: QuickQSBrightnessController
@Mock @Mock
private lateinit var footerActionsController: FooterActionsController private lateinit var footerActionsController: FooterActionsController
@Captor
private lateinit var captor: ArgumentCaptor<QSPanel.OnConfigurationChangedListener>
private lateinit var controller: QuickQSPanelController private lateinit var controller: QuickQSPanelController
@@ -78,6 +80,7 @@ class QuickQSPanelControllerTest : SysuiTestCase() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.initMocks(this)
`when`(quickQSPanel.tileLayout).thenReturn(tileLayout) `when`(quickQSPanel.tileLayout).thenReturn(tileLayout)
`when`(quickQSPanel.isAttachedToWindow).thenReturn(true)
`when`(quickQSPanel.dumpableTag).thenReturn("") `when`(quickQSPanel.dumpableTag).thenReturn("")
`when`(quickQSPanel.resources).thenReturn(mContext.resources) `when`(quickQSPanel.resources).thenReturn(mContext.resources)
`when`(qsTileHost.createTileView(any(), any(), anyBoolean())).thenReturn(tileView) `when`(qsTileHost.createTileView(any(), any(), anyBoolean())).thenReturn(tileView)
@@ -123,4 +126,16 @@ class QuickQSPanelControllerTest : SysuiTestCase() {
verify(quickQSPanel, times(limit)).addTile(any()) verify(quickQSPanel, times(limit)).addTile(any())
} }
@Test
fun testBrightnessAndFooterVisibilityRefreshedWhenConfigurationChanged() {
// times(2) because both controller and base controller are registering their listeners
verify(quickQSPanel, times(2)).addOnConfigurationChangedListener(captor.capture())
captor.allValues.forEach { it.onConfigurationChange(Configuration.EMPTY) }
verify(quickQsBrightnessController).refreshVisibility(anyBoolean())
// times(2) because footer visibility is also refreshed on controller init
verify(footerActionsController, times(2)).refreshVisibility(anyBoolean())
}
} }