aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorandroid-build-team Robot <android-build-team-robot@google.com>2018-05-20 07:21:00 +0000
committerandroid-build-team Robot <android-build-team-robot@google.com>2018-05-20 07:21:00 +0000
commit797a381866495db321164b56451fbee61f531b81 (patch)
tree6ea663171ed0e7849798c9070d6d8bcb07b72865
parent7f9e8ff8d584834fed6f37cd6e730adf0c5affdb (diff)
parent63ab34e7f5fad0230b48aa2717566f98ac06cbb7 (diff)
downloadims-797a381866495db321164b56451fbee61f531b81.tar.gz
Snap for 4793185 from 63ab34e7f5fad0230b48aa2717566f98ac06cbb7 to pi-release
Change-Id: Ia278c7095bbbd9ee5e4d4abb17eba7ad9facfab5
-rw-r--r--src/java/com/android/ims/ImsManager.java80
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 67a85532..7b22bebd 100644
--- a/src/java/com/android/ims/ImsManager.java
+++ b/src/java/com/android/ims/ImsManager.java
@@ -958,17 +958,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
@@ -992,35 +981,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
@@ -1069,26 +1076,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(() -> {
@@ -1384,7 +1371,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;
@@ -1401,7 +1387,7 @@ public class ImsManager {
mode = ImsConfig.WfcModeFeatureValueConstants.CELLULAR_PREFERRED;
roaming = false;
}
- setWfcModeInternal(mContext, mode);
+ setWfcModeInternal(mode);
setWfcRoamingSettingInternal(roaming);
return isFeatureOn;