OSDN Git Service

Use getSummary() to get tile summary text.
authorFan Zhang <zhfan@google.com>
Mon, 20 Aug 2018 21:13:14 +0000 (14:13 -0700)
committerFan Zhang <zhfan@google.com>
Mon, 20 Aug 2018 21:13:14 +0000 (14:13 -0700)
Bug: 77600770
Test: robotests
Change-Id: Iecef09853bb49bc259502494912ed81d52e2d7ce

src/com/android/settings/dashboard/DashboardAdapter.java
src/com/android/settings/dashboard/DashboardData.java
src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java
src/com/android/settings/dashboard/DashboardFragment.java
src/com/android/settings/dashboard/SummaryLoader.java
tests/robotests/src/com/android/settings/dashboard/DashboardFeatureProviderImplTest.java
tests/robotests/src/com/android/settings/dashboard/SummaryLoaderTest.java

index abeecd9..5a8df91 100644 (file)
@@ -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);
index 7bc3c98..9feff58 100644 (file)
@@ -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
index b904f9d..3c0a65d 100644 (file)
@@ -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);
index cdd7d0e..9f0acaa 100644 (file)
@@ -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
index dbca535..cfb64ef 100644 (file)
@@ -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));
             }
         }
     }
index efebefd..d49e4fb 100644 (file)
@@ -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);
 
@@ -241,17 +247,6 @@ public class DashboardFeatureProviderImplTest {
     }
 
     @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() {
         final Preference preference = new Preference(RuntimeEnvironment.application);
index 06d5a96..3726fb4 100644 (file)
@@ -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);
     }
 }