private @NonNull UserInfo mUser;
private @Nullable StorageItemPreference mStoragePreference;
+ private Drawable mUserIcon;
private long mSize;
private long mTotalSizeBytes;
group.setVisible(true);
group.addPreference(mStoragePreference);
+ maybeSetIcon();
}
}
@Override
public void handleUserIcons(SparseArray<Drawable> fetchedIcons) {
- Drawable userIcon = fetchedIcons.get(mUser.id);
- if (userIcon != null) {
- mStoragePreference.setIcon(userIcon);
+ mUserIcon = fetchedIcons.get(mUser.id);
+ maybeSetIcon();
+ }
+
+ private void maybeSetIcon() {
+ if (mUserIcon != null && mStoragePreference != null) {
+ mStoragePreference.setIcon(mUserIcon);
}
}
Preference preference = argumentCaptor.getValue();
assertThat(preference.getIcon()).isEqualTo(drawable);
}
+
+ @Test
+ public void setIcon_doesntNpeOnNullPreference() throws Exception {
+ SparseArray<Drawable> icons = new SparseArray<>();
+ Bitmap userBitmap =
+ BitmapFactory.decodeResource(
+ RuntimeEnvironment.application.getResources(), R.drawable.home);
+ UserIconDrawable drawable = new UserIconDrawable(100 /* size */).setIcon(userBitmap).bake();
+ icons.put(10, drawable);
+ mPrimaryUser.name = TEST_NAME;
+ mPrimaryUser.id = 10;
+
+ mController.handleUserIcons(icons);
+
+ // Doesn't crash
+ }
}