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

Commit c1c500ae authored by Omer Ozer's avatar Omer Ozer Committed by Android (Google) Code Review
Browse files

Merge "Add logic to redirect default payment setting to default wallet selector." into main

parents 6482c08d ea4ca290
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
@@ -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;
@@ -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) {
+38 −1
Original line number Diff line number Diff line
@@ -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;
@@ -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
@@ -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;

@@ -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);
    }

@@ -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);
    }
}