Loading src/com/android/settings/dashboard/DashboardData.java +11 −0 Original line number Diff line number Diff line Loading @@ -460,6 +460,17 @@ public class DashboardData { // Only check title and summary for dashboard tile return TextUtils.equals(localTile.title, targetTile.title) && TextUtils.equals(localTile.summary, targetTile.summary); case TYPE_SUGGESTION_CONDITION_CONTAINER: // If entity is suggestion and contains remote view, force refresh final List entities = (List) entity; if (!entities.isEmpty()) { Object firstEntity = entities.get(0); if (firstEntity instanceof Tile && ((Tile) firstEntity).remoteViews != null) { return false; } } // Otherwise Fall through to default default: return entity == null ? targetItem.entity == null : entity.equals(targetItem.entity); Loading src/com/android/settings/dashboard/suggestions/SuggestionAdapter.java +3 −0 Original line number Diff line number Diff line Loading @@ -29,6 +29,8 @@ import com.android.settings.dashboard.DashboardAdapter.DashboardItemHolder; import com.android.settings.dashboard.DashboardAdapter.IconCache; import com.android.settings.overlay.FeatureFactory; import com.android.settingslib.drawer.Tile; import com.android.settingslib.drawer.TileUtils; import java.util.List; import java.util.Objects; Loading Loading @@ -73,6 +75,7 @@ public class SuggestionAdapter extends RecyclerView.Adapter<DashboardItemHolder> mSuggestionsShownLogged.add(suggestionId); } if (suggestion.remoteViews != null) { TileUtils.updateTileUsingSummaryUri(mContext, suggestion); final ViewGroup itemView = (ViewGroup) holder.itemView; itemView.removeAllViews(); itemView.addView(suggestion.remoteViews.apply(itemView.getContext(), itemView)); Loading tests/robotests/src/com/android/settings/dashboard/DashboardDataTest.java +24 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.settings.dashboard; import android.support.annotation.NonNull; import android.support.v7.util.DiffUtil; import android.support.v7.util.ListUpdateCallback; import android.widget.RemoteViews; import com.android.settings.TestConfig; import com.android.settings.dashboard.conditional.AirplaneModeCondition; Loading @@ -35,6 +36,7 @@ import org.robolectric.RobolectricTestRunner; import org.robolectric.annotation.Config; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.Objects; Loading Loading @@ -224,6 +226,28 @@ public class DashboardDataTest { testDiffUtil(mDashboardDataWithOneConditions, mDashboardDataWithNoItems, testResultData); } @Test public void testDiffUtil_typeSuggestedContainer_ResultDataNothingChanged() { //Build testResultData final List<ListUpdateResult.ResultData> testResultData = new ArrayList<>(); testResultData.add(new ListUpdateResult.ResultData( ListUpdateResult.ResultData.TYPE_OPERATION_CHANGE, 0, 1)); Tile tile = new Tile(); tile.remoteViews = mock(RemoteViews.class); DashboardData prevData = new DashboardData.Builder() .setConditions(null) .setCategory(null) .setSuggestions(Arrays.asList(tile)) .build(); DashboardData currentData = new DashboardData.Builder() .setConditions(null) .setCategory(null) .setSuggestions(Arrays.asList(tile)) .build(); testDiffUtil(prevData, currentData, testResultData); } /** * Test when using the * {@link com.android.settings.dashboard.DashboardData.ItemsDataDiffCallback} Loading Loading
src/com/android/settings/dashboard/DashboardData.java +11 −0 Original line number Diff line number Diff line Loading @@ -460,6 +460,17 @@ public class DashboardData { // Only check title and summary for dashboard tile return TextUtils.equals(localTile.title, targetTile.title) && TextUtils.equals(localTile.summary, targetTile.summary); case TYPE_SUGGESTION_CONDITION_CONTAINER: // If entity is suggestion and contains remote view, force refresh final List entities = (List) entity; if (!entities.isEmpty()) { Object firstEntity = entities.get(0); if (firstEntity instanceof Tile && ((Tile) firstEntity).remoteViews != null) { return false; } } // Otherwise Fall through to default default: return entity == null ? targetItem.entity == null : entity.equals(targetItem.entity); Loading
src/com/android/settings/dashboard/suggestions/SuggestionAdapter.java +3 −0 Original line number Diff line number Diff line Loading @@ -29,6 +29,8 @@ import com.android.settings.dashboard.DashboardAdapter.DashboardItemHolder; import com.android.settings.dashboard.DashboardAdapter.IconCache; import com.android.settings.overlay.FeatureFactory; import com.android.settingslib.drawer.Tile; import com.android.settingslib.drawer.TileUtils; import java.util.List; import java.util.Objects; Loading Loading @@ -73,6 +75,7 @@ public class SuggestionAdapter extends RecyclerView.Adapter<DashboardItemHolder> mSuggestionsShownLogged.add(suggestionId); } if (suggestion.remoteViews != null) { TileUtils.updateTileUsingSummaryUri(mContext, suggestion); final ViewGroup itemView = (ViewGroup) holder.itemView; itemView.removeAllViews(); itemView.addView(suggestion.remoteViews.apply(itemView.getContext(), itemView)); Loading
tests/robotests/src/com/android/settings/dashboard/DashboardDataTest.java +24 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.settings.dashboard; import android.support.annotation.NonNull; import android.support.v7.util.DiffUtil; import android.support.v7.util.ListUpdateCallback; import android.widget.RemoteViews; import com.android.settings.TestConfig; import com.android.settings.dashboard.conditional.AirplaneModeCondition; Loading @@ -35,6 +36,7 @@ import org.robolectric.RobolectricTestRunner; import org.robolectric.annotation.Config; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.Objects; Loading Loading @@ -224,6 +226,28 @@ public class DashboardDataTest { testDiffUtil(mDashboardDataWithOneConditions, mDashboardDataWithNoItems, testResultData); } @Test public void testDiffUtil_typeSuggestedContainer_ResultDataNothingChanged() { //Build testResultData final List<ListUpdateResult.ResultData> testResultData = new ArrayList<>(); testResultData.add(new ListUpdateResult.ResultData( ListUpdateResult.ResultData.TYPE_OPERATION_CHANGE, 0, 1)); Tile tile = new Tile(); tile.remoteViews = mock(RemoteViews.class); DashboardData prevData = new DashboardData.Builder() .setConditions(null) .setCategory(null) .setSuggestions(Arrays.asList(tile)) .build(); DashboardData currentData = new DashboardData.Builder() .setConditions(null) .setCategory(null) .setSuggestions(Arrays.asList(tile)) .build(); testDiffUtil(prevData, currentData, testResultData); } /** * Test when using the * {@link com.android.settings.dashboard.DashboardData.ItemsDataDiffCallback} Loading