From 00f42fb6fcfdb3aeb05f946b2977335ec2fb5505 Mon Sep 17 00:00:00 2001 From: Bonian Chen Date: Tue, 21 Jan 2020 21:18:52 +0800 Subject: [PATCH] [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 --- .../settings/network/ims/VolteQueryImsState.java | 16 +++++++++++++++- .../Enhanced4gBasePreferenceController.java | 16 ++++++---------- .../telephony/Enhanced4gLteSliceHelper.java | 8 +------- 3 files changed, 22 insertions(+), 18 deletions(-) diff --git a/src/com/android/settings/network/ims/VolteQueryImsState.java b/src/com/android/settings/network/ims/VolteQueryImsState.java index 558b1358efc..b999cda95ff 100644 --- a/src/com/android/settings/network/ims/VolteQueryImsState.java +++ b/src/com/android/settings/network/ims/VolteQueryImsState.java @@ -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 * diff --git a/src/com/android/settings/network/telephony/Enhanced4gBasePreferenceController.java b/src/com/android/settings/network/telephony/Enhanced4gBasePreferenceController.java index f6b7d706559..123e100ff77 100644 --- a/src/com/android/settings/network/telephony/Enhanced4gBasePreferenceController.java +++ b/src/com/android/settings/network/telephony/Enhanced4gBasePreferenceController.java @@ -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( diff --git a/src/com/android/settings/network/telephony/Enhanced4gLteSliceHelper.java b/src/com/android/settings/network/telephony/Enhanced4gLteSliceHelper.java index 48a732cd0e4..3cad3161bb3 100644 --- a/src/com/android/settings/network/telephony/Enhanced4gLteSliceHelper.java +++ b/src/com/android/settings/network/telephony/Enhanced4gLteSliceHelper.java @@ -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) {