TelephonyMonitor: Replace boolean decision with multiple status.

Test: make ROBOTEST_FILTER=TelephonyMonitorPreferenceControllerTest
RunSettingsRoboTests -j40

Use enable, disable, user_enable, user_disable four statuses to
replace the old boolean value,

Bug:36704500
Change-Id: I5d3fd36aecaf36bb6969a6f6354c85bb162a0293
This commit is contained in:
Youhan Wang
2017-05-10 13:50:28 -07:00
parent d6aa9f3454
commit c426fe6c68
2 changed files with 64 additions and 9 deletions

View File

@@ -23,15 +23,27 @@ import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceScreen; import android.support.v7.preference.PreferenceScreen;
import android.widget.Toast; import android.widget.Toast;
import com.android.internal.annotations.VisibleForTesting;
import com.android.settings.core.PreferenceController; import com.android.settings.core.PreferenceController;
import com.android.settings.R; import com.android.settings.R;
public class TelephonyMonitorPreferenceController extends PreferenceController { public class TelephonyMonitorPreferenceController extends PreferenceController {
private static final String KEY_TELEPHONY_MONITOR_SWITCH = "telephony_monitor_switch"; private static final String KEY_TELEPHONY_MONITOR_SWITCH = "telephony_monitor_switch";
@VisibleForTesting
static final String BUILD_TYPE = "ro.build.type"; static final String BUILD_TYPE = "ro.build.type";
@VisibleForTesting
static final String PROPERTY_TELEPHONY_MONITOR = "persist.radio.enable_tel_mon"; static final String PROPERTY_TELEPHONY_MONITOR = "persist.radio.enable_tel_mon";
@VisibleForTesting
static final String ENABLED_STATUS = "enabled";
@VisibleForTesting
static final String DISABLED_STATUS = "disabled";
@VisibleForTesting
static final String USER_ENABLED_STATUS = "user_enabled";
@VisibleForTesting
static final String USER_DISABLED_STATUS = "user_disabled";
private SwitchPreference mPreference; private SwitchPreference mPreference;
public TelephonyMonitorPreferenceController(Context context) { public TelephonyMonitorPreferenceController(Context context) {
@@ -43,7 +55,7 @@ public class TelephonyMonitorPreferenceController extends PreferenceController {
super.displayPreference(screen); super.displayPreference(screen);
if (isAvailable()) { if (isAvailable()) {
mPreference = (SwitchPreference) screen.findPreference(KEY_TELEPHONY_MONITOR_SWITCH); mPreference = (SwitchPreference) screen.findPreference(KEY_TELEPHONY_MONITOR_SWITCH);
mPreference.setChecked(SystemProperties.getBoolean(PROPERTY_TELEPHONY_MONITOR, false)); mPreference.setChecked(isTelephonyMonitorEnabled());
} }
} }
@@ -69,7 +81,7 @@ public class TelephonyMonitorPreferenceController extends PreferenceController {
if (KEY_TELEPHONY_MONITOR_SWITCH.equals(preference.getKey())) { if (KEY_TELEPHONY_MONITOR_SWITCH.equals(preference.getKey())) {
final SwitchPreference switchPreference = (SwitchPreference) preference; final SwitchPreference switchPreference = (SwitchPreference) preference;
SystemProperties.set(PROPERTY_TELEPHONY_MONITOR, SystemProperties.set(PROPERTY_TELEPHONY_MONITOR,
switchPreference.isChecked() ? "true" : "false"); switchPreference.isChecked() ? USER_ENABLED_STATUS : USER_DISABLED_STATUS);
Toast.makeText(mContext, R.string.telephony_monitor_toast, Toast.makeText(mContext, R.string.telephony_monitor_toast,
Toast.LENGTH_LONG).show(); Toast.LENGTH_LONG).show();
return true; return true;
@@ -87,9 +99,14 @@ public class TelephonyMonitorPreferenceController extends PreferenceController {
if (!isAvailable()) { if (!isAvailable()) {
return false; return false;
} }
final boolean enabled = SystemProperties.getBoolean(PROPERTY_TELEPHONY_MONITOR, false); final boolean enabled = isTelephonyMonitorEnabled();
mPreference.setChecked(enabled); mPreference.setChecked(enabled);
return enabled; return enabled;
} }
private boolean isTelephonyMonitorEnabled() {
final String tmStatus = SystemProperties.get(PROPERTY_TELEPHONY_MONITOR, DISABLED_STATUS);
return ENABLED_STATUS.equals(tmStatus) || USER_ENABLED_STATUS.equals(tmStatus);
}
} }

View File

@@ -134,7 +134,24 @@ public class TelephonyMonitorPreferenceControllerTest {
when(mContext.getResources().getBoolean(R.bool.config_show_telephony_monitor)) when(mContext.getResources().getBoolean(R.bool.config_show_telephony_monitor))
.thenReturn(true); .thenReturn(true);
SettingsShadowSystemProperties.set( SettingsShadowSystemProperties.set(
TelephonyMonitorPreferenceController.PROPERTY_TELEPHONY_MONITOR, "true"); TelephonyMonitorPreferenceController.PROPERTY_TELEPHONY_MONITOR,
TelephonyMonitorPreferenceController.ENABLED_STATUS);
SettingsShadowSystemProperties.set(
TelephonyMonitorPreferenceController.BUILD_TYPE, "userdebug");
mController.displayPreference(mScreen);
verify(mPreference).setChecked(true);
}
@Config(shadows = {SettingsShadowSystemProperties.class})
@Test
public void displayPreference_telephonyMonitorUserEnabled_shouldCheckedPreference() {
when(mContext.getResources().getBoolean(R.bool.config_show_telephony_monitor))
.thenReturn(true);
SettingsShadowSystemProperties.set(
TelephonyMonitorPreferenceController.PROPERTY_TELEPHONY_MONITOR,
TelephonyMonitorPreferenceController.USER_ENABLED_STATUS);
SettingsShadowSystemProperties.set( SettingsShadowSystemProperties.set(
TelephonyMonitorPreferenceController.BUILD_TYPE, "userdebug"); TelephonyMonitorPreferenceController.BUILD_TYPE, "userdebug");
@@ -149,7 +166,24 @@ public class TelephonyMonitorPreferenceControllerTest {
when(mContext.getResources().getBoolean(R.bool.config_show_telephony_monitor)) when(mContext.getResources().getBoolean(R.bool.config_show_telephony_monitor))
.thenReturn(true); .thenReturn(true);
SettingsShadowSystemProperties.set( SettingsShadowSystemProperties.set(
TelephonyMonitorPreferenceController.PROPERTY_TELEPHONY_MONITOR, "false"); TelephonyMonitorPreferenceController.PROPERTY_TELEPHONY_MONITOR,
TelephonyMonitorPreferenceController.DISABLED_STATUS);
SettingsShadowSystemProperties.set(
TelephonyMonitorPreferenceController.BUILD_TYPE, "userdebug");
mController.displayPreference(mScreen);
verify(mPreference).setChecked(false);
}
@Config(shadows = {SettingsShadowSystemProperties.class})
@Test
public void displayPreference_telephonyMonitorUserDisabled_shouldUncheckedPreference() {
when(mContext.getResources().getBoolean(R.bool.config_show_telephony_monitor))
.thenReturn(true);
SettingsShadowSystemProperties.set(
TelephonyMonitorPreferenceController.PROPERTY_TELEPHONY_MONITOR,
TelephonyMonitorPreferenceController.USER_DISABLED_STATUS);
SettingsShadowSystemProperties.set( SettingsShadowSystemProperties.set(
TelephonyMonitorPreferenceController.BUILD_TYPE, "userdebug"); TelephonyMonitorPreferenceController.BUILD_TYPE, "userdebug");
@@ -168,8 +202,10 @@ public class TelephonyMonitorPreferenceControllerTest {
mController.handlePreferenceTreeClick(mPreference); mController.handlePreferenceTreeClick(mPreference);
assertThat(SystemProperties.getBoolean( assertThat(TelephonyMonitorPreferenceController.USER_ENABLED_STATUS.equals(
TelephonyMonitorPreferenceController.PROPERTY_TELEPHONY_MONITOR, false)).isTrue(); SystemProperties.get(
TelephonyMonitorPreferenceController.PROPERTY_TELEPHONY_MONITOR,
TelephonyMonitorPreferenceController.DISABLED_STATUS))).isTrue();
} }
@Config(shadows = {SettingsShadowSystemProperties.class}) @Config(shadows = {SettingsShadowSystemProperties.class})
@@ -182,8 +218,10 @@ public class TelephonyMonitorPreferenceControllerTest {
mController.handlePreferenceTreeClick(mPreference); mController.handlePreferenceTreeClick(mPreference);
assertThat(SystemProperties.getBoolean( assertThat(TelephonyMonitorPreferenceController.USER_DISABLED_STATUS.equals(
TelephonyMonitorPreferenceController.PROPERTY_TELEPHONY_MONITOR, false)).isFalse(); SystemProperties.get(
TelephonyMonitorPreferenceController.PROPERTY_TELEPHONY_MONITOR,
TelephonyMonitorPreferenceController.DISABLED_STATUS))).isTrue();
} }
} }