From c617ae851d80ee9bfd2c6565b5ff578063a85387 Mon Sep 17 00:00:00 2001 From: Matt Pietal Date: Wed, 4 Jan 2023 21:39:43 +0000 Subject: [PATCH] Update wallet setting availability For devices that don't support wallet, don't even show the setting in a disabled state, which can cause confusion and lead the user to believe they can enable it somehow. Fixes: 251089510 Test: WalletPrivacyPreferenceControllerTest Change-Id: I5d60957f24712bb4d75e72fa5f64cab35b6d6a5f --- .../WalletPrivacyPreferenceController.java | 9 ++++++--- ...WalletPrivacyPreferenceControllerTest.java | 20 ++++++++++++++++++- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/src/com/android/settings/display/WalletPrivacyPreferenceController.java b/src/com/android/settings/display/WalletPrivacyPreferenceController.java index fe14a40a01a..f40e8386952 100644 --- a/src/com/android/settings/display/WalletPrivacyPreferenceController.java +++ b/src/com/android/settings/display/WalletPrivacyPreferenceController.java @@ -64,15 +64,18 @@ public class WalletPrivacyPreferenceController extends TogglePreferenceControlle public int getAvailabilityStatus() { if (CustomizableLockScreenUtils.isFeatureEnabled(mContext)) { return UNSUPPORTED_ON_DEVICE; + } else if (!isEnabled()) { + return UNSUPPORTED_ON_DEVICE; + } else if (!isSecure()) { + return DISABLED_DEPENDENT_SETTING; } - - return isEnabled() && isSecure() ? AVAILABLE : DISABLED_DEPENDENT_SETTING; + return AVAILABLE; } @Override public void updateState(Preference preference) { super.updateState(preference); - preference.setEnabled(getAvailabilityStatus() != DISABLED_DEPENDENT_SETTING); + preference.setEnabled(getAvailabilityStatus() == AVAILABLE); refreshSummary(preference); } diff --git a/tests/robotests/src/com/android/settings/display/WalletPrivacyPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/display/WalletPrivacyPreferenceControllerTest.java index 73f4946f9af..32b8b66c45f 100644 --- a/tests/robotests/src/com/android/settings/display/WalletPrivacyPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/display/WalletPrivacyPreferenceControllerTest.java @@ -141,11 +141,29 @@ public class WalletPrivacyPreferenceControllerTest { } @Test - public void getAvailabilityStatus_noService_returnsDisabled() { + public void getAvailabilityStatus_noServiceAndIsSecure_returnsUnsupported() { when(mClient.isWalletServiceAvailable()).thenReturn(false); when(mLockPatternUtils.isSecure(anyInt())).thenReturn(true); + assertThat(mController.getAvailabilityStatus()).isEqualTo( + BasePreferenceController.UNSUPPORTED_ON_DEVICE); + } + + @Test + public void getAvailabilityStatus_hasServiceButNotSecure_returnsDisabled() { + when(mClient.isWalletServiceAvailable()).thenReturn(true); + when(mLockPatternUtils.isSecure(anyInt())).thenReturn(false); + assertThat(mController.getAvailabilityStatus()).isEqualTo( BasePreferenceController.DISABLED_DEPENDENT_SETTING); } + + @Test + public void getAvailabilityStatus_hasServiceAndIsSecure_returnsAvailable() { + when(mClient.isWalletServiceAvailable()).thenReturn(true); + when(mLockPatternUtils.isSecure(anyInt())).thenReturn(true); + + assertThat(mController.getAvailabilityStatus()).isEqualTo( + BasePreferenceController.AVAILABLE); + } }