Merge "Make Nfc/Beam searchable based on feature availability" into pi-dev
diff --git a/src/com/android/settings/nfc/BaseNfcPreferenceController.java b/src/com/android/settings/nfc/BaseNfcPreferenceController.java
index b945738..33d75fa 100644
--- a/src/com/android/settings/nfc/BaseNfcPreferenceController.java
+++ b/src/com/android/settings/nfc/BaseNfcPreferenceController.java
@@ -67,7 +67,7 @@
 
     @Override
     public void updateNonIndexableKeys(List<String> keys) {
-        if (isAvailable()) {
+        if (!isAvailable()) {
             keys.add(getPreferenceKey());
         }
     }
diff --git a/tests/robotests/src/com/android/settings/connecteddevice/ConnectedDeviceDashboardFragmentTest.java b/tests/robotests/src/com/android/settings/connecteddevice/ConnectedDeviceDashboardFragmentTest.java
index 0230540..9064179 100644
--- a/tests/robotests/src/com/android/settings/connecteddevice/ConnectedDeviceDashboardFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/connecteddevice/ConnectedDeviceDashboardFragmentTest.java
@@ -78,7 +78,6 @@
         final List<String> niks = ConnectedDeviceDashboardFragment.SEARCH_INDEX_DATA_PROVIDER
                 .getNonIndexableKeys(mContext);
 
-        assertThat(niks).containsExactly(KEY_CONNECTED_DEVICES, KEY_AVAILABLE_DEVICES,
-                NfcPreferenceController.KEY_TOGGLE_NFC);
+        assertThat(niks).containsExactly(KEY_CONNECTED_DEVICES, KEY_AVAILABLE_DEVICES);
     }
 }
diff --git a/tests/robotests/src/com/android/settings/nfc/AndroidBeamPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/nfc/AndroidBeamPreferenceControllerTest.java
index cb18b5a..df5bb64 100644
--- a/tests/robotests/src/com/android/settings/nfc/AndroidBeamPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/nfc/AndroidBeamPreferenceControllerTest.java
@@ -41,6 +41,9 @@
 import org.robolectric.RuntimeEnvironment;
 import org.robolectric.util.ReflectionHelpers;
 
+import java.util.ArrayList;
+import java.util.List;
+
 @RunWith(SettingsRobolectricTestRunner.class)
 public class AndroidBeamPreferenceControllerTest {
 
@@ -132,4 +135,24 @@
         mAndroidBeamController.onResume();
         assertThat(mAndroidBeamPreference.isEnabled()).isFalse();
     }
+
+    @Test
+    public void updateNonIndexableKeys_available_shouldNotUpdate() {
+        when(mNfcAdapter.isEnabled()).thenReturn(true);
+        final List<String> keys = new ArrayList<>();
+
+        mAndroidBeamController.updateNonIndexableKeys(keys);
+
+        assertThat(keys).isEmpty();
+    }
+
+    @Test
+    public void updateNonIndexableKeys_notAvailable_shouldUpdate() {
+        ReflectionHelpers.setField(mAndroidBeamController, "mNfcAdapter", null);
+        final List<String> keys = new ArrayList<>();
+
+        mAndroidBeamController.updateNonIndexableKeys(keys);
+
+        assertThat(keys).hasSize(1);
+    }
 }
diff --git a/tests/robotests/src/com/android/settings/nfc/NfcPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/nfc/NfcPreferenceControllerTest.java
index cd90820..802e199 100644
--- a/tests/robotests/src/com/android/settings/nfc/NfcPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/nfc/NfcPreferenceControllerTest.java
@@ -39,6 +39,9 @@
 import org.robolectric.RuntimeEnvironment;
 import org.robolectric.util.ReflectionHelpers;
 
+import java.util.ArrayList;
+import java.util.List;
+
 @RunWith(SettingsRobolectricTestRunner.class)
 public class NfcPreferenceControllerTest {
 
@@ -134,4 +137,24 @@
         mNfcController.onResume();
         assertThat(mNfcPreference.isChecked()).isFalse();
     }
+
+    @Test
+    public void updateNonIndexableKeys_available_shouldNotUpdate() {
+        when(mNfcAdapter.isEnabled()).thenReturn(true);
+        final List<String> keys = new ArrayList<>();
+
+        mNfcController.updateNonIndexableKeys(keys);
+
+        assertThat(keys).isEmpty();
+    }
+
+    @Test
+    public void updateNonIndexableKeys_notAvailable_shouldUpdate() {
+        ReflectionHelpers.setField(mNfcController, "mNfcAdapter", null);
+        final List<String> keys = new ArrayList<>();
+
+        mNfcController.updateNonIndexableKeys(keys);
+
+        assertThat(keys).hasSize(1);
+    }
 }