Loading src/com/android/settings/dashboard/DashboardSummary.java +15 −12 Original line number Diff line number Diff line Loading @@ -70,6 +70,7 @@ public class DashboardSummary extends InstrumentedFragment private SuggestionsChecks mSuggestionsChecks; private DashboardFeatureProvider mDashboardFeatureProvider; private SuggestionFeatureProvider mSuggestionFeatureProvider; private boolean isOnCategoriesChangedCalled; @Override public int getMetricsCategory() { Loading Loading @@ -204,25 +205,27 @@ public class DashboardSummary extends InstrumentedFragment Log.d(TAG, "onViewCreated took " + (System.currentTimeMillis() - startTime) + " ms"); } rebuildUI(true /* rebuildSuggestions */); rebuildUI(); } private void rebuildUI(boolean rebuildSuggestions) { if (rebuildSuggestions) { // recheck to see if any suggestions have been changed. @VisibleForTesting void rebuildUI() { new SuggestionLoader().execute(); // Set categories on their own if loading suggestions takes too long. mHandler.postDelayed(() -> { updateCategoryAndSuggestion(null /* tiles */); }, MAX_WAIT_MILLIS); } else { updateCategoryAndSuggestion(null /* tiles */); } } @Override public void onCategoriesChanged() { rebuildUI(false /* rebuildSuggestions */); // Bypass rebuildUI() on the first call of onCategoriesChanged, since rebuildUI() happens // in onViewCreated as well when app starts. But, on the subsequent calls we need to // rebuildUI() because there might be some changes to suggestions and categories. if (isOnCategoriesChangedCalled) { rebuildUI(); } isOnCategoriesChangedCalled = true; } @Override Loading tests/robotests/src/com/android/settings/dashboard/DashboardSummaryTest.java +13 −3 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ import org.robolectric.annotation.Config; import org.robolectric.util.ReflectionHelpers; import static org.mockito.Matchers.anyList; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; Loading @@ -41,6 +42,7 @@ import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @RunWith(SettingsRobolectricTestRunner.class) @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) public class DashboardSummaryTest { Loading Loading @@ -93,11 +95,19 @@ public class DashboardSummaryTest { } @Test public void onCategoryChanged_updateCategoryOnly() { public void onCategoryChanged_noRebuildOnFirstCall() { doReturn(mock(Activity.class)).when(mSummary).getActivity(); when(mDashboardFeatureProvider.isEnabled()).thenReturn(true); doNothing().when(mSummary).rebuildUI(); mSummary.onCategoriesChanged(); verify(mSummary, never()).rebuildUI(); } @Test public void onCategoryChanged_rebuildOnSecondCall() { doReturn(mock(Activity.class)).when(mSummary).getActivity(); doNothing().when(mSummary).rebuildUI(); mSummary.onCategoriesChanged(); mSummary.onCategoriesChanged(); verify(mAdapter).setCategory(anyList()); verify(mSummary).rebuildUI(); } } No newline at end of file Loading
src/com/android/settings/dashboard/DashboardSummary.java +15 −12 Original line number Diff line number Diff line Loading @@ -70,6 +70,7 @@ public class DashboardSummary extends InstrumentedFragment private SuggestionsChecks mSuggestionsChecks; private DashboardFeatureProvider mDashboardFeatureProvider; private SuggestionFeatureProvider mSuggestionFeatureProvider; private boolean isOnCategoriesChangedCalled; @Override public int getMetricsCategory() { Loading Loading @@ -204,25 +205,27 @@ public class DashboardSummary extends InstrumentedFragment Log.d(TAG, "onViewCreated took " + (System.currentTimeMillis() - startTime) + " ms"); } rebuildUI(true /* rebuildSuggestions */); rebuildUI(); } private void rebuildUI(boolean rebuildSuggestions) { if (rebuildSuggestions) { // recheck to see if any suggestions have been changed. @VisibleForTesting void rebuildUI() { new SuggestionLoader().execute(); // Set categories on their own if loading suggestions takes too long. mHandler.postDelayed(() -> { updateCategoryAndSuggestion(null /* tiles */); }, MAX_WAIT_MILLIS); } else { updateCategoryAndSuggestion(null /* tiles */); } } @Override public void onCategoriesChanged() { rebuildUI(false /* rebuildSuggestions */); // Bypass rebuildUI() on the first call of onCategoriesChanged, since rebuildUI() happens // in onViewCreated as well when app starts. But, on the subsequent calls we need to // rebuildUI() because there might be some changes to suggestions and categories. if (isOnCategoriesChangedCalled) { rebuildUI(); } isOnCategoriesChangedCalled = true; } @Override Loading
tests/robotests/src/com/android/settings/dashboard/DashboardSummaryTest.java +13 −3 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ import org.robolectric.annotation.Config; import org.robolectric.util.ReflectionHelpers; import static org.mockito.Matchers.anyList; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; Loading @@ -41,6 +42,7 @@ import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @RunWith(SettingsRobolectricTestRunner.class) @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) public class DashboardSummaryTest { Loading Loading @@ -93,11 +95,19 @@ public class DashboardSummaryTest { } @Test public void onCategoryChanged_updateCategoryOnly() { public void onCategoryChanged_noRebuildOnFirstCall() { doReturn(mock(Activity.class)).when(mSummary).getActivity(); when(mDashboardFeatureProvider.isEnabled()).thenReturn(true); doNothing().when(mSummary).rebuildUI(); mSummary.onCategoriesChanged(); verify(mSummary, never()).rebuildUI(); } @Test public void onCategoryChanged_rebuildOnSecondCall() { doReturn(mock(Activity.class)).when(mSummary).getActivity(); doNothing().when(mSummary).rebuildUI(); mSummary.onCategoriesChanged(); mSummary.onCategoriesChanged(); verify(mAdapter).setCategory(anyList()); verify(mSummary).rebuildUI(); } } No newline at end of file