From e30d9986f184bafcab3dbcab09ef5139db438456 Mon Sep 17 00:00:00 2001 From: Scottie Biddle Date: Wed, 30 Mar 2022 11:30:20 -0700 Subject: [PATCH] Delete attribute useTargetActivityForQuickAccess. In practice, the value of this xml attribute is always going to a function of whether or not getTargetActivityPendingIntent() is null-- when a QuickAccessWalletService sends us a PendingIntent, we will use that instead of the SystemUI card switcher activity. If the PendingIntent is null, we then fall back to our old behavior: * If the wallet is not currently showing any cards, launch the activity specified by getWalletIntent() (this is hardcoded in XML metadata). * If the wallet is currently showing cards, launch the SysUI switcher activity. Test: atest CtsQuickAccessWalletTestCases --retry-any-failure Test: atest QuickAccessWalletControllerTest Fixes: 218860062 Change-Id: I62f7ca507ebce29b03d6ce76bccaa6d736720a86 Merged-In: I4cfaa5b6035499c47a0ed8b1a4a5f3e1f0f50860 --- core/api/current.txt | 1 - core/api/test-current.txt | 1 - .../QuickAccessWalletClient.java | 11 ------ .../QuickAccessWalletClientImpl.java | 5 --- .../QuickAccessWalletService.java | 8 ++++ .../QuickAccessWalletServiceInfo.java | 16 ++------ .../QuickAccessWalletController.java | 39 +++++++++---------- .../QuickAccessWalletControllerTest.java | 7 +--- 8 files changed, 31 insertions(+), 57 deletions(-) diff --git a/core/api/current.txt b/core/api/current.txt index c33ee6563a970..281c8740082ef 100644 --- a/core/api/current.txt +++ b/core/api/current.txt @@ -1651,7 +1651,6 @@ package android { field public static final int useEmbeddedDex = 16844190; // 0x101059e field public static final int useIntrinsicSizeAsMinimum = 16843536; // 0x1010310 field public static final int useLevel = 16843167; // 0x101019f - field public static final int useTargetActivityForQuickAccess; field public static final int userVisible = 16843409; // 0x1010291 field public static final int usesCleartextTraffic = 16844012; // 0x10104ec field public static final int usesPermissionFlags = 16844356; // 0x1010644 diff --git a/core/api/test-current.txt b/core/api/test-current.txt index df5dcda6eb42c..afee15077e0e5 100644 --- a/core/api/test-current.txt +++ b/core/api/test-current.txt @@ -2401,7 +2401,6 @@ package android.service.quickaccesswallet { method public void notifyWalletDismissed(); method public void removeWalletServiceEventListener(@NonNull android.service.quickaccesswallet.QuickAccessWalletClient.WalletServiceEventListener); method public void selectWalletCard(@NonNull android.service.quickaccesswallet.SelectWalletCardRequest); - method public boolean useTargetActivityForQuickAccess(); } public static interface QuickAccessWalletClient.OnWalletCardsRetrievedCallback { diff --git a/core/java/android/service/quickaccesswallet/QuickAccessWalletClient.java b/core/java/android/service/quickaccesswallet/QuickAccessWalletClient.java index 091bf797e24b6..faa5b2fe34885 100644 --- a/core/java/android/service/quickaccesswallet/QuickAccessWalletClient.java +++ b/core/java/android/service/quickaccesswallet/QuickAccessWalletClient.java @@ -240,15 +240,4 @@ public interface QuickAccessWalletClient extends Closeable { */ @Nullable CharSequence getShortcutLongLabel(); - - /** - * Return whether the system should use the component specified by the - * {@link android:targetActivity} or - * {@link QuickAccessWalletService#getTargetActivityPendingIntent()} - * as the "quick access" , invoked directly by the system. - * If false, the system will use the built-in UI instead of the component specified - * in {@link android:targetActivity} or - * {@link QuickAccessWalletService#getTargetActivityPendingIntent()}. - */ - boolean useTargetActivityForQuickAccess(); } diff --git a/core/java/android/service/quickaccesswallet/QuickAccessWalletClientImpl.java b/core/java/android/service/quickaccesswallet/QuickAccessWalletClientImpl.java index a3304a9ca3865..024660bde6fe1 100644 --- a/core/java/android/service/quickaccesswallet/QuickAccessWalletClientImpl.java +++ b/core/java/android/service/quickaccesswallet/QuickAccessWalletClientImpl.java @@ -350,11 +350,6 @@ public class QuickAccessWalletClientImpl implements QuickAccessWalletClient, Ser return mServiceInfo == null ? null : mServiceInfo.getShortcutLongLabel(mContext); } - @Override - public boolean useTargetActivityForQuickAccess() { - return mServiceInfo.getUseTargetActivityForQuickAccess(); - } - private void connect() { mHandler.post(this::connectInternal); } diff --git a/core/java/android/service/quickaccesswallet/QuickAccessWalletService.java b/core/java/android/service/quickaccesswallet/QuickAccessWalletService.java index 70ccd6fbd590f..d004f34bc721e 100644 --- a/core/java/android/service/quickaccesswallet/QuickAccessWalletService.java +++ b/core/java/android/service/quickaccesswallet/QuickAccessWalletService.java @@ -336,6 +336,14 @@ public abstract class QuickAccessWalletService extends Service { mHandler.post(() -> sendWalletServiceEventInternal(serviceEvent)); } + /** + * Specify a {@link PendingIntent} to be launched as the "Quick Access" activity. + * + * This activity will be launched directly by the system in lieu of the card switcher activity + * provided by the system. + * + * In order to use the system-provided card switcher activity, return null from this method. + */ @Nullable public PendingIntent getTargetActivityPendingIntent() { return null; diff --git a/core/java/android/service/quickaccesswallet/QuickAccessWalletServiceInfo.java b/core/java/android/service/quickaccesswallet/QuickAccessWalletServiceInfo.java index cf4be739e05af..0d290eee5777d 100644 --- a/core/java/android/service/quickaccesswallet/QuickAccessWalletServiceInfo.java +++ b/core/java/android/service/quickaccesswallet/QuickAccessWalletServiceInfo.java @@ -144,23 +144,20 @@ class QuickAccessWalletServiceInfo { private final CharSequence mShortcutShortLabel; @Nullable private final CharSequence mShortcutLongLabel; - private final boolean mUseTargetActivityForQuickAccess; private static ServiceMetadata empty() { - return new ServiceMetadata(null, null, null, null, false); + return new ServiceMetadata(null, null, null, null); } private ServiceMetadata( String targetActivity, String settingsActivity, CharSequence shortcutShortLabel, - CharSequence shortcutLongLabel, - boolean useTargetActivityForQuickAccess) { + CharSequence shortcutLongLabel) { mTargetActivity = targetActivity; mSettingsActivity = settingsActivity; mShortcutShortLabel = shortcutShortLabel; mShortcutLongLabel = shortcutLongLabel; - mUseTargetActivityForQuickAccess = useTargetActivityForQuickAccess; } } @@ -194,11 +191,8 @@ class QuickAccessWalletServiceInfo { R.styleable.QuickAccessWalletService_shortcutShortLabel); CharSequence shortcutLongLabel = afsAttributes.getText( R.styleable.QuickAccessWalletService_shortcutLongLabel); - boolean useTargetActivityForQuickAccess = afsAttributes.getBoolean( - R.styleable.QuickAccessWalletService_useTargetActivityForQuickAccess, - false); return new ServiceMetadata(targetActivity, settingsActivity, shortcutShortLabel, - shortcutLongLabel, useTargetActivityForQuickAccess); + shortcutLongLabel); } finally { if (afsAttributes != null) { afsAttributes.recycle(); @@ -277,8 +271,4 @@ class QuickAccessWalletServiceInfo { CharSequence getServiceLabel(Context context) { return mServiceInfo.loadLabel(context.getPackageManager()); } - - boolean getUseTargetActivityForQuickAccess() { - return mServiceMetadata.mUseTargetActivityForQuickAccess; - } } 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 3c869e7ceb401..de25ca981a65d 100644 --- a/packages/SystemUI/src/com/android/systemui/wallet/controller/QuickAccessWalletController.java +++ b/packages/SystemUI/src/com/android/systemui/wallet/controller/QuickAccessWalletController.java @@ -211,27 +211,24 @@ public class QuickAccessWalletController { public void startQuickAccessUiIntent(ActivityStarter activityStarter, ActivityLaunchAnimator.Controller animationController, boolean hasCard) { - if (mQuickAccessWalletClient.useTargetActivityForQuickAccess() || !hasCard) { - mQuickAccessWalletClient.getWalletPendingIntent(mCallbackExecutor, - walletPendingIntent -> { - if (walletPendingIntent == null) { - Intent intent = mQuickAccessWalletClient.createWalletIntent(); - if (intent == null) { - intent = getSysUiWalletIntent(); - } - startQuickAccessViaIntent(intent, hasCard, activityStarter, - animationController); - return; - } - startQuickAccessViaPendingIntent(walletPendingIntent, - activityStarter, animationController); - }); - } else { - startQuickAccessViaIntent(getSysUiWalletIntent(), - hasCard, - activityStarter, - animationController); - } + mQuickAccessWalletClient.getWalletPendingIntent(mCallbackExecutor, + walletPendingIntent -> { + if (walletPendingIntent != null) { + startQuickAccessViaPendingIntent(walletPendingIntent, activityStarter, + animationController); + return; + } + Intent intent = null; + if (!hasCard) { + intent = mQuickAccessWalletClient.createWalletIntent(); + } + if (intent == null) { + intent = getSysUiWalletIntent(); + } + startQuickAccessViaIntent(intent, hasCard, activityStarter, + animationController); + + }); } private Intent getSysUiWalletIntent() { diff --git a/packages/SystemUI/tests/src/com/android/systemui/wallet/controller/QuickAccessWalletControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/wallet/controller/QuickAccessWalletControllerTest.java index 68027450045be..de2efc71b3a9e 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/wallet/controller/QuickAccessWalletControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/wallet/controller/QuickAccessWalletControllerTest.java @@ -198,8 +198,7 @@ public class QuickAccessWalletControllerTest extends SysuiTestCase { } @Test - public void getQuickAccessUiIntent_hasCards_useTargetActivityFalse_startsWalletActivity() { - when(mQuickAccessWalletClient.useTargetActivityForQuickAccess()).thenReturn(false); + public void getQuickAccessUiIntent_hasCards_noPendingIntent_startsWalletActivity() { mController.startQuickAccessUiIntent(mActivityStarter, mAnimationController, true); verify(mActivityStarter).startActivity(mIntentCaptor.capture(), eq(true), any(ActivityLaunchAnimator.Controller.class), eq(true)); @@ -211,8 +210,7 @@ public class QuickAccessWalletControllerTest extends SysuiTestCase { } @Test - public void getQuickAccessUiIntent_noCards_useTargetActivityFalse_isWalletActivity() { - when(mQuickAccessWalletClient.useTargetActivityForQuickAccess()).thenReturn(false); + public void getQuickAccessUiIntent_noCards_noPendingIntent_startsWalletActivity() { mController.startQuickAccessUiIntent(mActivityStarter, mAnimationController, false); verify(mActivityStarter).postStartActivityDismissingKeyguard(mIntentCaptor.capture(), eq(0), any(ActivityLaunchAnimator.Controller.class)); @@ -236,7 +234,6 @@ public class QuickAccessWalletControllerTest extends SysuiTestCase { PendingIntent.getActivity(mContext, 0, intent, PendingIntent.FLAG_IMMUTABLE)); return null; }).when(mQuickAccessWalletClient).getWalletPendingIntent(any(), any()); - when(mQuickAccessWalletClient.useTargetActivityForQuickAccess()).thenReturn(true); mController.startQuickAccessUiIntent(mActivityStarter, mAnimationController, true); verify(mActivityStarter).postStartActivityDismissingKeyguard(mPendingIntentCaptor.capture(), any(ActivityLaunchAnimator.Controller.class));