[Settings] replace isNonTtyOrTtyOnVolteEnabled() in VoLTE

1. Code refactor
2. Replace ImsManager#isNonTtyOrTtyOnVolteEnabled() by combination of
   TelecomManager#getCurrentTtyMode() and
   ImsMmTelManager#isTtyOverVolteEnabled()

Bug: 140542283
Test: m RunSettingsRoboTests -j ROBOTEST_FILTER=Enhanced4gBasePreferenceControllerTest
Test: m RunSettingsRoboTests -j ROBOTEST_FILTER=Enhanced4gLteSliceHelperTest
Change-Id: I5ea5978529a7ae9a63161caca22fb29102f24150
This commit is contained in:
Bonian Chen
2020-01-21 21:18:52 +08:00
parent ff1863451f
commit 00f42fb6fc
3 changed files with 22 additions and 18 deletions

View File

@@ -26,7 +26,7 @@ import com.android.settings.network.SubscriptionUtil;
/**
* Controller class for querying Volte status
*/
public class VolteQueryImsState {
public class VolteQueryImsState extends ImsQueryController {
private Context mContext;
private int mSubId;
@@ -42,6 +42,20 @@ public class VolteQueryImsState {
mSubId = subId;
}
/**
* Get allowance status for user to alter configuration
*
* @return true when changing configuration by user is allowed.
*/
public boolean isAllowUserControl() {
if (!SubscriptionManager.isValidSubscriptionId(mSubId)) {
return false;
}
return ((!isSystemTtyEnabled(mContext).directQuery())
|| (isTtyOnVolteEnabled(mSubId).directQuery()));
}
/**
* Get user's configuration
*

View File

@@ -108,6 +108,7 @@ public class Enhanced4gBasePreferenceController extends TelephonyTogglePreferenc
return CONDITIONALLY_UNAVAILABLE;
}
final PersistableBundle carrierConfig = mCarrierConfigManager.getConfigForSubId(subId);
final VolteQueryImsState queryState = queryImsState(subId);
final boolean isVisible = SubscriptionManager.isValidSubscriptionId(subId)
&& mImsManager != null && carrierConfig != null
&& mImsManager.isVolteEnabledByPlatform()
@@ -115,7 +116,8 @@ public class Enhanced4gBasePreferenceController extends TelephonyTogglePreferenc
&& MobileNetworkUtils.isImsServiceStateReady(mImsManager)
&& !carrierConfig.getBoolean(CarrierConfigManager.KEY_HIDE_ENHANCED_4G_LTE_BOOL);
return isVisible
? (isPrefEnabled() ? AVAILABLE : AVAILABLE_UNSEARCHABLE)
? (isUserControlAllowed() && queryState.isAllowUserControl()
? AVAILABLE : AVAILABLE_UNSEARCHABLE)
: CONDITIONALLY_UNAVAILABLE;
}
@@ -141,9 +143,10 @@ public class Enhanced4gBasePreferenceController extends TelephonyTogglePreferenc
final SwitchPreference switchPreference = (SwitchPreference) preference;
final VolteQueryImsState queryState = queryImsState(mSubId);
switchPreference.setEnabled(isPrefEnabled());
switchPreference.setEnabled(isUserControlAllowed()
&& queryState.isAllowUserControl());
switchPreference.setChecked(queryState.isEnabledByUser()
&& mImsManager.isNonTtyOrTtyOnVolteEnabled());
&& queryState.isAllowUserControl());
}
@Override
@@ -191,13 +194,6 @@ public class Enhanced4gBasePreferenceController extends TelephonyTogglePreferenc
return new VolteQueryImsState(mContext, subId);
}
private boolean isPrefEnabled() {
return SubscriptionManager.isValidSubscriptionId(mSubId)
&& isUserControlAllowed()
&& mImsManager != null
&& mImsManager.isNonTtyOrTtyOnVolteEnabled();
}
private boolean isUserControlAllowed() {
return (mCallState != null) && (mCallState == TelephonyManager.CALL_STATE_IDLE)
&& mCarrierConfig.getBoolean(

View File

@@ -48,7 +48,6 @@ import com.android.settings.network.ims.VolteQueryImsState;
import com.android.settings.slices.CustomSliceRegistry;
import com.android.settings.slices.SliceBroadcastReceiver;
/**
* Helper class to control slices for enhanced 4g LTE settings.
*/
@@ -70,11 +69,6 @@ public class Enhanced4gLteSliceHelper {
public static final String ACTION_MOBILE_NETWORK_SETTINGS_ACTIVITY =
"android.settings.NETWORK_OPERATOR_SETTINGS";
/**
* Timeout for querying enhanced 4g lte setting from ims manager.
*/
private static final int TIMEOUT_MILLIS = 2000;
private final Context mContext;
/**
@@ -193,7 +187,7 @@ public class Enhanced4gLteSliceHelper {
if (imsManager.isVolteEnabledByPlatform() && isVolteProvisionedOnDevice(subId)) {
final VolteQueryImsState queryState = queryImsState(subId);
final boolean currentValue = queryState.isEnabledByUser()
&& imsManager.isNonTtyOrTtyOnVolteEnabled();
&& queryState.isAllowUserControl();
final boolean newValue = intent.getBooleanExtra(EXTRA_TOGGLE_STATE,
currentValue);
if (newValue != currentValue) {