Do not turn on NFC automatically when airplane mode is off.
- besides checking the value for AIRPLANE_MODE_TOGGLEABLE_RADIOS, also check the value for AIRPLANE_MODE_RADIOS to determine if we should turn off NFC when airplane mode is on. - when user turns off airplane mode, only re-enable the NFC preference and do not enable NFC by default. - remove listening to airplane mode directly from the android beam preference controller, as it is already listening to Nfc state, which handles the beam state already. Change-Id: Id41fef15fb2de873729d20d7f53b1a88b164cf95 Fixes: 80217047 Test: make RunSettingsRoboTests
This commit is contained in:
@@ -75,15 +75,6 @@ public class NfcPreferenceControllerTest {
|
||||
mNfcPreference = new SwitchPreference(RuntimeEnvironment.application);
|
||||
|
||||
when(mScreen.findPreference(mNfcController.getPreferenceKey())).thenReturn(mNfcPreference);
|
||||
|
||||
Settings.Global.putString(mContext.getContentResolver(),
|
||||
Settings.Global.AIRPLANE_MODE_TOGGLEABLE_RADIOS,
|
||||
Settings.Global.RADIO_NFC);
|
||||
|
||||
Settings.Global.putInt(mContext.getContentResolver(),
|
||||
Settings.Global.AIRPLANE_MODE_ON,
|
||||
0);
|
||||
mNfcController.displayPreference(mScreen);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -102,6 +93,7 @@ public class NfcPreferenceControllerTest {
|
||||
|
||||
@Test
|
||||
public void isNfcEnable_nfcStateNotTurning_shouldReturnTrue() {
|
||||
mNfcController.displayPreference(mScreen);
|
||||
when(mNfcAdapter.getAdapterState()).thenReturn(NfcAdapter.STATE_ON);
|
||||
mNfcController.onResume();
|
||||
assertThat(mNfcPreference.isEnabled()).isTrue();
|
||||
@@ -113,6 +105,7 @@ public class NfcPreferenceControllerTest {
|
||||
|
||||
@Test
|
||||
public void isNfcEnable_nfcStateTurning_shouldReturnFalse() {
|
||||
mNfcController.displayPreference(mScreen);
|
||||
when(mNfcAdapter.getAdapterState()).thenReturn(NfcAdapter.STATE_TURNING_ON);
|
||||
mNfcController.onResume();
|
||||
assertThat(mNfcPreference.isEnabled()).isFalse();
|
||||
@@ -124,6 +117,7 @@ public class NfcPreferenceControllerTest {
|
||||
|
||||
@Test
|
||||
public void isNfcChecked_nfcStateOn_shouldReturnTrue() {
|
||||
mNfcController.displayPreference(mScreen);
|
||||
when(mNfcAdapter.getAdapterState()).thenReturn(NfcAdapter.STATE_ON);
|
||||
mNfcController.onResume();
|
||||
assertThat(mNfcPreference.isChecked()).isTrue();
|
||||
@@ -205,4 +199,52 @@ public class NfcPreferenceControllerTest {
|
||||
|
||||
assertThat(NfcPreferenceController.isToggleableInAirplaneMode(mContext)).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldTurnOffNFCInAirplaneMode_airplaneModeRadiosContainsNfc_shouldReturnTrue() {
|
||||
Settings.Global.putString(mContext.getContentResolver(),
|
||||
Settings.Global.AIRPLANE_MODE_RADIOS, Settings.Global.RADIO_NFC);
|
||||
|
||||
assertThat(NfcPreferenceController.shouldTurnOffNFCInAirplaneMode(mContext)).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldTurnOffNFCInAirplaneMode_airplaneModeRadiosWithoutNfc_shouldReturnFalse() {
|
||||
Settings.Global.putString(mContext.getContentResolver(),
|
||||
Settings.Global.AIRPLANE_MODE_RADIOS, "");
|
||||
|
||||
assertThat(NfcPreferenceController.shouldTurnOffNFCInAirplaneMode(mContext)).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void displayPreference_airplaneModeRadiosContainsNfc_shouldCreateAirplaneModeObserver() {
|
||||
Settings.Global.putString(mContext.getContentResolver(),
|
||||
Settings.Global.AIRPLANE_MODE_RADIOS, Settings.Global.RADIO_NFC);
|
||||
|
||||
mNfcController.displayPreference(mScreen);
|
||||
|
||||
assertThat(mNfcController.mAirplaneModeObserver).isNotNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void displayPreference_nfcToggleableInAirplaneMode_shouldCreateAirplaneModeObserver() {
|
||||
Settings.Global.putString(mContext.getContentResolver(),
|
||||
Settings.Global.AIRPLANE_MODE_TOGGLEABLE_RADIOS, Settings.Global.RADIO_NFC);
|
||||
|
||||
mNfcController.displayPreference(mScreen);
|
||||
|
||||
assertThat(mNfcController.mAirplaneModeObserver).isNotNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void displayPreference_nfcNotAffectByAirplaneMode_shouldNotCreateAirplaneModeObserver() {
|
||||
Settings.Global.putString(mContext.getContentResolver(),
|
||||
Settings.Global.AIRPLANE_MODE_TOGGLEABLE_RADIOS, "");
|
||||
Settings.Global.putString(mContext.getContentResolver(),
|
||||
Settings.Global.AIRPLANE_MODE_RADIOS, "");
|
||||
|
||||
mNfcController.displayPreference(mScreen);
|
||||
|
||||
assertThat(mNfcController.mAirplaneModeObserver).isNull();
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user