diff options
author | Sarah Chin <sarahchin@google.com> | 2022-06-03 17:06:38 -0700 |
---|---|---|
committer | Sarah Chin <sarahchin@google.com> | 2022-06-04 04:03:29 +0000 |
commit | 3027f55d6ca5d3152560cf9fd8ad7423fce29d69 (patch) | |
tree | 2d02c6ee00383e40b2573bf312418fa5c38c028e | |
parent | 03083c8f77170bec6743037b98246430c1dcafc8 (diff) | |
download | telephony-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.java | 45 |
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()); |