Loading src/com/android/settings/SettingsActivity.java +3 −2 Original line number Diff line number Diff line Loading @@ -527,8 +527,9 @@ public class SettingsActivity extends SettingsDrawerActivity } } if (DEBUG_TIMING) Log.d(LOG_TAG, "onCreate took " + (System.currentTimeMillis() - startTime) + " ms"); if (DEBUG_TIMING) { Log.d(LOG_TAG, "onCreate took " + (System.currentTimeMillis() - startTime) + " ms"); } } public void setDisplaySearchMenu(boolean displaySearch) { Loading src/com/android/settings/dashboard/DashboardAdapter.java +12 −1 Original line number Diff line number Diff line Loading @@ -63,6 +63,7 @@ public class DashboardAdapter extends RecyclerView.Adapter<DashboardAdapter.Dash private final MetricsFeatureProvider mMetricsFeatureProvider; private final DashboardFeatureProvider mDashboardFeatureProvider; private SuggestionParser mSuggestionParser; private boolean mFirstFrameDrawn; @VisibleForTesting DashboardData mDashboardData; Loading Loading @@ -162,6 +163,15 @@ public class DashboardAdapter extends RecyclerView.Adapter<DashboardAdapter.Dash notifyDashboardDataChanged(prevData); } public void setCategory(List<DashboardCategory> category) { final DashboardData prevData = mDashboardData; Log.d(TAG, "adapter setCategory called"); mDashboardData = new DashboardData.Builder(prevData) .setCategories(category) .build(); notifyDashboardDataChanged(prevData); } public void setConditions(List<Condition> conditions) { final DashboardData prevData = mDashboardData; Log.d(TAG, "adapter setConditions called"); Loading Loading @@ -304,11 +314,12 @@ public class DashboardAdapter extends RecyclerView.Adapter<DashboardAdapter.Dash } private void notifyDashboardDataChanged(DashboardData prevData) { if (prevData != null) { if (mFirstFrameDrawn && prevData != null) { final DiffUtil.DiffResult diffResult = DiffUtil.calculateDiff(new DashboardData .ItemsDataDiffCallback(prevData.getItemList(), mDashboardData.getItemList())); diffResult.dispatchUpdatesTo(this); } else { mFirstFrameDrawn = true; notifyDataSetChanged(); } } Loading src/com/android/settings/dashboard/DashboardSummary.java +20 −17 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.R; import com.android.settings.SettingsActivity; Loading Loading @@ -231,26 +232,25 @@ public class DashboardSummary extends InstrumentedFragment Log.d(TAG, "onViewCreated took " + (System.currentTimeMillis() - startTime) + " ms"); } rebuildUI(); } private void rebuildUI() { if (!isAdded()) { Log.w(TAG, "Cannot build the DashboardSummary UI yet as the Fragment is not added"); return; rebuildUI(true /* rebuildSuggestions */); } private void rebuildUI(boolean rebuildSuggestions) { if (rebuildSuggestions) { // recheck to see if any suggestions have been changed. 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(); rebuildUI(false /* rebuildSuggestions */); } @Override Loading @@ -264,7 +264,6 @@ public class DashboardSummary extends InstrumentedFragment } private class SuggestionLoader extends AsyncTask<Void, Void, List<Tile>> { @Override protected List<Tile> doInBackground(Void... params) { final Context context = getContext(); Loading Loading @@ -307,7 +306,7 @@ public class DashboardSummary extends InstrumentedFragment } @VisibleForTesting void updateCategoryAndSuggestion(List<Tile> tiles) { void updateCategoryAndSuggestion(List<Tile> suggestions) { final Activity activity = getActivity(); if (activity == null) { return; Loading @@ -319,10 +318,14 @@ public class DashboardSummary extends InstrumentedFragment List<DashboardCategory> categories = new ArrayList<>(); categories.add(mDashboardFeatureProvider.getTilesForCategory( CategoryKey.CATEGORY_HOMEPAGE)); mAdapter.setCategoriesAndSuggestions(categories, tiles); if (suggestions != null) { mAdapter.setCategoriesAndSuggestions(categories, suggestions); } else { mAdapter.setCategory(categories); } } else { mAdapter.setCategoriesAndSuggestions( ((SettingsActivity) activity).getDashboardCategories(), tiles); ((SettingsActivity) activity).getDashboardCategories(), suggestions); } } } tests/robotests/src/com/android/settings/dashboard/DashboardSummaryTest.java +11 −1 Original line number Diff line number Diff line Loading @@ -17,8 +17,8 @@ package com.android.settings.dashboard; import android.app.Activity; import android.support.v7.widget.LinearLayoutManager; import com.android.settings.SettingsRobolectricTestRunner; import com.android.settings.TestConfig; import com.android.settings.dashboard.conditional.ConditionManager; Loading @@ -33,6 +33,7 @@ import org.mockito.MockitoAnnotations; import org.robolectric.annotation.Config; import org.robolectric.util.ReflectionHelpers; import static org.mockito.Matchers.anyList; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; Loading Loading @@ -90,4 +91,13 @@ public class DashboardSummaryTest { mSummary.onConditionsChanged(); verify(mDashboard, never()).scrollToPosition(0); } @Test public void onCategoryChanged_updateCategoryOnly() { doReturn(mock(Activity.class)).when(mSummary).getActivity(); when(mDashboardFeatureProvider.isEnabled()).thenReturn(true); mSummary.onCategoriesChanged(); verify(mAdapter).setCategory(anyList()); } } No newline at end of file Loading
src/com/android/settings/SettingsActivity.java +3 −2 Original line number Diff line number Diff line Loading @@ -527,8 +527,9 @@ public class SettingsActivity extends SettingsDrawerActivity } } if (DEBUG_TIMING) Log.d(LOG_TAG, "onCreate took " + (System.currentTimeMillis() - startTime) + " ms"); if (DEBUG_TIMING) { Log.d(LOG_TAG, "onCreate took " + (System.currentTimeMillis() - startTime) + " ms"); } } public void setDisplaySearchMenu(boolean displaySearch) { Loading
src/com/android/settings/dashboard/DashboardAdapter.java +12 −1 Original line number Diff line number Diff line Loading @@ -63,6 +63,7 @@ public class DashboardAdapter extends RecyclerView.Adapter<DashboardAdapter.Dash private final MetricsFeatureProvider mMetricsFeatureProvider; private final DashboardFeatureProvider mDashboardFeatureProvider; private SuggestionParser mSuggestionParser; private boolean mFirstFrameDrawn; @VisibleForTesting DashboardData mDashboardData; Loading Loading @@ -162,6 +163,15 @@ public class DashboardAdapter extends RecyclerView.Adapter<DashboardAdapter.Dash notifyDashboardDataChanged(prevData); } public void setCategory(List<DashboardCategory> category) { final DashboardData prevData = mDashboardData; Log.d(TAG, "adapter setCategory called"); mDashboardData = new DashboardData.Builder(prevData) .setCategories(category) .build(); notifyDashboardDataChanged(prevData); } public void setConditions(List<Condition> conditions) { final DashboardData prevData = mDashboardData; Log.d(TAG, "adapter setConditions called"); Loading Loading @@ -304,11 +314,12 @@ public class DashboardAdapter extends RecyclerView.Adapter<DashboardAdapter.Dash } private void notifyDashboardDataChanged(DashboardData prevData) { if (prevData != null) { if (mFirstFrameDrawn && prevData != null) { final DiffUtil.DiffResult diffResult = DiffUtil.calculateDiff(new DashboardData .ItemsDataDiffCallback(prevData.getItemList(), mDashboardData.getItemList())); diffResult.dispatchUpdatesTo(this); } else { mFirstFrameDrawn = true; notifyDataSetChanged(); } } Loading
src/com/android/settings/dashboard/DashboardSummary.java +20 −17 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.R; import com.android.settings.SettingsActivity; Loading Loading @@ -231,26 +232,25 @@ public class DashboardSummary extends InstrumentedFragment Log.d(TAG, "onViewCreated took " + (System.currentTimeMillis() - startTime) + " ms"); } rebuildUI(); } private void rebuildUI() { if (!isAdded()) { Log.w(TAG, "Cannot build the DashboardSummary UI yet as the Fragment is not added"); return; rebuildUI(true /* rebuildSuggestions */); } private void rebuildUI(boolean rebuildSuggestions) { if (rebuildSuggestions) { // recheck to see if any suggestions have been changed. 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(); rebuildUI(false /* rebuildSuggestions */); } @Override Loading @@ -264,7 +264,6 @@ public class DashboardSummary extends InstrumentedFragment } private class SuggestionLoader extends AsyncTask<Void, Void, List<Tile>> { @Override protected List<Tile> doInBackground(Void... params) { final Context context = getContext(); Loading Loading @@ -307,7 +306,7 @@ public class DashboardSummary extends InstrumentedFragment } @VisibleForTesting void updateCategoryAndSuggestion(List<Tile> tiles) { void updateCategoryAndSuggestion(List<Tile> suggestions) { final Activity activity = getActivity(); if (activity == null) { return; Loading @@ -319,10 +318,14 @@ public class DashboardSummary extends InstrumentedFragment List<DashboardCategory> categories = new ArrayList<>(); categories.add(mDashboardFeatureProvider.getTilesForCategory( CategoryKey.CATEGORY_HOMEPAGE)); mAdapter.setCategoriesAndSuggestions(categories, tiles); if (suggestions != null) { mAdapter.setCategoriesAndSuggestions(categories, suggestions); } else { mAdapter.setCategory(categories); } } else { mAdapter.setCategoriesAndSuggestions( ((SettingsActivity) activity).getDashboardCategories(), tiles); ((SettingsActivity) activity).getDashboardCategories(), suggestions); } } }
tests/robotests/src/com/android/settings/dashboard/DashboardSummaryTest.java +11 −1 Original line number Diff line number Diff line Loading @@ -17,8 +17,8 @@ package com.android.settings.dashboard; import android.app.Activity; import android.support.v7.widget.LinearLayoutManager; import com.android.settings.SettingsRobolectricTestRunner; import com.android.settings.TestConfig; import com.android.settings.dashboard.conditional.ConditionManager; Loading @@ -33,6 +33,7 @@ import org.mockito.MockitoAnnotations; import org.robolectric.annotation.Config; import org.robolectric.util.ReflectionHelpers; import static org.mockito.Matchers.anyList; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; Loading Loading @@ -90,4 +91,13 @@ public class DashboardSummaryTest { mSummary.onConditionsChanged(); verify(mDashboard, never()).scrollToPosition(0); } @Test public void onCategoryChanged_updateCategoryOnly() { doReturn(mock(Activity.class)).when(mSummary).getActivity(); when(mDashboardFeatureProvider.isEnabled()).thenReturn(true); mSummary.onCategoriesChanged(); verify(mAdapter).setCategory(anyList()); } } No newline at end of file