Change underlying preferenceControllers to an ArrayMap of Lists.
Previously, DashboardFragment stores preference controllers in an ArrayMap of <Class, AbstractPreferenceController>. Thus when there are multiple controllers of same class (ie. multiple PreferenceCategoryControllers), they cannot be stored simultaneously. This changes the value to a List so we can store multiple controllers of the same Class without extraneous sub-classing. Bug: 70949662 Test: All existing tests still pass. Added DashboardFragmentTest#testPreferenceControllerSetter_shouldAddAndNotReplace and DashboardFragmentTest#updateState_doesNotSkipControllersOfSameClass. Change-Id: I397e8c91977ea1180d48a3af75dd4058bf1175c0
This commit is contained in:
@@ -90,6 +90,19 @@ public class DashboardFragmentTest {
|
||||
assertThat(controller).isSameAs(retrievedController);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testPreferenceControllerSetter_shouldAddAndNotReplace() {
|
||||
final TestPreferenceController controller1 = new TestPreferenceController(mContext);
|
||||
mTestFragment.addPreferenceController(controller1);
|
||||
final TestPreferenceController controller2 = new TestPreferenceController(mContext);
|
||||
mTestFragment.addPreferenceController(controller2);
|
||||
|
||||
final TestPreferenceController retrievedController = mTestFragment.getPreferenceController
|
||||
(TestPreferenceController.class);
|
||||
|
||||
assertThat(controller1).isSameAs(retrievedController);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void displayTilesAsPreference_shouldAddTilesWithIntent() {
|
||||
when(mFakeFeatureFactory.dashboardFeatureProvider
|
||||
@@ -145,6 +158,23 @@ public class DashboardFragmentTest {
|
||||
verify(mockController2).getPreferenceKey();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void updateState_doesNotSkipControllersOfSameClass() {
|
||||
final AbstractPreferenceController mockController1 =
|
||||
mock(AbstractPreferenceController.class);
|
||||
final AbstractPreferenceController mockController2 =
|
||||
mock(AbstractPreferenceController.class);
|
||||
mTestFragment.addPreferenceController(mockController1);
|
||||
mTestFragment.addPreferenceController(mockController2);
|
||||
when(mockController1.isAvailable()).thenReturn(true);
|
||||
when(mockController2.isAvailable()).thenReturn(true);
|
||||
|
||||
mTestFragment.updatePreferenceStates();
|
||||
|
||||
verify(mockController1).getPreferenceKey();
|
||||
verify(mockController2).getPreferenceKey();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void tintTileIcon_hasMetadata_shouldReturnIconTintableMetadata() {
|
||||
final Tile tile = new Tile();
|
||||
|
Reference in New Issue
Block a user