aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTyler Gunn <tgunn@google.com>2018-09-25 08:46:38 -0700
committerandroid-build-merger <android-build-merger@google.com>2018-09-25 08:46:38 -0700
commitfd47d2ecabc8cd3efbb6fc6f584d974312a0453f (patch)
treee5a542dfd44be4f307d323bfff02a2805837745f
parentf38de0d6f5de217367bacd844c1b1f9364df149b (diff)
parenteb338034f76f6e0589d8f6a5d3e1b6c03becf792 (diff)
downloadims-fd47d2ecabc8cd3efbb6fc6f584d974312a0453f.tar.gz
Speculative fix for ImsManager crashes.
am: eb338034f7 Change-Id: Ida64606ed5a75cb39f88fc43c7b0aa82def4d6f3
-rw-r--r--src/java/com/android/ims/ImsManager.java38
1 files changed, 26 insertions, 12 deletions
diff --git a/src/java/com/android/ims/ImsManager.java b/src/java/com/android/ims/ImsManager.java
index d4198335..f138d456 100644
--- a/src/java/com/android/ims/ImsManager.java
+++ b/src/java/com/android/ims/ImsManager.java
@@ -499,13 +499,13 @@ public class ImsManager {
if (prevSetting != (enabled ?
ImsConfig.FeatureValueConstants.ON :
ImsConfig.FeatureValueConstants.OFF)) {
- if (subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
+ if (isSubIdValid(subId)) {
SubscriptionManager.setSubscriptionProperty(subId,
SubscriptionManager.ENHANCED_4G_MODE_ENABLED,
booleanToPropertyString(enabled));
} else {
loge("setEnhanced4gLteModeSetting: invalid sub id, can not set property in " +
- " siminfo db.");
+ " siminfo db; subId=" + subId);
}
if (isNonTtyOrTtyOnVolteEnabled()) {
try {
@@ -773,11 +773,12 @@ public class ImsManager {
*/
public void setVtSetting(boolean enabled) {
int subId = getSubId();
- if (subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
+ if (isSubIdValid(subId)) {
SubscriptionManager.setSubscriptionProperty(subId, SubscriptionManager.VT_IMS_ENABLED,
booleanToPropertyString(enabled));
} else {
- loge("setVtSetting: sub id invalid, skip modifying vt state in subinfo db.");
+ loge("setVtSetting: sub id invalid, skip modifying vt state in subinfo db; subId="
+ + subId);
}
try {
@@ -889,11 +890,12 @@ public class ImsManager {
*/
public void setWfcSetting(boolean enabled) {
int subId = getSubId();
- if (subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
+ if (isSubIdValid(subId)) {
SubscriptionManager.setSubscriptionProperty(subId, SubscriptionManager.WFC_IMS_ENABLED,
booleanToPropertyString(enabled));
} else {
- loge("setWfcSetting: invalid sub id, can not set WFC setting in siminfo db");
+ loge("setWfcSetting: invalid sub id, can not set WFC setting in siminfo db; subId="
+ + subId);
}
TelephonyManager tm = (TelephonyManager)
@@ -975,11 +977,11 @@ public class ImsManager {
if (DBG) log("setWfcMode(i) - setting=" + wfcMode);
int subId = getSubId();
- if (subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
+ if (isSubIdValid(subId)) {
SubscriptionManager.setSubscriptionProperty(subId, SubscriptionManager.WFC_IMS_MODE,
Integer.toString(wfcMode));
} else {
- loge("setWfcMode: invalid sub id, skip setting value in siminfo db");
+ loge("setWfcMode: invalid sub id, skip setting value in siminfo db; subId=" + subId);
}
setWfcModeInternal(wfcMode);
@@ -1075,7 +1077,7 @@ public class ImsManager {
*/
public void setWfcMode(int wfcMode, boolean roaming) {
int subId = getSubId();
- if (subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
+ if (isSubIdValid(subId)) {
if (!roaming) {
if (DBG) log("setWfcMode(i,b) - setting=" + wfcMode);
SubscriptionManager.setSubscriptionProperty(subId, SubscriptionManager.WFC_IMS_MODE,
@@ -1086,7 +1088,8 @@ public class ImsManager {
SubscriptionManager.WFC_IMS_ROAMING_MODE, Integer.toString(wfcMode));
}
} else {
- loge("setWfcMode(i,b): invalid sub id, skip setting setting in siminfo db");
+ loge("setWfcMode(i,b): invalid sub id, skip setting setting in siminfo db; subId="
+ + subId);
}
TelephonyManager tm = (TelephonyManager)
@@ -2342,7 +2345,7 @@ public class ImsManager {
*/
public void factoryReset() {
int subId = getSubId();
- if (subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
+ if (isSubIdValid(subId)) {
// Set VoLTE to default
SubscriptionManager.setSubscriptionProperty(subId,
SubscriptionManager.ENHANCED_4G_MODE_ENABLED,
@@ -2372,7 +2375,7 @@ public class ImsManager {
SubscriptionManager.setSubscriptionProperty(subId,
SubscriptionManager.VT_IMS_ENABLED, booleanToPropertyString(true));
} else {
- loge("factoryReset: invalid sub id, can not reset siminfo db settings");
+ loge("factoryReset: invalid sub id, can not reset siminfo db settings; subId=" + subId);
}
// Push settings to ImsConfig
@@ -2432,4 +2435,15 @@ public class ImsManager {
pw.println(" isWfcProvisionedOnDevice = " + isWfcProvisionedOnDevice());
pw.flush();
}
+
+ /**
+ * Determines if a sub id is valid.
+ * Mimics the logic in SubscriptionController.validateSubId.
+ * @param subId The sub id to check.
+ * @return {@code true} if valid, {@code false} otherwise.
+ */
+ private boolean isSubIdValid(int subId) {
+ return subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID &&
+ subId != SubscriptionManager.DEFAULT_SUBSCRIPTION_ID;
+ }
}