Merge "Refreshing visibility of QS elements whenever configuration changes" into sc-v2-dev am: 2907230d91 am: d14062c30f
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15674796 Change-Id: I20cff828c13a708d067d7d43a1143e00697e480f
This commit is contained in:
@@ -213,5 +213,13 @@ class FooterActionsController @Inject constructor(
|
||||
mView.setKeyguardShowing()
|
||||
}
|
||||
|
||||
fun refreshVisibility(shouldBeVisible: Boolean) {
|
||||
if (shouldBeVisible) {
|
||||
showFooter()
|
||||
} else {
|
||||
hideFooter()
|
||||
}
|
||||
}
|
||||
|
||||
private fun isTunerEnabled() = tunerService.isTunerEnabled
|
||||
}
|
||||
@@ -84,15 +84,15 @@ public abstract class QSPanelControllerBase<T extends QSPanel> extends ViewContr
|
||||
public void onConfigurationChange(Configuration newConfig) {
|
||||
mShouldUseSplitNotificationShade =
|
||||
Utils.shouldUseSplitNotificationShade(getResources());
|
||||
onConfigurationChanged();
|
||||
if (newConfig.orientation != mLastOrientation) {
|
||||
mLastOrientation = newConfig.orientation;
|
||||
onScreenRotated();
|
||||
switchTileLayout(false);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
protected void onScreenRotated() { }
|
||||
protected void onConfigurationChanged() { }
|
||||
|
||||
private final Function1<Boolean, Unit> mMediaHostVisibilityListener = (visible) -> {
|
||||
if (mMediaVisibilityChangedListener != null) {
|
||||
|
||||
@@ -81,7 +81,7 @@ public class QuickQSPanelController extends QSPanelControllerBase<QuickQSPanel>
|
||||
mMediaHost.init(MediaHierarchyManager.LOCATION_QQS);
|
||||
mBrightnessController.init(mShouldUseSplitNotificationShade);
|
||||
mFooterActionsController.init();
|
||||
refreshFooterVisibility();
|
||||
mFooterActionsController.refreshVisibility(mShouldUseSplitNotificationShade);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -109,14 +109,6 @@ public class QuickQSPanelController extends QSPanelControllerBase<QuickQSPanel>
|
||||
return mView.isListening();
|
||||
}
|
||||
|
||||
private void refreshFooterVisibility() {
|
||||
if (mShouldUseSplitNotificationShade) {
|
||||
mFooterActionsController.showFooter();
|
||||
} else {
|
||||
mFooterActionsController.hideFooter();
|
||||
}
|
||||
}
|
||||
|
||||
private void setMaxTiles(int parseNumTiles) {
|
||||
mView.setMaxTiles(parseNumTiles);
|
||||
setTiles();
|
||||
@@ -129,9 +121,9 @@ public class QuickQSPanelController extends QSPanelControllerBase<QuickQSPanel>
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onScreenRotated() {
|
||||
protected void onConfigurationChanged() {
|
||||
mBrightnessController.refreshVisibility(mShouldUseSplitNotificationShade);
|
||||
refreshFooterVisibility();
|
||||
mFooterActionsController.refreshVisibility(mShouldUseSplitNotificationShade);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
package com.android.systemui.qs
|
||||
|
||||
import android.content.res.Configuration
|
||||
import android.test.suitebuilder.annotation.SmallTest
|
||||
import android.testing.AndroidTestingRunner
|
||||
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.qs.customize.QSCustomizerController
|
||||
import com.android.systemui.qs.logging.QSLogger
|
||||
import com.android.systemui.flags.FeatureFlags
|
||||
import org.junit.After
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.mockito.ArgumentCaptor
|
||||
import org.mockito.ArgumentMatchers.anyBoolean
|
||||
import org.mockito.Captor
|
||||
import org.mockito.Mock
|
||||
import org.mockito.Mockito.`when`
|
||||
import org.mockito.Mockito.any
|
||||
@@ -65,11 +67,11 @@ class QuickQSPanelControllerTest : SysuiTestCase() {
|
||||
@Mock
|
||||
private lateinit var tileView: QSTileView
|
||||
@Mock
|
||||
private lateinit var featureFlags: FeatureFlags
|
||||
@Mock
|
||||
private lateinit var quickQsBrightnessController: QuickQSBrightnessController
|
||||
@Mock
|
||||
private lateinit var footerActionsController: FooterActionsController
|
||||
@Captor
|
||||
private lateinit var captor: ArgumentCaptor<QSPanel.OnConfigurationChangedListener>
|
||||
|
||||
private lateinit var controller: QuickQSPanelController
|
||||
|
||||
@@ -78,6 +80,7 @@ class QuickQSPanelControllerTest : SysuiTestCase() {
|
||||
MockitoAnnotations.initMocks(this)
|
||||
|
||||
`when`(quickQSPanel.tileLayout).thenReturn(tileLayout)
|
||||
`when`(quickQSPanel.isAttachedToWindow).thenReturn(true)
|
||||
`when`(quickQSPanel.dumpableTag).thenReturn("")
|
||||
`when`(quickQSPanel.resources).thenReturn(mContext.resources)
|
||||
`when`(qsTileHost.createTileView(any(), any(), anyBoolean())).thenReturn(tileView)
|
||||
@@ -123,4 +126,16 @@ class QuickQSPanelControllerTest : SysuiTestCase() {
|
||||
|
||||
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())
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user