Do not load drawable for wallet card if the card image icon iscreated
with content URI. This prevents the primary user from accessing the secondary user's photos for QAW card images. Test: manually, atest Bug: 272020068 Change-Id: I6932c5131b3c795bac4ea9b537938e7ef4f3ea4e
This commit is contained in:
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user