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); mFooter.setExpansion(onKeyguardAndExpanded ? 1 : expansion);
mQSPanelController.getQsTileRevealController().setExpansion(expansion); mQSPanelController.setRevealExpansion(expansion);
mQSPanelController.getTileLayout().setExpansion(expansion); mQSPanelController.getTileLayout().setExpansion(expansion);
mQSPanelScrollView.setTranslationY(translationScaleY * heightDiff); mQSPanelScrollView.setTranslationY(translationScaleY * heightDiff);
if (fullyCollapsed) { if (fullyCollapsed) {

View File

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

View File

@@ -19,9 +19,12 @@ package com.android.systemui.qs;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.anyFloat;
import static org.mockito.ArgumentMatchers.eq; import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.mock; 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.verify;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
@@ -112,8 +115,40 @@ public class QSPanelControllerBaseTest extends SysuiTestCase {
mUiEventLogger, mDumpManager); mUiEventLogger, mDumpManager);
mController.init(); 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 @Test
public void testSetExpanded_Metrics() { public void testSetExpanded_Metrics() {
mController.setExpanded(true); mController.setExpanded(true);