Merge "Add support for FEATURE_NFC_ANDROID_BEAM"

This commit is contained in:
Treehugger Robot
2019-01-04 21:49:14 +00:00
committed by Gerrit Code Review
2 changed files with 17 additions and 0 deletions

View File

@@ -16,6 +16,7 @@
package com.android.settings.nfc;
import android.content.Context;
import android.content.pm.PackageManager;
import android.nfc.NfcAdapter;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
@@ -63,6 +64,10 @@ public class AndroidBeamPreferenceController extends BasePreferenceController
@Override
@AvailabilityStatus
public int getAvailabilityStatus() {
PackageManager pm = mContext.getPackageManager();
if (!pm.hasSystemFeature(PackageManager.FEATURE_NFC_BEAM)) {
return UNSUPPORTED_ON_DEVICE;
}
return mNfcAdapter != null
? AVAILABLE
: UNSUPPORTED_ON_DEVICE;

View File

@@ -22,6 +22,7 @@ import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;
import android.content.Context;
import android.content.pm.PackageManager;
import android.nfc.NfcAdapter;
import android.nfc.NfcManager;
import android.os.UserHandle;
@@ -56,6 +57,8 @@ public class AndroidBeamPreferenceControllerTest {
private UserManager mUserManager;
@Mock
private PreferenceScreen mScreen;
@Mock
private PackageManager mPackageManager;
private RestrictedPreference mAndroidBeamPreference;
private AndroidBeamPreferenceController mAndroidBeamController;
@@ -77,6 +80,8 @@ public class AndroidBeamPreferenceControllerTest {
mAndroidBeamPreference = new RestrictedPreference(RuntimeEnvironment.application);
when(mScreen.findPreference(mAndroidBeamController.getPreferenceKey())).thenReturn(
mAndroidBeamPreference);
when(mContext.getPackageManager()).thenReturn(mPackageManager);
when(mPackageManager.hasSystemFeature(PackageManager.FEATURE_NFC_BEAM)).thenReturn(true);
Settings.Global.putString(mContext.getContentResolver(),
Settings.Global.AIRPLANE_MODE_TOGGLEABLE_RADIOS,
@@ -93,6 +98,13 @@ public class AndroidBeamPreferenceControllerTest {
assertThat(mAndroidBeamController.isAvailable()).isTrue();
}
@Test
public void isAvailable_noNfcFeature_shouldReturnFalse() {
when(mNfcAdapter.isEnabled()).thenReturn(true);
when(mPackageManager.hasSystemFeature(PackageManager.FEATURE_NFC_BEAM)).thenReturn(false);
assertThat(mAndroidBeamController.isAvailable()).isFalse();
}
@Test
public void isAvailable_noNfcAdapter_shouldReturnFalse() {
ReflectionHelpers.setField(mAndroidBeamController, "mNfcAdapter", null);