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

View File

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