From 1ff466675d81db5da4c319bcefeb249186d0c832 Mon Sep 17 00:00:00 2001 From: hjchangliao Date: Wed, 25 Apr 2018 11:38:05 +0800 Subject: [PATCH] Make Nfc/Beam searchable based on feature availability Update logic of updateNonIndexableKeys, in BaseNfcPreferenceController to fix issue. Add robotest to avoid same problem. Change-Id: I1de5324b5a7147ff58e3c366ee7e8cf858e3283c Fixes: 78540155 Test: make RunSettingsRoboTests --- .../nfc/BaseNfcPreferenceController.java | 2 +- .../ConnectedDeviceDashboardFragmentTest.java | 3 +-- .../AndroidBeamPreferenceControllerTest.java | 23 +++++++++++++++++++ .../nfc/NfcPreferenceControllerTest.java | 23 +++++++++++++++++++ 4 files changed, 48 insertions(+), 3 deletions(-) diff --git a/src/com/android/settings/nfc/BaseNfcPreferenceController.java b/src/com/android/settings/nfc/BaseNfcPreferenceController.java index b945738eab5..33d75fab672 100644 --- a/src/com/android/settings/nfc/BaseNfcPreferenceController.java +++ b/src/com/android/settings/nfc/BaseNfcPreferenceController.java @@ -67,7 +67,7 @@ public abstract class BaseNfcPreferenceController extends AbstractPreferenceCont @Override public void updateNonIndexableKeys(List 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 0230540a61c..90641792639 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 @@ public class ConnectedDeviceDashboardFragmentTest { final List 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 cb18b5abd9e..df5bb64c1e8 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.mockito.MockitoAnnotations; 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 @@ public class AndroidBeamPreferenceControllerTest { mAndroidBeamController.onResume(); assertThat(mAndroidBeamPreference.isEnabled()).isFalse(); } + + @Test + public void updateNonIndexableKeys_available_shouldNotUpdate() { + when(mNfcAdapter.isEnabled()).thenReturn(true); + final List keys = new ArrayList<>(); + + mAndroidBeamController.updateNonIndexableKeys(keys); + + assertThat(keys).isEmpty(); + } + + @Test + public void updateNonIndexableKeys_notAvailable_shouldUpdate() { + ReflectionHelpers.setField(mAndroidBeamController, "mNfcAdapter", null); + final List 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 cd90820b449..802e199abf2 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.mockito.MockitoAnnotations; 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 @@ public class NfcPreferenceControllerTest { mNfcController.onResume(); assertThat(mNfcPreference.isChecked()).isFalse(); } + + @Test + public void updateNonIndexableKeys_available_shouldNotUpdate() { + when(mNfcAdapter.isEnabled()).thenReturn(true); + final List keys = new ArrayList<>(); + + mNfcController.updateNonIndexableKeys(keys); + + assertThat(keys).isEmpty(); + } + + @Test + public void updateNonIndexableKeys_notAvailable_shouldUpdate() { + ReflectionHelpers.setField(mNfcController, "mNfcAdapter", null); + final List keys = new ArrayList<>(); + + mNfcController.updateNonIndexableKeys(keys); + + assertThat(keys).hasSize(1); + } }