Merge "Fix NPE when QSPanel not yet attached,"

This commit is contained in:
TreeHugger Robot
2020-11-05 20:09:23 +00:00
committed by Android (Google) Code Review
3 changed files with 45 additions and 5 deletions

View File

@@ -413,7 +413,7 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca
}
}
mFooter.setExpansion(onKeyguardAndExpanded ? 1 : expansion);
mQSPanelController.getQsTileRevealController().setExpansion(expansion);
mQSPanelController.setRevealExpansion(expansion);
mQSPanelController.getTileLayout().setExpansion(expansion);
mQSPanelScrollView.setTranslationY(translationScaleY * heightDiff);
if (fullyCollapsed) {

View File

@@ -56,7 +56,9 @@ public abstract class QSPanelControllerBase<T extends QSPanel> extends ViewContr
protected final ArrayList<TileRecord> mRecords = new ArrayList<>();
private int mLastOrientation;
private String mCachedSpecs = "";
private QSTileRevealController mQsTileRevealController;
private float mRevealExpansion;
private final QSHost.Callback mQSHostCallback = this::setTiles;
@@ -70,7 +72,6 @@ public abstract class QSPanelControllerBase<T extends QSPanel> extends ViewContr
}
}
};
private String mCachedSpecs = "";
protected QSPanelControllerBase(T view, QSTileHost host,
QSCustomizerController qsCustomizerController,
@@ -92,6 +93,7 @@ public abstract class QSPanelControllerBase<T extends QSPanel> extends ViewContr
if (regularTileLayout instanceof PagedTileLayout) {
mQsTileRevealController = mQsTileRevealControllerFactory.create(
(PagedTileLayout) regularTileLayout);
mQsTileRevealController.setExpansion(mRevealExpansion);
}
mView.addOnConfigurationChangedListener(mOnConfigurationChangedListener);
@@ -246,9 +248,12 @@ public abstract class QSPanelControllerBase<T extends QSPanel> extends ViewContr
}
}
/** */
public QSTileRevealController getQsTileRevealController() {
return mQsTileRevealController;
/** Set the expansion on the associated {@link QSTileRevealController}. */
public void setRevealExpansion(float expansion) {
mRevealExpansion = expansion;
if (mQsTileRevealController != null) {
mQsTileRevealController.setExpansion(expansion);
}
}
@Override

View File

@@ -19,9 +19,12 @@ package com.android.systemui.qs;
import static org.junit.Assert.assertEquals;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.anyFloat;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.reset;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -112,8 +115,40 @@ public class QSPanelControllerBaseTest extends SysuiTestCase {
mUiEventLogger, mDumpManager);
mController.init();
reset(mQSTileRevealController);
}
@Test
public void testSetRevealExpansion_preAttach() {
mController.onViewDetached();
QSPanelControllerBase<QSPanel> controller = new TestableQSPanelControllerBase(mQSPanel,
mQSTileHost, mQSCustomizerController, mQSTileRevealControllerFactory,
mMetricsLogger, mUiEventLogger, mDumpManager);
// Nothing happens until attached
controller.setRevealExpansion(0);
verify(mQSTileRevealController, never()).setExpansion(anyFloat());
controller.setRevealExpansion(0.5f);
verify(mQSTileRevealController, never()).setExpansion(anyFloat());
controller.setRevealExpansion(1);
verify(mQSTileRevealController, never()).setExpansion(anyFloat());
controller.init();
verify(mQSTileRevealController).setExpansion(1);
}
@Test
public void testSetRevealExpansion_postAttach() {
mController.setRevealExpansion(0);
verify(mQSTileRevealController).setExpansion(0);
mController.setRevealExpansion(0.5f);
verify(mQSTileRevealController).setExpansion(0.5f);
mController.setRevealExpansion(1);
verify(mQSTileRevealController).setExpansion(1);
}
@Test
public void testSetExpanded_Metrics() {
mController.setExpanded(true);