diff options
| author | 2024-12-02 17:27:12 +0000 | |
|---|---|---|
| committer | 2024-12-02 17:27:12 +0000 | |
| commit | 5dbffb23260123c3c1f671b3411b46e1e5438d38 (patch) | |
| tree | 5eda031c54ed49d3d2e5a456b76bdef8cc7893e5 | |
| parent | e78f35a12d4745de12e139f3881d37d3774a64a5 (diff) | |
| parent | 1aaeb38e25443572d48505599494f27cc142f242 (diff) | |
Merge "Launch card intent from qs tile when flag is enabled" into main
4 files changed, 62 insertions, 2 deletions
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/QuickAccessWalletTileTest.java b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/QuickAccessWalletTileTest.java index 03c1f92aad4c..4068d9fd7f3d 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/QuickAccessWalletTileTest.java +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/QuickAccessWalletTileTest.java @@ -46,6 +46,9 @@ import android.graphics.drawable.Drawable; import android.graphics.drawable.Icon; import android.os.Handler; import android.os.UserHandle; +import android.platform.test.annotations.DisableFlags; +import android.platform.test.annotations.EnableFlags; +import android.service.quickaccesswallet.Flags; import android.service.quickaccesswallet.GetWalletCardsError; import android.service.quickaccesswallet.GetWalletCardsResponse; import android.service.quickaccesswallet.QuickAccessWalletClient; @@ -221,6 +224,7 @@ public class QuickAccessWalletTileTest extends SysuiTestCase { } @Test + @DisableFlags({Flags.FLAG_LAUNCH_SELECTED_CARD_FROM_QS_TILE}) public void testHandleClick_startQuickAccessUiIntent_noCard() { setUpWalletCard(/* hasCard= */ false); @@ -234,6 +238,7 @@ public class QuickAccessWalletTileTest extends SysuiTestCase { } @Test + @DisableFlags({Flags.FLAG_LAUNCH_SELECTED_CARD_FROM_QS_TILE}) public void testHandleClick_startQuickAccessUiIntent_hasCard() { setUpWalletCard(/* hasCard= */ true); @@ -247,6 +252,34 @@ public class QuickAccessWalletTileTest extends SysuiTestCase { } @Test + @EnableFlags({Flags.FLAG_LAUNCH_SELECTED_CARD_FROM_QS_TILE}) + public void testHandleClick_startCardIntent_noCard() { + setUpWalletCard(/* hasCard= */ false); + + mTile.handleClick(/* view= */ null); + mTestableLooper.processAllMessages(); + + verify(mController).startQuickAccessUiIntent( + eq(mActivityStarter), + eq(null), + /* hasCard= */ eq(false)); + } + + @Test + @EnableFlags({Flags.FLAG_LAUNCH_SELECTED_CARD_FROM_QS_TILE}) + public void testHandleClick_startCardIntent_hasCard() { + setUpWalletCard(/* hasCard= */ true); + + mTile.handleClick(null /* view */); + mTestableLooper.processAllMessages(); + + verify(mController).startWalletCardPendingIntent( + any(), + eq(mActivityStarter), + eq(null)); + } + + @Test public void testHandleUpdateState_updateLabelAndIcon() { QSTile.State state = new QSTile.State(); diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/QuickAccessWalletTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/QuickAccessWalletTile.java index 3d039e6ef824..04e72d5e119c 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/QuickAccessWalletTile.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/QuickAccessWalletTile.java @@ -142,8 +142,16 @@ public class QuickAccessWalletTile extends QSTileImpl<QSTile.State> { InteractionJankMonitor.CUJ_SHADE_APP_LAUNCH_FROM_QS_TILE); mUiHandler.post( - () -> mController.startQuickAccessUiIntent( - mActivityStarter, animationController, mSelectedCard != null)); + () -> { + if (android.service.quickaccesswallet.Flags.launchSelectedCardFromQsTile() + && mSelectedCard != null) { + mController.startWalletCardPendingIntent( + mSelectedCard, mActivityStarter, animationController); + } else { + mController.startQuickAccessUiIntent( + mActivityStarter, animationController, mSelectedCard != null); + } + }); } @Override diff --git a/packages/SystemUI/src/com/android/systemui/wallet/controller/QuickAccessWalletController.java b/packages/SystemUI/src/com/android/systemui/wallet/controller/QuickAccessWalletController.java index 1d32a4fd69d6..389b6fb4b0ef 100644 --- a/packages/SystemUI/src/com/android/systemui/wallet/controller/QuickAccessWalletController.java +++ b/packages/SystemUI/src/com/android/systemui/wallet/controller/QuickAccessWalletController.java @@ -32,6 +32,7 @@ import android.provider.Settings; import android.service.quickaccesswallet.GetWalletCardsRequest; import android.service.quickaccesswallet.QuickAccessWalletClient; import android.service.quickaccesswallet.QuickAccessWalletClientImpl; +import android.service.quickaccesswallet.WalletCard; import android.util.Log; import com.android.systemui.animation.ActivityTransitionAnimator; @@ -268,6 +269,23 @@ public class QuickAccessWalletController { }); } + /** + * Starts the {@link android.app.PendingIntent} for a {@link WalletCard}. + * + * This should be used to open a selected card from the QuickAccessWallet UI or + * the settings tile. + * + * @param activityStarter an {@link ActivityStarter} to launch the Intent or PendingIntent. + * @param animationController an {@link ActivityTransitionAnimator.Controller} to provide a + * smooth animation for the activity launch. + */ + public void startWalletCardPendingIntent(WalletCard card, + ActivityStarter activityStarter, + ActivityTransitionAnimator.Controller animationController) { + activityStarter.postStartActivityDismissingKeyguard( + card.getPendingIntent(), animationController); + } + private Intent getSysUiWalletIntent() { return new Intent(mContext, WalletActivity.class) .setAction(Intent.ACTION_VIEW); diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/SysuiTestCase.java b/packages/SystemUI/tests/utils/src/com/android/systemui/SysuiTestCase.java index 153a8be06adc..3e44364dc6a0 100644 --- a/packages/SystemUI/tests/utils/src/com/android/systemui/SysuiTestCase.java +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/SysuiTestCase.java @@ -118,6 +118,7 @@ public abstract class SysuiTestCase { android.net.platform.flags.Flags.class, android.os.Flags.class, android.service.controls.flags.Flags.class, + android.service.quickaccesswallet.Flags.class, com.android.internal.telephony.flags.Flags.class, com.android.server.notification.Flags.class, com.android.systemui.Flags.class); |