diff options
author | Brad Ebinger <breadley@google.com> | 2018-05-17 09:51:55 -0700 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2018-05-17 09:51:55 -0700 |
commit | 088011da2e9d2e12f9e9829f2e2e56a2cf00cfd6 (patch) | |
tree | c822bf10cef883edfbe3f88d66450cd36280c439 | |
parent | 371ae764c78be17dde29522e2e608926fa8e62ac (diff) | |
parent | 63ab34e7f5fad0230b48aa2717566f98ac06cbb7 (diff) | |
download | ims-088011da2e9d2e12f9e9829f2e2e56a2cf00cfd6.tar.gz |
Merge "Do not set WFC mode separately when not editable" into pi-dev
am: 63ab34e7f5
Change-Id: I556b1c9f44bbd254f6ad3d9770449aee1886a224
-rw-r--r-- | src/java/com/android/ims/ImsManager.java | 80 |
1 files changed, 33 insertions, 47 deletions
diff --git a/src/java/com/android/ims/ImsManager.java b/src/java/com/android/ims/ImsManager.java index 98c83f2e..31fe0fb3 100644 --- a/src/java/com/android/ims/ImsManager.java +++ b/src/java/com/android/ims/ImsManager.java @@ -959,17 +959,6 @@ public class ImsManager { } /** - * Changes the WFC mode to its default value for Carriers with non-editable WFC settings. - */ - private void updateDefaultWfcMode() { - if (DBG) log("updateDefaultWfcMode"); - if (!getBooleanCarrierConfig(CarrierConfigManager.KEY_EDITABLE_WFC_MODE_BOOL)) { - setWfcMode(getIntCarrierConfig( - CarrierConfigManager.KEY_CARRIER_DEFAULT_WFC_IMS_MODE_INT)); - } - } - - /** * Returns the user configuration of WFC preference setting * * @param roaming {@code false} for home network setting, {@code true} for roaming setting @@ -993,35 +982,53 @@ public class ImsManager { * @param roaming {@code false} for home network setting, {@code true} for roaming setting */ public int getWfcMode(boolean roaming) { - int setting = 0; + int setting; if (!roaming) { - setting = SubscriptionManager.getIntegerSubscriptionProperty( - getSubId(), SubscriptionManager.WFC_IMS_MODE, - SUB_PROPERTY_NOT_INITIALIZED, mContext); - - // SUB_PROPERTY_NOT_INITIALIZED indicates it's never set in sub db. - if (setting == SUB_PROPERTY_NOT_INITIALIZED) { + // The WFC mode is not editable, return the default setting in the CarrierConfig, not + // the user set value. + if (!getBooleanCarrierConfig(CarrierConfigManager.KEY_EDITABLE_WFC_MODE_BOOL)) { setting = getIntCarrierConfig( CarrierConfigManager.KEY_CARRIER_DEFAULT_WFC_IMS_MODE_INT); + + } else { + setting = getSettingFromSubscriptionManager(SubscriptionManager.WFC_IMS_MODE, + CarrierConfigManager.KEY_CARRIER_DEFAULT_WFC_IMS_MODE_INT); } if (DBG) log("getWfcMode - setting=" + setting); } else { - setting = SubscriptionManager.getIntegerSubscriptionProperty( - getSubId(), SubscriptionManager.WFC_IMS_ROAMING_MODE, - SUB_PROPERTY_NOT_INITIALIZED, mContext); - - // SUB_PROPERTY_NOT_INITIALIZED indicates it's never set in sub db. - if (setting == SUB_PROPERTY_NOT_INITIALIZED) { + // The WFC roaming mode is not editable, return the default setting in the + // CarrierConfig, not the user set value. + if (!getBooleanCarrierConfig(CarrierConfigManager.KEY_EDITABLE_WFC_MODE_BOOL)) { setting = getIntCarrierConfig( CarrierConfigManager.KEY_CARRIER_DEFAULT_WFC_IMS_ROAMING_MODE_INT); - } + } else { + setting = getSettingFromSubscriptionManager( + SubscriptionManager.WFC_IMS_ROAMING_MODE, + CarrierConfigManager.KEY_CARRIER_DEFAULT_WFC_IMS_ROAMING_MODE_INT); + } if (DBG) log("getWfcMode (roaming) - setting=" + setting); } return setting; } /** + * Returns the SubscriptionManager setting for the subSetting string. If it is not set, default + * to the default CarrierConfig value for defaultConfigKey. + */ + private int getSettingFromSubscriptionManager(String subSetting, String defaultConfigKey) { + int result; + result = SubscriptionManager.getIntegerSubscriptionProperty(getSubId(), subSetting, + SUB_PROPERTY_NOT_INITIALIZED, mContext); + + // SUB_PROPERTY_NOT_INITIALIZED indicates it's never set in sub db. + if (result == SUB_PROPERTY_NOT_INITIALIZED) { + result = getIntCarrierConfig(defaultConfigKey); + } + return result; + } + + /** * Change persistent WFC preference setting * * @param roaming {@code false} for home network setting, {@code true} for roaming setting @@ -1070,26 +1077,6 @@ public class ImsManager { return subId; } - private static void setWfcModeInternal(Context context, int wfcMode) { - final ImsManager imsManager = ImsManager.getInstance(context, - SubscriptionManager.getDefaultVoicePhoneId()); - if (imsManager != null) { - final int value = wfcMode; - Thread thread = new Thread(new Runnable() { - public void run() { - try { - imsManager.getConfigInterface().setConfig( - ImsConfig.ConfigConstants.VOICE_OVER_WIFI_MODE, - value); - } catch (ImsException e) { - // do nothing - } - } - }); - thread.start(); - } - } - private void setWfcModeInternal(int wfcMode) { final int value = wfcMode; Thread thread = new Thread(() -> { @@ -1385,7 +1372,6 @@ public class ImsManager { boolean isNetworkRoaming = tm.isNetworkRoaming(); boolean available = isWfcEnabledByPlatform(); boolean enabled = isWfcEnabledByUser(); - updateDefaultWfcMode(); int mode = getWfcMode(isNetworkRoaming); boolean roaming = isWfcRoamingEnabledByUser(); boolean isFeatureOn = available && enabled; @@ -1402,7 +1388,7 @@ public class ImsManager { mode = ImsConfig.WfcModeFeatureValueConstants.CELLULAR_PREFERRED; roaming = false; } - setWfcModeInternal(mContext, mode); + setWfcModeInternal(mode); setWfcRoamingSettingInternal(roaming); return isFeatureOn; |