Merge "Add support for FEATURE_NFC_ANDROID_BEAM"
diff --git a/src/com/android/settings/nfc/AndroidBeamPreferenceController.java b/src/com/android/settings/nfc/AndroidBeamPreferenceController.java
index 12ab1b7..9fc0aec 100644
--- a/src/com/android/settings/nfc/AndroidBeamPreferenceController.java
+++ b/src/com/android/settings/nfc/AndroidBeamPreferenceController.java
@@ -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 @@
     @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;
diff --git a/tests/robotests/src/com/android/settings/nfc/AndroidBeamPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/nfc/AndroidBeamPreferenceControllerTest.java
index 0abd428..90daae0 100644
--- a/tests/robotests/src/com/android/settings/nfc/AndroidBeamPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/nfc/AndroidBeamPreferenceControllerTest.java
@@ -22,6 +22,7 @@
 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 @@
     private UserManager mUserManager;
     @Mock
     private PreferenceScreen mScreen;
+    @Mock
+    private PackageManager mPackageManager;
 
     private RestrictedPreference mAndroidBeamPreference;
     private AndroidBeamPreferenceController mAndroidBeamController;
@@ -77,6 +80,8 @@
         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,
@@ -94,6 +99,13 @@
     }
 
     @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);
         assertThat(mAndroidBeamController.isAvailable()).isFalse();