Merge "Do not load drawable for wallet card if the card image icon iscreated with content URI." into sc-dev

This commit is contained in:
Silin Huang
2023-05-09 00:36:18 +00:00
committed by Android (Google) Code Review
3 changed files with 43 additions and 3 deletions

View File

@@ -16,6 +16,7 @@
package com.android.systemui.qs.tiles;
import static android.graphics.drawable.Icon.TYPE_URI;
import static android.provider.Settings.Secure.NFC_PAYMENT_DEFAULT_COMPONENT;
import static com.android.systemui.wallet.controller.QuickAccessWalletController.WalletChangeEvent.DEFAULT_PAYMENT_APP_CHANGE;
@@ -246,7 +247,12 @@ public class QuickAccessWalletTile extends QSTileImpl<QSTile.State> {
return;
}
mSelectedCard = cards.get(selectedIndex);
mCardViewDrawable = mSelectedCard.getCardImage().loadDrawable(mContext);
android.graphics.drawable.Icon cardImageIcon = mSelectedCard.getCardImage();
if (cardImageIcon.getType() == TYPE_URI) {
mCardViewDrawable = null;
} else {
mCardViewDrawable = mSelectedCard.getCardImage().loadDrawable(mContext);
}
refreshState();
}

View File

@@ -319,7 +319,12 @@ public class WalletScreenController implements
*/
QAWalletCardViewInfo(Context context, WalletCard walletCard) {
mWalletCard = walletCard;
mCardDrawable = mWalletCard.getCardImage().loadDrawable(context);
Icon cardImageIcon = mWalletCard.getCardImage();
if (cardImageIcon.getType() == Icon.TYPE_URI) {
mCardDrawable = null;
} else {
mCardDrawable = mWalletCard.getCardImage().loadDrawable(context);
}
Icon icon = mWalletCard.getCardIcon();
mIconDrawable = icon == null ? null : icon.loadDrawable(context);
}

View File

@@ -91,8 +91,11 @@ public class QuickAccessWalletTileTest extends SysuiTestCase {
private static final String CARD_ID = "card_id";
private static final String LABEL = "QAW";
private static final String CARD_DESCRIPTION = "•••• 1234";
private static final Icon CARD_IMAGE =
Icon.createWithBitmap(Bitmap.createBitmap(70, 50, Bitmap.Config.ARGB_8888));
private static final int PRIMARY_USER_ID = 0;
private static final int SECONDARY_USER_ID = 10;
private final Drawable mTileIcon = mContext.getDrawable(R.drawable.ic_qs_wallet);
private final Intent mWalletIntent = new Intent(QuickAccessWalletService.ACTION_VIEW_WALLET)
@@ -119,6 +122,8 @@ public class QuickAccessWalletTileTest extends SysuiTestCase {
private SecureSettings mSecureSettings;
@Mock
private QuickAccessWalletController mController;
@Mock
private Icon mCardImage;
@Captor
ArgumentCaptor<Intent> mIntentCaptor;
@Captor
@@ -144,6 +149,8 @@ public class QuickAccessWalletTileTest extends SysuiTestCase {
when(mQuickAccessWalletClient.isWalletServiceAvailable()).thenReturn(true);
when(mQuickAccessWalletClient.isWalletFeatureAvailableWhenDeviceLocked()).thenReturn(true);
when(mController.getWalletClient()).thenReturn(mQuickAccessWalletClient);
when(mCardImage.getType()).thenReturn(Icon.TYPE_URI);
when(mCardImage.loadDrawableAsUser(any(), eq(SECONDARY_USER_ID))).thenReturn(null);
mTile = new QuickAccessWalletTile(
mHost,
@@ -415,6 +422,28 @@ public class QuickAccessWalletTileTest extends SysuiTestCase {
assertNotNull(mTile.getState().sideViewCustomDrawable);
}
@Test
public void testQueryCards_notCurrentUser_hasCards_noSideViewDrawable() {
when(mKeyguardStateController.isUnlocked()).thenReturn(true);
PendingIntent pendingIntent =
PendingIntent.getActivity(mContext, 0, mWalletIntent, PendingIntent.FLAG_IMMUTABLE);
WalletCard walletCard =
new WalletCard.Builder(
CARD_ID, mCardImage, CARD_DESCRIPTION, pendingIntent).build();
GetWalletCardsResponse response =
new GetWalletCardsResponse(Collections.singletonList(walletCard), 0);
mTile.handleSetListening(true);
verify(mController).queryWalletCards(mCallbackCaptor.capture());
mCallbackCaptor.getValue().onWalletCardsRetrieved(response);
mTestableLooper.processAllMessages();
assertNull(mTile.getState().sideViewCustomDrawable);
}
@Test
public void testQueryCards_noCards_notUpdateSideViewDrawable() {
setUpWalletCard(/* hasCard= */ false);
@@ -462,6 +491,6 @@ public class QuickAccessWalletTileTest extends SysuiTestCase {
private WalletCard createWalletCard(Context context) {
PendingIntent pendingIntent =
PendingIntent.getActivity(context, 0, mWalletIntent, PendingIntent.FLAG_IMMUTABLE);
return new WalletCard.Builder(CARD_ID, CARD_IMAGE, "•••• 1234", pendingIntent).build();
return new WalletCard.Builder(CARD_ID, CARD_IMAGE, CARD_DESCRIPTION, pendingIntent).build();
}
}