Merge changes from topics "remove_tile_summary_cache", "remove_tile_title"

* changes:
  Use getSummary() to get tile summary text.
  Use tile.getTitle(context) to get tile title.
This commit is contained in:
TreeHugger Robot
2018-08-21 19:01:31 +00:00
committed by Android (Google) Code Review
10 changed files with 67 additions and 64 deletions

View File

@@ -355,9 +355,10 @@ public class DashboardAdapter extends RecyclerView.Adapter<DashboardAdapter.Dash
mCache.updateIcon(tileIcon, icon); mCache.updateIcon(tileIcon, icon);
} }
holder.icon.setImageDrawable(icon); holder.icon.setImageDrawable(icon);
holder.title.setText(tile.title); holder.title.setText(tile.getTitle(mContext));
if (!TextUtils.isEmpty(tile.summary)) { final CharSequence summary = tile.getSummary(mContext);
holder.summary.setText(tile.summary); if (!TextUtils.isEmpty(summary)) {
holder.summary.setText(summary);
holder.summary.setVisibility(View.VISIBLE); holder.summary.setVisibility(View.VISIBLE);
} else { } else {
holder.summary.setVisibility(View.GONE); holder.summary.setVisibility(View.GONE);

View File

@@ -33,7 +33,6 @@ import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy; import java.lang.annotation.RetentionPolicy;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Objects;
/** /**
* Description about data list used in the DashboardAdapter. In the data list each item can be * Description about data list used in the DashboardAdapter. In the data list each item can be
@@ -147,7 +146,7 @@ public class DashboardData {
* Find the position of the Tile object. * Find the position of the Tile object.
* <p> * <p>
* First, try to find the exact identical instance of the tile object, if not found, * First, try to find the exact identical instance of the tile object, if not found,
* then try to find a tile has the same title. * then try to find a tile has the same id.
* *
* @param tile tile that need to be found * @param tile tile that need to be found
* @return position of the object, return INDEX_NOT_FOUND if object isn't in the list * @return position of the object, return INDEX_NOT_FOUND if object isn't in the list
@@ -158,7 +157,7 @@ public class DashboardData {
final Object entity = mItems.get(i).entity; final Object entity = mItems.get(i).entity;
if (entity == tile) { if (entity == tile) {
return i; return i;
} else if (entity instanceof Tile && tile.title.equals(((Tile) entity).title)) { } else if (entity instanceof Tile && tile.getId() == ((Tile) entity).getId()) {
return i; return i;
} }
} }
@@ -227,7 +226,7 @@ public class DashboardData {
final List<Tile> tiles = mCategory.getTiles(); final List<Tile> tiles = mCategory.getTiles();
for (int i = 0; i < tiles.size(); i++) { for (int i = 0; i < tiles.size(); i++) {
final Tile tile = tiles.get(i); final Tile tile = tiles.get(i);
addToItemList(tile, R.layout.dashboard_tile, Objects.hash(tile.title), addToItemList(tile, R.layout.dashboard_tile, tile.getId(),
true /* add */); true /* add */);
} }
} }
@@ -425,9 +424,11 @@ public class DashboardData {
final Tile localTile = (Tile) entity; final Tile localTile = (Tile) entity;
final Tile targetTile = (Tile) targetItem.entity; final Tile targetTile = (Tile) targetItem.entity;
// Only check title and summary for dashboard tile // Only check id and summary for dashboard tile
return TextUtils.equals(localTile.title, targetTile.title) return localTile.getId() == targetTile.getId()
&& TextUtils.equals(localTile.summary, targetTile.summary); && TextUtils.equals(
localTile.getSummaryReference(),
targetTile.getSummaryReference());
case TYPE_SUGGESTION_CONTAINER: case TYPE_SUGGESTION_CONTAINER:
case TYPE_CONDITION_CONTAINER: case TYPE_CONDITION_CONTAINER:
// Fall through to default // Fall through to default

View File

@@ -106,7 +106,7 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider {
if (pref == null) { if (pref == null) {
return; return;
} }
pref.setTitle(tile.title); pref.setTitle(tile.getTitle(activity.getApplicationContext()));
if (!TextUtils.isEmpty(key)) { if (!TextUtils.isEmpty(key)) {
pref.setKey(key); pref.setKey(key);
} else { } else {
@@ -172,8 +172,9 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider {
} }
private void bindSummary(Preference preference, Tile tile) { private void bindSummary(Preference preference, Tile tile) {
if (tile.summary != null) { final CharSequence summary = tile.getSummary(mContext);
preference.setSummary(tile.summary); if (summary != null) {
preference.setSummary(summary);
} else if (tile.getMetaData() != null } else if (tile.getMetaData() != null
&& tile.getMetaData().containsKey(META_DATA_PREFERENCE_SUMMARY_URI)) { && tile.getMetaData().containsKey(META_DATA_PREFERENCE_SUMMARY_URI)) {
// Set a placeholder summary before starting to fetch real summary, this is necessary // Set a placeholder summary before starting to fetch real summary, this is necessary
@@ -183,9 +184,9 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider {
ThreadUtils.postOnBackgroundThread(() -> { ThreadUtils.postOnBackgroundThread(() -> {
final Map<String, IContentProvider> providerMap = new ArrayMap<>(); final Map<String, IContentProvider> providerMap = new ArrayMap<>();
final String uri = tile.getMetaData().getString(META_DATA_PREFERENCE_SUMMARY_URI); 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); mContext, uri, providerMap, META_DATA_PREFERENCE_SUMMARY);
ThreadUtils.postOnMainThread(() -> preference.setSummary(summary)); ThreadUtils.postOnMainThread(() -> preference.setSummary(summaryFromUri));
}); });
} else { } else {
preference.setSummary(R.string.summary_placeholder); preference.setSummary(R.string.summary_placeholder);

View File

@@ -156,12 +156,12 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment
final String key = mDashboardFeatureProvider.getDashboardKeyForTile(tile); final String key = mDashboardFeatureProvider.getDashboardKeyForTile(tile);
final Preference pref = getPreferenceScreen().findPreference(key); final Preference pref = getPreferenceScreen().findPreference(key);
if (pref == null) { if (pref == null) {
Log.d(getLogTag(), Log.d(getLogTag(), String.format(
String.format("Can't find pref by key %s, skipping update summary %s/%s", "Can't find pref by key %s, skipping update summary %s",
key, tile.title, tile.summary)); key, tile.getDescription()));
return; return;
} }
pref.setSummary(tile.summary); pref.setSummary(tile.getSummary(pref.getContext()));
} }
@Override @Override

View File

@@ -18,6 +18,7 @@ package com.android.settings.dashboard;
import android.app.Activity; import android.app.Activity;
import android.content.BroadcastReceiver; import android.content.BroadcastReceiver;
import android.content.ComponentName; import android.content.ComponentName;
import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.IntentFilter; import android.content.IntentFilter;
import android.os.Bundle; import android.os.Bundle;
@@ -96,29 +97,30 @@ public class SummaryLoader {
return; return;
} }
if (DEBUG) { if (DEBUG) {
Log.d(TAG, "setSummary " + tile.title + " - " + summary); Log.d(TAG, "setSummary " + tile.getDescription() + " - " + summary);
} }
updateSummaryIfNeeded(tile, summary); updateSummaryIfNeeded(mActivity.getApplicationContext(), tile, summary);
}); });
} }
@VisibleForTesting @VisibleForTesting
void updateSummaryIfNeeded(Tile tile, CharSequence summary) { void updateSummaryIfNeeded(Context context, Tile tile, CharSequence summary) {
if (TextUtils.equals(tile.summary, summary)) { if (TextUtils.equals(tile.getSummary(context), summary)) {
if (DEBUG) { if (DEBUG) {
Log.d(TAG, "Summary doesn't change, skipping summary update for " + tile.title); Log.d(TAG, "Summary doesn't change, skipping summary update for "
+ tile.getDescription());
} }
return; return;
} }
mSummaryTextMap.put(mDashboardFeatureProvider.getDashboardKeyForTile(tile), summary); mSummaryTextMap.put(mDashboardFeatureProvider.getDashboardKeyForTile(tile), summary);
tile.summary = summary; tile.overrideSummary(summary);
if (mSummaryConsumer != null) { if (mSummaryConsumer != null) {
mSummaryConsumer.notifySummaryChanged(tile); mSummaryConsumer.notifySummaryChanged(tile);
} else { } else {
if (DEBUG) { if (DEBUG) {
Log.d(TAG, "SummaryConsumer is null, skipping summary update for " Log.d(TAG, "SummaryConsumer is null, skipping summary update for "
+ tile.title); + tile.getDescription());
} }
} }
} }
@@ -215,7 +217,7 @@ public class SummaryLoader {
for (Tile tile : category.getTiles()) { for (Tile tile : category.getTiles()) {
final String key = mDashboardFeatureProvider.getDashboardKeyForTile(tile); final String key = mDashboardFeatureProvider.getDashboardKeyForTile(tile);
if (mSummaryTextMap.containsKey(key)) { if (mSummaryTextMap.containsKey(key)) {
tile.summary = mSummaryTextMap.get(key); tile.overrideSummary(mSummaryTextMap.get(key));
} }
} }
} }

