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
diff --git a/src/com/android/settings/display/WalletPrivacyPreferenceController.java b/src/com/android/settings/display/WalletPrivacyPreferenceController.java
index fe14a40..f40e838 100644
--- a/src/com/android/settings/display/WalletPrivacyPreferenceController.java
+++ b/src/com/android/settings/display/WalletPrivacyPreferenceController.java
@@ -64,15 +64,18 @@
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 73f4946..32b8b66 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 @@
}
@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);
+ }
}