Merge "Set title in remote views if present in bundle"

This commit is contained in:
Ajay Nadathur
2017-09-08 05:09:21 +00:00
committed by Android (Google) Code Review
3 changed files with 38 additions and 0 deletions

View File

@@ -436,6 +436,17 @@ public class DashboardData {
// Only check title and summary for dashboard tile // Only check title and summary for dashboard tile
return TextUtils.equals(localTile.title, targetTile.title) return TextUtils.equals(localTile.title, targetTile.title)
&& TextUtils.equals(localTile.summary, targetTile.summary); && 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: default:
return entity == null ? targetItem.entity == null return entity == null ? targetItem.entity == null
: entity.equals(targetItem.entity); : entity.equals(targetItem.entity);

View File

@@ -29,6 +29,8 @@ import com.android.settings.dashboard.DashboardAdapter.DashboardItemHolder;
import com.android.settings.dashboard.DashboardAdapter.IconCache; import com.android.settings.dashboard.DashboardAdapter.IconCache;
import com.android.settings.overlay.FeatureFactory; import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.drawer.Tile; import com.android.settingslib.drawer.Tile;
import com.android.settingslib.drawer.TileUtils;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
@@ -73,6 +75,7 @@ public class SuggestionAdapter extends RecyclerView.Adapter<DashboardItemHolder>
mSuggestionsShownLogged.add(suggestionId); mSuggestionsShownLogged.add(suggestionId);
} }
if (suggestion.remoteViews != null) { if (suggestion.remoteViews != null) {
TileUtils.updateTileUsingSummaryUri(mContext, suggestion);
final ViewGroup itemView = (ViewGroup) holder.itemView; final ViewGroup itemView = (ViewGroup) holder.itemView;
itemView.removeAllViews(); itemView.removeAllViews();
itemView.addView(suggestion.remoteViews.apply(itemView.getContext(), itemView)); itemView.addView(suggestion.remoteViews.apply(itemView.getContext(), itemView));

View File

@@ -19,6 +19,7 @@ package com.android.settings.dashboard;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.support.v7.util.DiffUtil; import android.support.v7.util.DiffUtil;
import android.support.v7.util.ListUpdateCallback; import android.support.v7.util.ListUpdateCallback;
import android.widget.RemoteViews;
import com.android.settings.TestConfig; import com.android.settings.TestConfig;
import com.android.settings.dashboard.conditional.AirplaneModeCondition; import com.android.settings.dashboard.conditional.AirplaneModeCondition;
@@ -35,6 +36,7 @@ import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config; import org.robolectric.annotation.Config;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
@@ -224,6 +226,28 @@ public class DashboardDataTest {
testDiffUtil(mDashboardDataWithOneConditions, mDashboardDataWithNoItems, testResultData); 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 * Test when using the
* {@link com.android.settings.dashboard.DashboardData.ItemsDataDiffCallback} * {@link com.android.settings.dashboard.DashboardData.ItemsDataDiffCallback}