View File

@@ -16,6 +16,7 @@
package com.android.settings.accounts; package com.android.settings.accounts;
import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_KEYHINT; import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_KEYHINT;
import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_TITLE;
import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertThat;
@@ -65,7 +66,7 @@ public class AccountDetailDashboardFragmentTest {
public void setUp() { public void setUp() {
mContext = RuntimeEnvironment.application; mContext = RuntimeEnvironment.application;
mActivityInfo = new ActivityInfo(); mActivityInfo = new ActivityInfo();
mActivityInfo.packageName = "pkg"; mActivityInfo.packageName = mContext.getPackageName();
mActivityInfo.name = "clazz"; mActivityInfo.name = "clazz";
mActivityInfo.metaData = new Bundle(); mActivityInfo.metaData = new Bundle();
@@ -123,6 +124,7 @@ public class AccountDetailDashboardFragmentTest {
mActivityInfo.metaData.putString(META_DATA_PREFERENCE_KEYHINT, "key"); mActivityInfo.metaData.putString(META_DATA_PREFERENCE_KEYHINT, "key");
mActivityInfo.metaData.putString(METADATA_CATEGORY, CategoryKey.CATEGORY_ACCOUNT); mActivityInfo.metaData.putString(METADATA_CATEGORY, CategoryKey.CATEGORY_ACCOUNT);
mActivityInfo.metaData.putString(METADATA_ACCOUNT_TYPE, "com.abc"); mActivityInfo.metaData.putString(METADATA_ACCOUNT_TYPE, "com.abc");
mActivityInfo.metaData.putString(META_DATA_PREFERENCE_TITLE, "summary");
mActivityInfo.metaData.putString("com.android.settings.intent.action", mActivityInfo.metaData.putString("com.android.settings.intent.action",
Intent.ACTION_ASSIST); Intent.ACTION_ASSIST);
tile.userHandle = null; tile.userHandle = null;

View File

@@ -15,6 +15,8 @@
*/ */
package com.android.settings.dashboard; package com.android.settings.dashboard;
import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_TITLE;
import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.any;
@@ -95,6 +97,7 @@ public class DashboardAdapterTest {
mActivityInfo.packageName = "pkg"; mActivityInfo.packageName = "pkg";
mActivityInfo.name = "class"; mActivityInfo.name = "class";
mActivityInfo.metaData = new Bundle(); mActivityInfo.metaData = new Bundle();
mActivityInfo.metaData.putString(META_DATA_PREFERENCE_TITLE, "test-title");
when(mContext.getSystemService(Context.WINDOW_SERVICE)).thenReturn(mWindowManager); when(mContext.getSystemService(Context.WINDOW_SERVICE)).thenReturn(mWindowManager);
when(mContext.getResources()).thenReturn(mResources); when(mContext.getResources()).thenReturn(mResources);

View File

@@ -49,13 +49,12 @@ import org.mockito.MockitoAnnotations;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Objects;
@RunWith(SettingsRobolectricTestRunner.class) @RunWith(SettingsRobolectricTestRunner.class)
public class DashboardDataTest { public class DashboardDataTest {
private static final String TEST_SUGGESTION_TITLE = "Use fingerprint"; private static final String TEST_SUGGESTION_TITLE = "Use fingerprint";
private static final String TEST_CATEGORY_TILE_TITLE = "Display"; private static final int TEST_TILE_ID = 12345;
private DashboardData mDashboardDataWithOneConditions; private DashboardData mDashboardDataWithOneConditions;
private DashboardData mDashboardDataWithTwoConditions; private DashboardData mDashboardDataWithTwoConditions;
@@ -95,7 +94,7 @@ public class DashboardDataTest {
twoItemsConditions.add(mSecondCondition); twoItemsConditions.add(mSecondCondition);
// Build category // Build category
mTestCategoryTile.title = TEST_CATEGORY_TILE_TITLE; when(mTestCategoryTile.getId()).thenReturn(TEST_TILE_ID);
mDashboardCategory.addTile(mTestCategoryTile); mDashboardCategory.addTile(mTestCategoryTile);
@@ -132,7 +131,7 @@ public class DashboardDataTest {
assertThat(items.get(1).id).isEqualTo(STABLE_ID_SUGGESTION_CONDITION_DIVIDER); assertThat(items.get(1).id).isEqualTo(STABLE_ID_SUGGESTION_CONDITION_DIVIDER);
assertThat(items.get(2).id).isEqualTo(STABLE_ID_CONDITION_CONTAINER); assertThat(items.get(2).id).isEqualTo(STABLE_ID_CONDITION_CONTAINER);
assertThat(items.get(3).id).isEqualTo(STABLE_ID_CONDITION_FOOTER); assertThat(items.get(3).id).isEqualTo(STABLE_ID_CONDITION_FOOTER);
assertThat(items.get(4).id).isEqualTo(Objects.hash(mTestCategoryTile.title)); assertThat(items.get(4).id).isEqualTo(TEST_TILE_ID);
} }
@Test @Test
@@ -185,15 +184,17 @@ public class DashboardDataTest {
@Test @Test
public void testGetPositionByTile_equalTitle_returnPositionFound() { public void testGetPositionByTile_equalTitle_returnPositionFound() {
final Tile tile = mock(Tile.class); final Tile tile = mock(Tile.class);
tile.title = TEST_CATEGORY_TILE_TITLE; when(tile.getId()).thenReturn(TEST_TILE_ID);
final int position = mDashboardDataWithOneConditions.getPositionByTile(tile); final int position = mDashboardDataWithOneConditions.getPositionByTile(tile);
assertThat(position).isNotEqualTo(DashboardData.POSITION_NOT_FOUND); assertThat(position).isNotEqualTo(DashboardData.POSITION_NOT_FOUND);
} }
@Test @Test
public void testGetPositionByTile_notExisted_returnNotFound() { public void testGetPositionByTile_notExisted_returnNotFound() {
final Tile tile = mock(Tile.class); final Tile tile = mock(Tile.class);
tile.title = ""; when(tile.getId()).thenReturn(123);
final int position = mDashboardDataWithOneConditions.getPositionByTile(tile); final int position = mDashboardDataWithOneConditions.getPositionByTile(tile);
assertThat(position).isEqualTo(DashboardData.POSITION_NOT_FOUND); assertThat(position).isEqualTo(DashboardData.POSITION_NOT_FOUND);
} }

View File

@@ -19,6 +19,8 @@ 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_ORDER;
import static com.android.settingslib.drawer.TileUtils.META_DATA_KEY_PROFILE; 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_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_ALL;
import static com.android.settingslib.drawer.TileUtils.PROFILE_PRIMARY; import static com.android.settingslib.drawer.TileUtils.PROFILE_PRIMARY;
@@ -99,11 +101,15 @@ public class DashboardFeatureProviderImplTest {
public void setUp() { public void setUp() {
MockitoAnnotations.initMocks(this); MockitoAnnotations.initMocks(this);
mContext = spy(RuntimeEnvironment.application); mContext = spy(RuntimeEnvironment.application);
doReturn(RuntimeEnvironment.application).when(mActivity).getApplicationContext();
mForceRoundedIcon = false; mForceRoundedIcon = false;
mActivityInfo = new ActivityInfo(); mActivityInfo = new ActivityInfo();
mActivityInfo.packageName = "pkg"; mActivityInfo.packageName = mContext.getPackageName();
mActivityInfo.name = "class"; mActivityInfo.name = "class";
mActivityInfo.metaData = new Bundle(); 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(); doReturn(mPackageManager).when(mContext).getPackageManager();
when(mPackageManager.resolveActivity(any(Intent.class), anyInt())) when(mPackageManager.resolveActivity(any(Intent.class), anyInt()))
.thenReturn(new ResolveInfo()); .thenReturn(new ResolveInfo());
@@ -121,16 +127,15 @@ public class DashboardFeatureProviderImplTest {
final Preference preference = new Preference(RuntimeEnvironment.application); final Preference preference = new Preference(RuntimeEnvironment.application);
final Tile tile = spy(new Tile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE)); final Tile tile = spy(new Tile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE));
mActivityInfo.metaData.putInt(META_DATA_KEY_ORDER, 10); mActivityInfo.metaData.putInt(META_DATA_KEY_ORDER, 10);
tile.title = "title";
tile.summary = "summary";
doReturn(Icon.createWithBitmap(Bitmap.createBitmap(1, 1, Bitmap.Config.RGB_565))) doReturn(Icon.createWithBitmap(Bitmap.createBitmap(1, 1, Bitmap.Config.RGB_565)))
.when(tile).getIcon(any(Context.class)); .when(tile).getIcon(any(Context.class));
mActivityInfo.metaData.putString(SettingsActivity.META_DATA_KEY_FRAGMENT_CLASS, "HI"); mActivityInfo.metaData.putString(SettingsActivity.META_DATA_KEY_FRAGMENT_CLASS, "HI");
mImpl.bindPreferenceToTile(mActivity, mForceRoundedIcon, MetricsEvent.SETTINGS_GESTURES, mImpl.bindPreferenceToTile(mActivity, mForceRoundedIcon, MetricsEvent.SETTINGS_GESTURES,
preference, tile, "123", Preference.DEFAULT_ORDER); preference, tile, "123", Preference.DEFAULT_ORDER);
assertThat(preference.getTitle()).isEqualTo(tile.title); 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.getIcon()).isNotNull();
assertThat(preference.getFragment()).isEqualTo( assertThat(preference.getFragment()).isEqualTo(
mActivityInfo.metaData.getString(SettingsActivity.META_DATA_KEY_FRAGMENT_CLASS)); mActivityInfo.metaData.getString(SettingsActivity.META_DATA_KEY_FRAGMENT_CLASS));
@@ -159,9 +164,6 @@ public class DashboardFeatureProviderImplTest {
tile.userHandle.add(mock(UserHandle.class)); tile.userHandle.add(mock(UserHandle.class));
tile.userHandle.add(mock(UserHandle.class)); tile.userHandle.add(mock(UserHandle.class));
when(mActivity.getApplicationContext().getSystemService(Context.USER_SERVICE))
.thenReturn(mUserManager);
mImpl.bindPreferenceToTile(mActivity, mForceRoundedIcon, MetricsEvent.SETTINGS_GESTURES, mImpl.bindPreferenceToTile(mActivity, mForceRoundedIcon, MetricsEvent.SETTINGS_GESTURES,
preference, tile, "123", Preference.DEFAULT_ORDER); preference, tile, "123", Preference.DEFAULT_ORDER);
preference.getOnPreferenceClickListener().onPreferenceClick(null); preference.getOnPreferenceClickListener().onPreferenceClick(null);
@@ -199,11 +201,6 @@ public class DashboardFeatureProviderImplTest {
tile.userHandle = new ArrayList<>(); tile.userHandle = new ArrayList<>();
tile.userHandle.add(mock(UserHandle.class)); tile.userHandle.add(mock(UserHandle.class));
when(mActivity.getSystemService(Context.USER_SERVICE))
.thenReturn(mUserManager);
when(mActivity.getApplicationContext().getPackageName())
.thenReturn(RuntimeEnvironment.application.getPackageName());
mImpl.bindPreferenceToTile(mActivity, mForceRoundedIcon, MetricsEvent.SETTINGS_GESTURES, mImpl.bindPreferenceToTile(mActivity, mForceRoundedIcon, MetricsEvent.SETTINGS_GESTURES,
preference, tile, "123", Preference.DEFAULT_ORDER); preference, tile, "123", Preference.DEFAULT_ORDER);
preference.getOnPreferenceClickListener().onPreferenceClick(null); preference.getOnPreferenceClickListener().onPreferenceClick(null);
@@ -238,7 +235,10 @@ public class DashboardFeatureProviderImplTest {
@Test @Test
public void bindPreference_noSummary_shouldSetSummaryToPlaceholder() { public void bindPreference_noSummary_shouldSetSummaryToPlaceholder() {
final Preference preference = new Preference(RuntimeEnvironment.application); final Preference preference = new Preference(RuntimeEnvironment.application);
mActivityInfo.metaData.remove(META_DATA_PREFERENCE_SUMMARY);
final Tile tile = new Tile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE); final Tile tile = new Tile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
mImpl.bindPreferenceToTile(mActivity, mForceRoundedIcon, MetricsEvent.VIEW_UNKNOWN, mImpl.bindPreferenceToTile(mActivity, mForceRoundedIcon, MetricsEvent.VIEW_UNKNOWN,
preference, tile, null /*key */, Preference.DEFAULT_ORDER); preference, tile, null /*key */, Preference.DEFAULT_ORDER);
@@ -246,17 +246,6 @@ public class DashboardFeatureProviderImplTest {
.isEqualTo(RuntimeEnvironment.application.getString(R.string.summary_placeholder)); .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 @Test
@Config(shadows = {ShadowTileUtils.class, ShadowThreadUtils.class}) @Config(shadows = {ShadowTileUtils.class, ShadowThreadUtils.class})
public void bindPreference_hasSummaryUri_shouldLoadSummaryFromContentProvider() { public void bindPreference_hasSummaryUri_shouldLoadSummaryFromContentProvider() {

View File

@@ -24,6 +24,7 @@ import static org.mockito.Mockito.verifyZeroInteractions;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
import android.app.Activity; import android.app.Activity;
import android.content.Context;
import android.content.pm.ActivityInfo; import android.content.pm.ActivityInfo;
import android.os.Bundle; import android.os.Bundle;
@@ -46,6 +47,7 @@ public class SummaryLoaderTest {
private static final String SUMMARY_1 = "summary1"; private static final String SUMMARY_1 = "summary1";
private static final String SUMMARY_2 = "summary2"; private static final String SUMMARY_2 = "summary2";
private Context mContext;
private SummaryLoader mSummaryLoader; private SummaryLoader mSummaryLoader;
private boolean mCallbackInvoked; private boolean mCallbackInvoked;
private Tile mTile; private Tile mTile;
@@ -54,12 +56,13 @@ public class SummaryLoaderTest {
@Before @Before
public void SetUp() { public void SetUp() {
MockitoAnnotations.initMocks(this); MockitoAnnotations.initMocks(this);
mContext = RuntimeEnvironment.application;
mFeatureFactory = FakeFeatureFactory.setupForTest(); mFeatureFactory = FakeFeatureFactory.setupForTest();
final ActivityInfo activityInfo = new ActivityInfo(); final ActivityInfo activityInfo = new ActivityInfo();
activityInfo.packageName = "pkg"; activityInfo.packageName = "pkg";
activityInfo.name = "class"; activityInfo.name = "class";
mTile = new Tile(activityInfo, CategoryKey.CATEGORY_HOMEPAGE); mTile = new Tile(activityInfo, CategoryKey.CATEGORY_HOMEPAGE);
mTile.summary = SUMMARY_1; mTile.overrideSummary(SUMMARY_1);
mCallbackInvoked = false; mCallbackInvoked = false;
final Activity activity = Robolectric.buildActivity(Activity.class).get(); final Activity activity = Robolectric.buildActivity(Activity.class).get();
@@ -75,14 +78,14 @@ public class SummaryLoaderTest {
@Test @Test
public void testUpdateSummaryIfNeeded_SummaryIdentical_NoCallback() { public void testUpdateSummaryIfNeeded_SummaryIdentical_NoCallback() {
mSummaryLoader.updateSummaryIfNeeded(mTile, SUMMARY_1); mSummaryLoader.updateSummaryIfNeeded(mContext, mTile, SUMMARY_1);
assertThat(mCallbackInvoked).isFalse(); assertThat(mCallbackInvoked).isFalse();
} }
@Test @Test
public void testUpdateSummaryIfNeeded_SummaryChanged_HasCallback() { public void testUpdateSummaryIfNeeded_SummaryChanged_HasCallback() {
mSummaryLoader.updateSummaryIfNeeded(mTile, SUMMARY_2); mSummaryLoader.updateSummaryIfNeeded(mContext, mTile, SUMMARY_2);
assertThat(mCallbackInvoked).isTrue(); assertThat(mCallbackInvoked).isTrue();
} }
@@ -102,10 +105,10 @@ public class SummaryLoaderTest {
when(mFeatureFactory.dashboardFeatureProvider.getDashboardKeyForTile(tile)) when(mFeatureFactory.dashboardFeatureProvider.getDashboardKeyForTile(tile))
.thenReturn(tile.getKey(RuntimeEnvironment.application)); .thenReturn(tile.getKey(RuntimeEnvironment.application));
mSummaryLoader.updateSummaryIfNeeded(tile, testSummary); mSummaryLoader.updateSummaryIfNeeded(mContext, tile, testSummary);
tile.summary = null; tile.overrideSummary(null);
mSummaryLoader.updateSummaryToCache(category); mSummaryLoader.updateSummaryToCache(category);
assertThat(tile.summary).isEqualTo(testSummary); assertThat(tile.getSummary(mContext)).isEqualTo(testSummary);
} }
} }