Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1aaeb38e authored by John Johnson's avatar John Johnson
Browse files

Launch card intent from qs tile when flag is enabled

Bug: 378469025
Test: QuickAccessWalletTileTest
Flag: android.service.quickaccesswallet.launch_selected_card_from_qs_tile

Change-Id: I7d66d7b5144d6473136806c60c2dcf3a23ff7761
parent 7f80719d
Loading
Loading
Loading
Loading
+33 −0
Original line number Diff line number Diff line
@@ -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);

@@ -246,6 +251,34 @@ public class QuickAccessWalletTileTest extends SysuiTestCase {
                /* hasCard= */ eq(true));
    }

    @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();
+10 −2
Original line number Diff line number Diff line
@@ -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
+18 −0
Original line number Diff line number Diff line
@@ -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);
+1 −0
Original line number Diff line number Diff line
@@ -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);