aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSarah Chin <sarahchin@google.com>2022-06-03 17:06:38 -0700
committerSarah Chin <sarahchin@google.com>2022-06-04 04:03:29 +0000
commit3027f55d6ca5d3152560cf9fd8ad7423fce29d69 (patch)
tree2d02c6ee00383e40b2573bf312418fa5c38c028e
parent03083c8f77170bec6743037b98246430c1dcafc8 (diff)
downloadtelephony-3027f55d6ca5d3152560cf9fd8ad7423fce29d69.tar.gz
Persist user data roaming settings
Indicate when user has manually set data roaming settings Bug: 234426855 Test: manually verify roaming value after hard reset and reboot Change-Id: I247f782936bf7f83e3db89c2be2b1086e4b899ba
-rw-r--r--src/java/com/android/internal/telephony/data/DataSettingsManager.java45
1 files changed, 34 insertions, 11 deletions
diff --git a/src/java/com/android/internal/telephony/data/DataSettingsManager.java b/src/java/com/android/internal/telephony/data/DataSettingsManager.java
index 68c1b5d110..e2c1aff05a 100644
--- a/src/java/com/android/internal/telephony/data/DataSettingsManager.java
+++ b/src/java/com/android/internal/telephony/data/DataSettingsManager.java
@@ -228,14 +228,8 @@ public class DataSettingsManager extends Handler {
}
case EVENT_SET_DATA_ROAMING_ENABLED: {
boolean enabled = (boolean) msg.obj;
- // Will trigger handleDataOnRoamingChange() through observer
- boolean changed = GlobalSettingsHelper.setBoolean(mPhone.getContext(),
- Settings.Global.DATA_ROAMING, mSubId, enabled);
- if (changed) {
- logl("DataRoamingEnabled changed to " + enabled);
- mDataSettingsManagerCallbacks.forEach(callback -> callback.invokeFromExecutor(
- () -> callback.onDataRoamingEnabledChanged(enabled)));
- }
+ setDataRoamingEnabledInternal(enabled);
+ setDataRoamingFromUserAction();
break;
}
case EVENT_SET_ALWAYS_ALLOW_MMS_DATA: {
@@ -501,7 +495,7 @@ public class DataSettingsManager extends Handler {
}
/**
- * Enable or disable data roaming.
+ * Enable or disable data roaming from user settings.
* @param enabled {@code true} to enable data roaming and {@code false} to disable.
*/
public void setDataRoamingEnabled(boolean enabled) {
@@ -509,6 +503,21 @@ public class DataSettingsManager extends Handler {
}
/**
+ * Enable or disable data roaming.
+ * @param enabled {@code true} to enable data roaming and {@code false} to disable.
+ */
+ private void setDataRoamingEnabledInternal(boolean enabled) {
+ // Will trigger handleDataOnRoamingChange() through observer
+ boolean changed = GlobalSettingsHelper.setBoolean(mPhone.getContext(),
+ Settings.Global.DATA_ROAMING, mSubId, enabled);
+ if (changed) {
+ logl("DataRoamingEnabled changed to " + enabled);
+ mDataSettingsManagerCallbacks.forEach(callback -> callback.invokeFromExecutor(
+ () -> callback.onDataRoamingEnabledChanged(enabled)));
+ }
+ }
+
+ /**
* Check whether data roaming is enabled for the device based on the current
* {@link Settings.Global#DATA_ROAMING} value.
* @return {@code true} if data roaming is enabled and {@code false} otherwise.
@@ -537,7 +546,7 @@ public class DataSettingsManager extends Handler {
public void setDefaultDataRoamingEnabled() {
// For SSSS, this is a per-phone property from DATA_ROAMING_IS_USER_SETTING_KEY.
// For DSDS, this is a per-sub property from Settings.Global.DATA_ROAMING + subId.
- // If the user has not manually set the value, use the default from carrier configurations.
+ // If the user has not manually set the value, use the default value.
boolean useCarrierSpecificDefault = false;
if (mPhone.getContext().getSystemService(TelephonyManager.class).getSimCount() != 1) {
String setting = Settings.Global.DATA_ROAMING + mPhone.getSubId();
@@ -554,7 +563,7 @@ public class DataSettingsManager extends Handler {
log("setDefaultDataRoamingEnabled: useCarrierSpecificDefault=" + useCarrierSpecificDefault);
if (useCarrierSpecificDefault) {
boolean defaultVal = isDefaultDataRoamingEnabled();
- setDataRoamingEnabled(defaultVal);
+ setDataRoamingEnabledInternal(defaultVal);
}
}
@@ -573,6 +582,17 @@ public class DataSettingsManager extends Handler {
return sp.getBoolean(Phone.DATA_ROAMING_IS_USER_SETTING_KEY, true);
}
+ /**
+ * Indicate that the user has manually enabled or disabled the data roaming value from settings.
+ * If the user has not manually set the data roaming value, the default value from
+ * {@link #isDefaultDataRoamingEnabled()} will continue to be used.
+ */
+ private void setDataRoamingFromUserAction() {
+ final SharedPreferences.Editor sp = PreferenceManager
+ .getDefaultSharedPreferences(mPhone.getContext()).edit();
+ sp.putBoolean(Phone.DATA_ROAMING_IS_USER_SETTING_KEY, true).commit();
+ }
+
private @NonNull DataEnabledOverride getDataEnabledOverride() {
return new DataEnabledOverride(SubscriptionController.getInstance()
.getDataEnabledOverrideRules(mSubId));
@@ -724,6 +744,9 @@ public class DataSettingsManager extends Handler {
pw.println("isDataEnabled(internet)=" + isDataEnabled(ApnSetting.TYPE_DEFAULT));
pw.println("isDataEnabled(mms)=" + isDataEnabled(ApnSetting.TYPE_MMS));
pw.println("isUserDataEnabled=" + isUserDataEnabled());
+ pw.println("isDataRoamingEnabled=" + isDataRoamingEnabled());
+ pw.println("isDefaultDataRoamingEnabled=" + isDefaultDataRoamingEnabled());
+ pw.println("isDataRoamingFromUserAction=" + isDataRoamingFromUserAction());
pw.println("device_provisioned=" + Settings.Global.getInt(
mResolver, Settings.Global.DEVICE_PROVISIONED, 0));
pw.println("isProvisioningDataEnabled=" + isProvisioningDataEnabled());