diff --git a/src/com/android/settings/dashboard/DashboardAdapter.java b/src/com/android/settings/dashboard/DashboardAdapter.java index abeecd97f25..5a8df911373 100644 --- a/src/com/android/settings/dashboard/DashboardAdapter.java +++ b/src/com/android/settings/dashboard/DashboardAdapter.java @@ -356,8 +356,9 @@ public class DashboardAdapter extends RecyclerView.Adapter { final Map 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); diff --git a/src/com/android/settings/dashboard/DashboardFragment.java b/src/com/android/settings/dashboard/DashboardFragment.java index cdd7d0e81df..9f0acaa3486 100644 --- a/src/com/android/settings/dashboard/DashboardFragment.java +++ b/src/com/android/settings/dashboard/DashboardFragment.java @@ -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 diff --git a/src/com/android/settings/dashboard/SummaryLoader.java b/src/com/android/settings/dashboard/SummaryLoader.java index dbca535ece5..cfb64efdeb0 100644 --- a/src/com/android/settings/dashboard/SummaryLoader.java +++ b/src/com/android/settings/dashboard/SummaryLoader.java @@ -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)); } } } diff --git a/tests/robotests/src/com/android/settings/dashboard/DashboardFeatureProviderImplTest.java b/tests/robotests/src/com/android/settings/dashboard/DashboardFeatureProviderImplTest.java index efebefd0892..d49e4fbb057 100644 --- a/tests/robotests/src/com/android/settings/dashboard/DashboardFeatureProviderImplTest.java +++ b/tests/robotests/src/com/android/settings/dashboard/DashboardFeatureProviderImplTest.java @@ -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() { diff --git a/tests/robotests/src/com/android/settings/dashboard/SummaryLoaderTest.java b/tests/robotests/src/com/android/settings/dashboard/SummaryLoaderTest.java index 06d5a96de9b..3726fb4d2bd 100644 --- a/tests/robotests/src/com/android/settings/dashboard/SummaryLoaderTest.java +++ b/tests/robotests/src/com/android/settings/dashboard/SummaryLoaderTest.java @@ -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); } }