Merge "Set title in remote views if present in bundle" into oc-mr1-dev
diff --git a/src/com/android/settings/dashboard/DashboardData.java b/src/com/android/settings/dashboard/DashboardData.java
index 0fac0a2..1fd181f 100644
--- a/src/com/android/settings/dashboard/DashboardData.java
+++ b/src/com/android/settings/dashboard/DashboardData.java
@@ -460,6 +460,17 @@
// 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);
diff --git a/src/com/android/settings/dashboard/suggestions/SuggestionAdapter.java b/src/com/android/settings/dashboard/suggestions/SuggestionAdapter.java
index 4539680..2c9da41 100644
--- a/src/com/android/settings/dashboard/suggestions/SuggestionAdapter.java
+++ b/src/com/android/settings/dashboard/suggestions/SuggestionAdapter.java
@@ -29,6 +29,8 @@
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;
@@ -73,6 +75,7 @@
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));
diff --git a/tests/robotests/src/com/android/settings/dashboard/DashboardDataTest.java b/tests/robotests/src/com/android/settings/dashboard/DashboardDataTest.java
index 77213f5..68d3354 100644
--- a/tests/robotests/src/com/android/settings/dashboard/DashboardDataTest.java
+++ b/tests/robotests/src/com/android/settings/dashboard/DashboardDataTest.java
@@ -19,6 +19,7 @@
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;
@@ -35,6 +36,7 @@
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;
@@ -224,6 +226,28 @@
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}