Use getSummary() to get tile summary text.
Bug: 77600770 Test: robotests Change-Id: Iecef09853bb49bc259502494912ed81d52e2d7ce
This commit is contained in:
@@ -356,8 +356,9 @@ public class DashboardAdapter extends RecyclerView.Adapter<DashboardAdapter.Dash
|
||||
}
|
||||
holder.icon.setImageDrawable(icon);
|
||||
holder.title.setText(tile.getTitle(mContext));
|
||||
if (!TextUtils.isEmpty(tile.summary)) {
|
||||
holder.summary.setText(tile.summary);
|
||||
final CharSequence summary = tile.getSummary(mContext);
|
||||
if (!TextUtils.isEmpty(summary)) {
|
||||
holder.summary.setText(summary);
|
||||
holder.summary.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
holder.summary.setVisibility(View.GONE);
|
||||
|
@@ -426,7 +426,9 @@ public class DashboardData {
|
||||
|
||||
// Only check id and summary for dashboard tile
|
||||
return localTile.getId() == targetTile.getId()
|
||||
&& TextUtils.equals(localTile.summary, targetTile.summary);
|
||||
&& TextUtils.equals(
|
||||
localTile.getSummaryReference(),
|
||||
targetTile.getSummaryReference());
|
||||
case TYPE_SUGGESTION_CONTAINER:
|
||||
case TYPE_CONDITION_CONTAINER:
|
||||
// Fall through to default
|
||||
|
@@ -172,8 +172,9 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider {
|
||||
}
|
||||
|
||||
private void bindSummary(Preference preference, Tile tile) {
|
||||
if (tile.summary != null) {
|
||||
preference.setSummary(tile.summary);
|
||||
final CharSequence summary = tile.getSummary(mContext);
|
||||
if (summary != null) {
|
||||
preference.setSummary(summary);
|
||||
} else if (tile.getMetaData() != null
|
||||
&& tile.getMetaData().containsKey(META_DATA_PREFERENCE_SUMMARY_URI)) {
|
||||
// Set a placeholder summary before starting to fetch real summary, this is necessary
|
||||
@@ -183,9 +184,9 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider {
|
||||
ThreadUtils.postOnBackgroundThread(() -> {
|
||||
final Map<String, IContentProvider> providerMap = new ArrayMap<>();
|
||||
final String uri = tile.getMetaData().getString(META_DATA_PREFERENCE_SUMMARY_URI);
|
||||
final String summary = TileUtils.getTextFromUri(
|
||||
final String summaryFromUri = TileUtils.getTextFromUri(
|
||||
mContext, uri, providerMap, META_DATA_PREFERENCE_SUMMARY);
|
||||
ThreadUtils.postOnMainThread(() -> preference.setSummary(summary));
|
||||
ThreadUtils.postOnMainThread(() -> preference.setSummary(summaryFromUri));
|
||||
});
|
||||
} else {
|
||||
preference.setSummary(R.string.summary_placeholder);
|
||||
|
@@ -157,11 +157,11 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment
|
||||
final Preference pref = getPreferenceScreen().findPreference(key);
|
||||
if (pref == null) {
|
||||
Log.d(getLogTag(), String.format(
|
||||
"Can't find pref by key %s, skipping update summary %s/%s",
|
||||
key, tile.getDescription(), tile.summary));
|
||||
"Can't find pref by key %s, skipping update summary %s",
|
||||
key, tile.getDescription()));
|
||||
return;
|
||||
}
|
||||
pref.setSummary(tile.summary);
|
||||
pref.setSummary(tile.getSummary(pref.getContext()));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -18,6 +18,7 @@ package com.android.settings.dashboard;
|
||||
import android.app.Activity;
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.ComponentName;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.os.Bundle;
|
||||
@@ -99,13 +100,13 @@ public class SummaryLoader {
|
||||
Log.d(TAG, "setSummary " + tile.getDescription() + " - " + summary);
|
||||
}
|
||||
|
||||
updateSummaryIfNeeded(tile, summary);
|
||||
updateSummaryIfNeeded(mActivity.getApplicationContext(), tile, summary);
|
||||
});
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
void updateSummaryIfNeeded(Tile tile, CharSequence summary) {
|
||||
if (TextUtils.equals(tile.summary, summary)) {
|
||||
void updateSummaryIfNeeded(Context context, Tile tile, CharSequence summary) {
|
||||
if (TextUtils.equals(tile.getSummary(context), summary)) {
|
||||
if (DEBUG) {
|
||||
Log.d(TAG, "Summary doesn't change, skipping summary update for "
|
||||
+ tile.getDescription());
|
||||
@@ -113,7 +114,7 @@ public class SummaryLoader {
|
||||
return;
|
||||
}
|
||||
mSummaryTextMap.put(mDashboardFeatureProvider.getDashboardKeyForTile(tile), summary);
|
||||
tile.summary = summary;
|
||||
tile.overrideSummary(summary);
|
||||
if (mSummaryConsumer != null) {
|
||||
mSummaryConsumer.notifySummaryChanged(tile);
|
||||
} else {
|
||||
@@ -216,7 +217,7 @@ public class SummaryLoader {
|
||||
for (Tile tile : category.getTiles()) {
|
||||
final String key = mDashboardFeatureProvider.getDashboardKeyForTile(tile);
|
||||
if (mSummaryTextMap.containsKey(key)) {
|
||||
tile.summary = mSummaryTextMap.get(key);
|
||||
tile.overrideSummary(mSummaryTextMap.get(key));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -19,6 +19,7 @@ package com.android.settings.dashboard;
|
||||
import static com.android.settingslib.drawer.TileUtils.META_DATA_KEY_ORDER;
|
||||
import static com.android.settingslib.drawer.TileUtils.META_DATA_KEY_PROFILE;
|
||||
import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_KEYHINT;
|
||||
import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_SUMMARY;
|
||||
import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_TITLE;
|
||||
import static com.android.settingslib.drawer.TileUtils.PROFILE_ALL;
|
||||
import static com.android.settingslib.drawer.TileUtils.PROFILE_PRIMARY;
|
||||
@@ -107,6 +108,8 @@ public class DashboardFeatureProviderImplTest {
|
||||
mActivityInfo.name = "class";
|
||||
mActivityInfo.metaData = new Bundle();
|
||||
mActivityInfo.metaData.putInt(META_DATA_PREFERENCE_TITLE, R.string.settings_label);
|
||||
mActivityInfo.metaData.putInt(META_DATA_PREFERENCE_SUMMARY,
|
||||
R.string.about_settings_summary);
|
||||
doReturn(mPackageManager).when(mContext).getPackageManager();
|
||||
when(mPackageManager.resolveActivity(any(Intent.class), anyInt()))
|
||||
.thenReturn(new ResolveInfo());
|
||||
@@ -124,7 +127,6 @@ public class DashboardFeatureProviderImplTest {
|
||||
final Preference preference = new Preference(RuntimeEnvironment.application);
|
||||
final Tile tile = spy(new Tile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE));
|
||||
mActivityInfo.metaData.putInt(META_DATA_KEY_ORDER, 10);
|
||||
tile.summary = "summary";
|
||||
doReturn(Icon.createWithBitmap(Bitmap.createBitmap(1, 1, Bitmap.Config.RGB_565)))
|
||||
.when(tile).getIcon(any(Context.class));
|
||||
mActivityInfo.metaData.putString(SettingsActivity.META_DATA_KEY_FRAGMENT_CLASS, "HI");
|
||||
@@ -132,7 +134,8 @@ public class DashboardFeatureProviderImplTest {
|
||||
preference, tile, "123", Preference.DEFAULT_ORDER);
|
||||
|
||||
assertThat(preference.getTitle()).isEqualTo(mContext.getText(R.string.settings_label));
|
||||
assertThat(preference.getSummary()).isEqualTo(tile.summary);
|
||||
assertThat(preference.getSummary())
|
||||
.isEqualTo(mContext.getText(R.string.about_settings_summary));
|
||||
assertThat(preference.getIcon()).isNotNull();
|
||||
assertThat(preference.getFragment()).isEqualTo(
|
||||
mActivityInfo.metaData.getString(SettingsActivity.META_DATA_KEY_FRAGMENT_CLASS));
|
||||
@@ -232,7 +235,10 @@ public class DashboardFeatureProviderImplTest {
|
||||
@Test
|
||||
public void bindPreference_noSummary_shouldSetSummaryToPlaceholder() {
|
||||
final Preference preference = new Preference(RuntimeEnvironment.application);
|
||||
mActivityInfo.metaData.remove(META_DATA_PREFERENCE_SUMMARY);
|
||||
|
||||
final Tile tile = new Tile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
|
||||
|
||||
mImpl.bindPreferenceToTile(mActivity, mForceRoundedIcon, MetricsEvent.VIEW_UNKNOWN,
|
||||
preference, tile, null /*key */, Preference.DEFAULT_ORDER);
|
||||
|
||||
@@ -240,17 +246,6 @@ public class DashboardFeatureProviderImplTest {
|
||||
.isEqualTo(RuntimeEnvironment.application.getString(R.string.summary_placeholder));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void bindPreference_hasSummary_shouldSetSummary() {
|
||||
final Preference preference = new Preference(RuntimeEnvironment.application);
|
||||
final Tile tile = new Tile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
|
||||
tile.summary = "test";
|
||||
mImpl.bindPreferenceToTile(mActivity, mForceRoundedIcon, MetricsEvent.VIEW_UNKNOWN,
|
||||
preference, tile, null /*key */, Preference.DEFAULT_ORDER);
|
||||
|
||||
assertThat(preference.getSummary()).isEqualTo(tile.summary);
|
||||
}
|
||||
|
||||
@Test
|
||||
@Config(shadows = {ShadowTileUtils.class, ShadowThreadUtils.class})
|
||||
public void bindPreference_hasSummaryUri_shouldLoadSummaryFromContentProvider() {
|
||||
|
@@ -24,6 +24,7 @@ import static org.mockito.Mockito.verifyZeroInteractions;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.content.pm.ActivityInfo;
|
||||
import android.os.Bundle;
|
||||
|
||||
@@ -46,6 +47,7 @@ public class SummaryLoaderTest {
|
||||
private static final String SUMMARY_1 = "summary1";
|
||||
private static final String SUMMARY_2 = "summary2";
|
||||
|
||||
private Context mContext;
|
||||
private SummaryLoader mSummaryLoader;
|
||||
private boolean mCallbackInvoked;
|
||||
private Tile mTile;
|
||||
@@ -54,12 +56,13 @@ public class SummaryLoaderTest {
|
||||
@Before
|
||||
public void SetUp() {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
mContext = RuntimeEnvironment.application;
|
||||
mFeatureFactory = FakeFeatureFactory.setupForTest();
|
||||
final ActivityInfo activityInfo = new ActivityInfo();
|
||||
activityInfo.packageName = "pkg";
|
||||
activityInfo.name = "class";
|
||||
mTile = new Tile(activityInfo, CategoryKey.CATEGORY_HOMEPAGE);
|
||||
mTile.summary = SUMMARY_1;
|
||||
mTile.overrideSummary(SUMMARY_1);
|
||||
mCallbackInvoked = false;
|
||||
|
||||
final Activity activity = Robolectric.buildActivity(Activity.class).get();
|
||||
@@ -75,14 +78,14 @@ public class SummaryLoaderTest {
|
||||
|
||||
@Test
|
||||
public void testUpdateSummaryIfNeeded_SummaryIdentical_NoCallback() {
|
||||
mSummaryLoader.updateSummaryIfNeeded(mTile, SUMMARY_1);
|
||||
mSummaryLoader.updateSummaryIfNeeded(mContext, mTile, SUMMARY_1);
|
||||
|
||||
assertThat(mCallbackInvoked).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUpdateSummaryIfNeeded_SummaryChanged_HasCallback() {
|
||||
mSummaryLoader.updateSummaryIfNeeded(mTile, SUMMARY_2);
|
||||
mSummaryLoader.updateSummaryIfNeeded(mContext, mTile, SUMMARY_2);
|
||||
|
||||
assertThat(mCallbackInvoked).isTrue();
|
||||
}
|
||||
@@ -102,10 +105,10 @@ public class SummaryLoaderTest {
|
||||
when(mFeatureFactory.dashboardFeatureProvider.getDashboardKeyForTile(tile))
|
||||
.thenReturn(tile.getKey(RuntimeEnvironment.application));
|
||||
|
||||
mSummaryLoader.updateSummaryIfNeeded(tile, testSummary);
|
||||
tile.summary = null;
|
||||
mSummaryLoader.updateSummaryIfNeeded(mContext, tile, testSummary);
|
||||
tile.overrideSummary(null);
|
||||
mSummaryLoader.updateSummaryToCache(category);
|
||||
|
||||
assertThat(tile.summary).isEqualTo(testSummary);
|
||||
assertThat(tile.getSummary(mContext)).isEqualTo(testSummary);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user