Removed guest user access to Tap & Pay via Search.
Gathered user info to verify that user is not a guest. If user is a guest (and only a guest: other alternate users may use the feature), they are not allowed to load the nfc_payment_settings xml file. Change-Id: I5700b9cd4b639b031b6d464827d16f4ea4cfa03f Fixes: 80111261 Test: Robotests
This commit is contained in:
@@ -20,12 +20,15 @@ import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.os.Bundle;
|
||||
import android.os.UserHandle;
|
||||
import android.os.UserManager;
|
||||
import android.provider.SearchIndexableResource;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuInflater;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.content.pm.UserInfo;
|
||||
|
||||
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
||||
import com.android.settings.R;
|
||||
@@ -111,6 +114,11 @@ public class PaymentSettings extends DashboardFragment {
|
||||
|
||||
@Override
|
||||
protected boolean isPageSearchEnabled(Context context) {
|
||||
final UserManager userManager = context.getSystemService(UserManager.class);
|
||||
final UserInfo myUserInfo = userManager.getUserInfo(UserHandle.myUserId());
|
||||
if (myUserInfo.isGuest()) {
|
||||
return false;
|
||||
}
|
||||
final PackageManager pm = context.getPackageManager();
|
||||
return pm.hasSystemFeature(PackageManager.FEATURE_NFC);
|
||||
}
|
||||
|
@@ -18,11 +18,16 @@
|
||||
package com.android.settings.nfc;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import static org.mockito.Mockito.doReturn;
|
||||
import static org.mockito.Mockito.spy;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.pm.UserInfo;
|
||||
import android.os.UserHandle;
|
||||
import android.os.UserManager;
|
||||
|
||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||
|
||||
@@ -45,22 +50,31 @@ public class PaymentSettingsTest {
|
||||
|
||||
static final String PAYMENT_KEY = "nfc_payment";
|
||||
static final String FOREGROUND_KEY = "nfc_foreground";
|
||||
static final String PAYMENT_SCREEN_KEY = "nfc_payment_settings_screen";
|
||||
|
||||
private Context mContext;
|
||||
|
||||
@Mock
|
||||
private PackageManager mManager;
|
||||
private PackageManager mPackageManager;
|
||||
|
||||
@Mock
|
||||
private UserManager mUserManager;
|
||||
|
||||
@Mock
|
||||
private UserInfo mUserInfo;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
mContext = spy(RuntimeEnvironment.application);
|
||||
when(mContext.getPackageManager()).thenReturn(mManager);
|
||||
when(mContext.getPackageManager()).thenReturn(mPackageManager);
|
||||
doReturn(mUserManager).when(mContext).getSystemService(UserManager.class);
|
||||
when(mUserManager.getUserInfo(UserHandle.myUserId())).thenReturn(mUserInfo);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getNonIndexableKey_NoNFC_AllKeysAdded() {
|
||||
when(mManager.hasSystemFeature(PackageManager.FEATURE_NFC)).thenReturn(false);
|
||||
public void getNonIndexableKey_noNFC_allKeysAdded() {
|
||||
when(mPackageManager.hasSystemFeature(PackageManager.FEATURE_NFC)).thenReturn(false);
|
||||
|
||||
final List<String> niks =
|
||||
PaymentSettings.SEARCH_INDEX_DATA_PROVIDER.getNonIndexableKeys(mContext);
|
||||
@@ -70,8 +84,8 @@ public class PaymentSettingsTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getNonIndexableKey_NFC_ForegroundKeyAdded() {
|
||||
when(mManager.hasSystemFeature(PackageManager.FEATURE_NFC)).thenReturn(true);
|
||||
public void getNonIndexableKey_NFC_foregroundKeyAdded() {
|
||||
when(mPackageManager.hasSystemFeature(PackageManager.FEATURE_NFC)).thenReturn(true);
|
||||
|
||||
final List<String> niks =
|
||||
PaymentSettings.SEARCH_INDEX_DATA_PROVIDER.getNonIndexableKeys(mContext);
|
||||
@@ -79,6 +93,27 @@ public class PaymentSettingsTest {
|
||||
assertThat(niks).contains(FOREGROUND_KEY);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getNonIndexableKey_primaryUser_returnsTrue() {
|
||||
when(mPackageManager.hasSystemFeature(PackageManager.FEATURE_NFC)).thenReturn(true);
|
||||
|
||||
final List<String> niks =
|
||||
PaymentSettings.SEARCH_INDEX_DATA_PROVIDER.getNonIndexableKeys(mContext);
|
||||
|
||||
assertThat(niks).containsExactly(FOREGROUND_KEY);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getNonIndexabkeKey_guestUser_returnsFalse() {
|
||||
when(mPackageManager.hasSystemFeature(PackageManager.FEATURE_NFC)).thenReturn(true);
|
||||
when(mUserInfo.isGuest()).thenReturn(true);
|
||||
|
||||
final List<String> niks =
|
||||
PaymentSettings.SEARCH_INDEX_DATA_PROVIDER.getNonIndexableKeys(mContext);
|
||||
|
||||
assertThat(niks).containsAllOf(FOREGROUND_KEY, PAYMENT_KEY, PAYMENT_SCREEN_KEY);
|
||||
}
|
||||
|
||||
@Implements(PaymentBackend.class)
|
||||
public static class ShadowPaymentBackend {
|
||||
private ArrayList<PaymentBackend.PaymentAppInfo> mAppInfos;
|
||||
|
Reference in New Issue
Block a user