Merge "Optimistic fix for tile not getting redistributed in split shade" into tm-qpr-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
8d6cb6583f
@@ -741,6 +741,14 @@ public class PagedTileLayout extends ViewPager implements QSTileLayout {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Force all tiles to be redistributed across pages.
|
||||||
|
* Should be called when one of the following changes: rows, columns, number of tiles.
|
||||||
|
*/
|
||||||
|
public void forceTilesRedistribution() {
|
||||||
|
mDistributeTiles = true;
|
||||||
|
}
|
||||||
|
|
||||||
public interface PageListener {
|
public interface PageListener {
|
||||||
int INVALID_PAGE = -1;
|
int INVALID_PAGE = -1;
|
||||||
|
|
||||||
|
|||||||
@@ -148,6 +148,11 @@ public class QSPanelController extends QSPanelControllerBase<QSPanel> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onSplitShadeChanged() {
|
||||||
|
((PagedTileLayout) mView.getOrCreateTileLayout()).forceTilesRedistribution();
|
||||||
|
}
|
||||||
|
|
||||||
/** */
|
/** */
|
||||||
public void setVisibility(int visibility) {
|
public void setVisibility(int visibility) {
|
||||||
mView.setVisibility(visibility);
|
mView.setVisibility(visibility);
|
||||||
|
|||||||
@@ -96,17 +96,23 @@ public abstract class QSPanelControllerBase<T extends QSPanel> extends ViewContr
|
|||||||
/* newOrientation= */ newConfig.orientation,
|
/* newOrientation= */ newConfig.orientation,
|
||||||
/* containerName= */ mView.getDumpableTag());
|
/* containerName= */ mView.getDumpableTag());
|
||||||
|
|
||||||
|
boolean previousSplitShadeState = mShouldUseSplitNotificationShade;
|
||||||
mShouldUseSplitNotificationShade =
|
mShouldUseSplitNotificationShade =
|
||||||
LargeScreenUtils.shouldUseSplitNotificationShade(getResources());
|
LargeScreenUtils.shouldUseSplitNotificationShade(getResources());
|
||||||
mLastOrientation = newConfig.orientation;
|
mLastOrientation = newConfig.orientation;
|
||||||
|
|
||||||
switchTileLayoutIfNeeded();
|
switchTileLayoutIfNeeded();
|
||||||
onConfigurationChanged();
|
onConfigurationChanged();
|
||||||
|
if (previousSplitShadeState != mShouldUseSplitNotificationShade) {
|
||||||
|
onSplitShadeChanged();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
protected void onConfigurationChanged() { }
|
protected void onConfigurationChanged() { }
|
||||||
|
|
||||||
|
protected void onSplitShadeChanged() { }
|
||||||
|
|
||||||
private final Function1<Boolean, Unit> mMediaHostVisibilityListener = (visible) -> {
|
private final Function1<Boolean, Unit> mMediaHostVisibilityListener = (visible) -> {
|
||||||
if (mMediaVisibilityChangedListener != null) {
|
if (mMediaVisibilityChangedListener != null) {
|
||||||
mMediaVisibilityChangedListener.accept(visible);
|
mMediaVisibilityChangedListener.accept(visible);
|
||||||
@@ -264,14 +270,6 @@ public abstract class QSPanelControllerBase<T extends QSPanel> extends ViewContr
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
protected QSTile getTile(String subPanel) {
|
|
||||||
for (int i = 0; i < mRecords.size(); i++) {
|
|
||||||
if (subPanel.equals(mRecords.get(i).tile.getTileSpec())) {
|
|
||||||
return mRecords.get(i).tile;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return mHost.createTile(subPanel);
|
|
||||||
}
|
|
||||||
|
|
||||||
boolean areThereTiles() {
|
boolean areThereTiles() {
|
||||||
return !mRecords.isEmpty();
|
return !mRecords.isEmpty();
|
||||||
|
|||||||
@@ -1,9 +1,12 @@
|
|||||||
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 android.testing.TestableResources
|
||||||
import com.android.internal.logging.MetricsLogger
|
import com.android.internal.logging.MetricsLogger
|
||||||
import com.android.internal.logging.UiEventLogger
|
import com.android.internal.logging.UiEventLogger
|
||||||
|
import com.android.systemui.R
|
||||||
import com.android.systemui.SysuiTestCase
|
import com.android.systemui.SysuiTestCase
|
||||||
import com.android.systemui.dump.DumpManager
|
import com.android.systemui.dump.DumpManager
|
||||||
import com.android.systemui.flags.FeatureFlags
|
import com.android.systemui.flags.FeatureFlags
|
||||||
@@ -26,10 +29,11 @@ import org.mockito.ArgumentMatchers.anyBoolean
|
|||||||
import org.mockito.Mock
|
import org.mockito.Mock
|
||||||
import org.mockito.Mockito
|
import org.mockito.Mockito
|
||||||
import org.mockito.Mockito.any
|
import org.mockito.Mockito.any
|
||||||
|
import org.mockito.Mockito.never
|
||||||
import org.mockito.Mockito.reset
|
import org.mockito.Mockito.reset
|
||||||
import org.mockito.Mockito.verify
|
import org.mockito.Mockito.verify
|
||||||
import org.mockito.Mockito.`when` as whenever
|
|
||||||
import org.mockito.MockitoAnnotations
|
import org.mockito.MockitoAnnotations
|
||||||
|
import org.mockito.Mockito.`when` as whenever
|
||||||
|
|
||||||
@SmallTest
|
@SmallTest
|
||||||
@RunWith(AndroidTestingRunner::class)
|
@RunWith(AndroidTestingRunner::class)
|
||||||
@@ -54,8 +58,11 @@ class QSPanelControllerTest : SysuiTestCase() {
|
|||||||
@Mock private lateinit var otherTile: QSTile
|
@Mock private lateinit var otherTile: QSTile
|
||||||
@Mock private lateinit var statusBarKeyguardViewManager: StatusBarKeyguardViewManager
|
@Mock private lateinit var statusBarKeyguardViewManager: StatusBarKeyguardViewManager
|
||||||
@Mock private lateinit var featureFlags: FeatureFlags
|
@Mock private lateinit var featureFlags: FeatureFlags
|
||||||
|
@Mock private lateinit var configuration: Configuration
|
||||||
|
@Mock private lateinit var pagedTileLayout: PagedTileLayout
|
||||||
|
|
||||||
private lateinit var controller: QSPanelController
|
private lateinit var controller: QSPanelController
|
||||||
|
private val testableResources: TestableResources = mContext.orCreateTestableResources
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
fun setUp() {
|
fun setUp() {
|
||||||
@@ -63,7 +70,9 @@ class QSPanelControllerTest : SysuiTestCase() {
|
|||||||
|
|
||||||
whenever(brightnessSliderFactory.create(any(), any())).thenReturn(brightnessSlider)
|
whenever(brightnessSliderFactory.create(any(), any())).thenReturn(brightnessSlider)
|
||||||
whenever(brightnessControllerFactory.create(any())).thenReturn(brightnessController)
|
whenever(brightnessControllerFactory.create(any())).thenReturn(brightnessController)
|
||||||
whenever(qsPanel.resources).thenReturn(mContext.orCreateTestableResources.resources)
|
testableResources.addOverride(R.bool.config_use_split_notification_shade, false)
|
||||||
|
whenever(qsPanel.resources).thenReturn(testableResources.resources)
|
||||||
|
whenever(qsPanel.getOrCreateTileLayout()).thenReturn(pagedTileLayout)
|
||||||
whenever(statusBarKeyguardViewManager.isPrimaryBouncerInTransit()).thenReturn(false)
|
whenever(statusBarKeyguardViewManager.isPrimaryBouncerInTransit()).thenReturn(false)
|
||||||
whenever(qsPanel.setListening(anyBoolean())).then {
|
whenever(qsPanel.setListening(anyBoolean())).then {
|
||||||
whenever(qsPanel.isListening).thenReturn(it.getArgument(0))
|
whenever(qsPanel.isListening).thenReturn(it.getArgument(0))
|
||||||
@@ -121,4 +130,15 @@ class QSPanelControllerTest : SysuiTestCase() {
|
|||||||
whenever(statusBarKeyguardViewManager.isPrimaryBouncerInTransit()).thenReturn(false)
|
whenever(statusBarKeyguardViewManager.isPrimaryBouncerInTransit()).thenReturn(false)
|
||||||
assertThat(controller.isBouncerInTransit()).isEqualTo(false)
|
assertThat(controller.isBouncerInTransit()).isEqualTo(false)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun configurationChange_onlySplitShadeConfigChanges_tileAreRedistributed() {
|
||||||
|
testableResources.addOverride(R.bool.config_use_split_notification_shade, false)
|
||||||
|
controller.mOnConfigurationChangedListener.onConfigurationChange(configuration)
|
||||||
|
verify(pagedTileLayout, never()).forceTilesRedistribution()
|
||||||
|
|
||||||
|
testableResources.addOverride(R.bool.config_use_split_notification_shade, true)
|
||||||
|
controller.mOnConfigurationChangedListener.onConfigurationChange(configuration)
|
||||||
|
verify(pagedTileLayout).forceTilesRedistribution()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user