Loading src/com/android/settings/applications/specialaccess/DefaultPaymentSettingsPreferenceController.java +18 −0 Original line number Diff line number Diff line Loading @@ -16,10 +16,14 @@ package com.android.settings.applications.specialaccess; import android.app.role.RoleManager; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.nfc.NfcAdapter; import android.nfc.cardemulation.CardEmulation; import android.os.UserManager; import android.permission.flags.Flags; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; Loading Loading @@ -61,6 +65,20 @@ public class DefaultPaymentSettingsPreferenceController extends BasePreferenceCo mPaymentSettingsEnabler = new PaymentSettingsEnabler(mContext, preference); } @Override public boolean handlePreferenceTreeClick(Preference preference) { if (Flags.walletRoleEnabled() && mPreferenceKey.equals(preference.getKey())) { RoleManager roleManager = mContext.getSystemService(RoleManager.class); if (roleManager.isRoleAvailable(RoleManager.ROLE_WALLET)) { Intent intent = new Intent(CardEmulation.ACTION_CHANGE_DEFAULT); mContext.startActivity(intent); return true; } } return false; } @Override public void onResume() { if (mPaymentSettingsEnabler != null) { Loading tests/robotests/src/com/android/settings/applications/specialaccess/DefaultPaymentSettingsPreferenceControllerTest.java +38 −1 Original line number Diff line number Diff line Loading @@ -19,16 +19,28 @@ package com.android.settings.applications.specialaccess; import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.app.role.RoleManager; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.nfc.NfcAdapter; import android.nfc.cardemulation.CardEmulation; import android.os.UserManager; import android.permission.flags.Flags; import android.platform.test.annotations.RequiresFlagsEnabled; import android.platform.test.flag.junit.CheckFlagsRule; import android.platform.test.flag.junit.DeviceFlagsValueProvider; import androidx.preference.Preference; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; Loading @@ -37,6 +49,10 @@ import org.robolectric.util.ReflectionHelpers; @RunWith(RobolectricTestRunner.class) public class DefaultPaymentSettingsPreferenceControllerTest { private static final String PREF_KEY = "key"; @Rule public final CheckFlagsRule mCheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule(); @Mock private NfcAdapter mNfcAdapter; @Mock Loading @@ -45,6 +61,10 @@ public class DefaultPaymentSettingsPreferenceControllerTest { private UserManager mUserManager; @Mock private PackageManager mPackageManager; @Mock private RoleManager mRoleManager; @Mock private Preference mPreference; private DefaultPaymentSettingsPreferenceController mController; Loading @@ -55,7 +75,8 @@ public class DefaultPaymentSettingsPreferenceControllerTest { when(mContext.getApplicationContext()).thenReturn(mContext); when(mContext.getPackageManager()).thenReturn(mPackageManager); when(mContext.getSystemService(UserManager.class)).thenReturn(mUserManager); mController = new DefaultPaymentSettingsPreferenceController(mContext, "key"); when(mContext.getSystemService(RoleManager.class)).thenReturn(mRoleManager); mController = new DefaultPaymentSettingsPreferenceController(mContext, PREF_KEY); ReflectionHelpers.setField(mController, "mNfcAdapter", mNfcAdapter); } Loading Loading @@ -86,4 +107,20 @@ public class DefaultPaymentSettingsPreferenceControllerTest { assertThat(mController.getAvailabilityStatus()).isEqualTo( DefaultPaymentSettingsPreferenceController.DISABLED_DEPENDENT_SETTING); } @Test @RequiresFlagsEnabled(Flags.FLAG_WALLET_ROLE_ENABLED) public void handlePreferenceTreeClick_walletRoleEnabled_shouldReturnTrue() { when(mRoleManager.isRoleAvailable(anyString())).thenReturn(true); when(mPreference.getKey()).thenReturn(PREF_KEY); ArgumentCaptor<String> roleTypeCaptor = ArgumentCaptor.forClass(String.class); ArgumentCaptor<Intent> intentArgumentCaptor = ArgumentCaptor.forClass(Intent.class); assertThat(mController.handlePreferenceTreeClick(mPreference)).isTrue(); verify(mRoleManager).isRoleAvailable(roleTypeCaptor.capture()); verify(mContext).startActivity(intentArgumentCaptor.capture()); assertThat(roleTypeCaptor.getValue()).isEqualTo(RoleManager.ROLE_WALLET); assertThat(intentArgumentCaptor.getValue().getAction()) .isEqualTo(CardEmulation.ACTION_CHANGE_DEFAULT); } } Loading
src/com/android/settings/applications/specialaccess/DefaultPaymentSettingsPreferenceController.java +18 −0 Original line number Diff line number Diff line Loading @@ -16,10 +16,14 @@ package com.android.settings.applications.specialaccess; import android.app.role.RoleManager; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.nfc.NfcAdapter; import android.nfc.cardemulation.CardEmulation; import android.os.UserManager; import android.permission.flags.Flags; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; Loading Loading @@ -61,6 +65,20 @@ public class DefaultPaymentSettingsPreferenceController extends BasePreferenceCo mPaymentSettingsEnabler = new PaymentSettingsEnabler(mContext, preference); } @Override public boolean handlePreferenceTreeClick(Preference preference) { if (Flags.walletRoleEnabled() && mPreferenceKey.equals(preference.getKey())) { RoleManager roleManager = mContext.getSystemService(RoleManager.class); if (roleManager.isRoleAvailable(RoleManager.ROLE_WALLET)) { Intent intent = new Intent(CardEmulation.ACTION_CHANGE_DEFAULT); mContext.startActivity(intent); return true; } } return false; } @Override public void onResume() { if (mPaymentSettingsEnabler != null) { Loading
tests/robotests/src/com/android/settings/applications/specialaccess/DefaultPaymentSettingsPreferenceControllerTest.java +38 −1 Original line number Diff line number Diff line Loading @@ -19,16 +19,28 @@ package com.android.settings.applications.specialaccess; import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.app.role.RoleManager; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.nfc.NfcAdapter; import android.nfc.cardemulation.CardEmulation; import android.os.UserManager; import android.permission.flags.Flags; import android.platform.test.annotations.RequiresFlagsEnabled; import android.platform.test.flag.junit.CheckFlagsRule; import android.platform.test.flag.junit.DeviceFlagsValueProvider; import androidx.preference.Preference; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; Loading @@ -37,6 +49,10 @@ import org.robolectric.util.ReflectionHelpers; @RunWith(RobolectricTestRunner.class) public class DefaultPaymentSettingsPreferenceControllerTest { private static final String PREF_KEY = "key"; @Rule public final CheckFlagsRule mCheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule(); @Mock private NfcAdapter mNfcAdapter; @Mock Loading @@ -45,6 +61,10 @@ public class DefaultPaymentSettingsPreferenceControllerTest { private UserManager mUserManager; @Mock private PackageManager mPackageManager; @Mock private RoleManager mRoleManager; @Mock private Preference mPreference; private DefaultPaymentSettingsPreferenceController mController; Loading @@ -55,7 +75,8 @@ public class DefaultPaymentSettingsPreferenceControllerTest { when(mContext.getApplicationContext()).thenReturn(mContext); when(mContext.getPackageManager()).thenReturn(mPackageManager); when(mContext.getSystemService(UserManager.class)).thenReturn(mUserManager); mController = new DefaultPaymentSettingsPreferenceController(mContext, "key"); when(mContext.getSystemService(RoleManager.class)).thenReturn(mRoleManager); mController = new DefaultPaymentSettingsPreferenceController(mContext, PREF_KEY); ReflectionHelpers.setField(mController, "mNfcAdapter", mNfcAdapter); } Loading Loading @@ -86,4 +107,20 @@ public class DefaultPaymentSettingsPreferenceControllerTest { assertThat(mController.getAvailabilityStatus()).isEqualTo( DefaultPaymentSettingsPreferenceController.DISABLED_DEPENDENT_SETTING); } @Test @RequiresFlagsEnabled(Flags.FLAG_WALLET_ROLE_ENABLED) public void handlePreferenceTreeClick_walletRoleEnabled_shouldReturnTrue() { when(mRoleManager.isRoleAvailable(anyString())).thenReturn(true); when(mPreference.getKey()).thenReturn(PREF_KEY); ArgumentCaptor<String> roleTypeCaptor = ArgumentCaptor.forClass(String.class); ArgumentCaptor<Intent> intentArgumentCaptor = ArgumentCaptor.forClass(Intent.class); assertThat(mController.handlePreferenceTreeClick(mPreference)).isTrue(); verify(mRoleManager).isRoleAvailable(roleTypeCaptor.capture()); verify(mContext).startActivity(intentArgumentCaptor.capture()); assertThat(roleTypeCaptor.getValue()).isEqualTo(RoleManager.ROLE_WALLET); assertThat(intentArgumentCaptor.getValue().getAction()) .isEqualTo(CardEmulation.ACTION_CHANGE_DEFAULT); } }