aboutsummaryrefslogtreecommitdiff
path: root/src/java/com/android/internal/telephony/data/DataSettingsManager.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/java/com/android/internal/telephony/data/DataSettingsManager.java')
-rw-r--r--src/java/com/android/internal/telephony/data/DataSettingsManager.java27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/java/com/android/internal/telephony/data/DataSettingsManager.java b/src/java/com/android/internal/telephony/data/DataSettingsManager.java
index 5178ae4831..f8365bbef5 100644
--- a/src/java/com/android/internal/telephony/data/DataSettingsManager.java
+++ b/src/java/com/android/internal/telephony/data/DataSettingsManager.java
@@ -130,6 +130,14 @@ public class DataSettingsManager extends Handler {
}
/**
+ * Called when user data enabled state changed.
+ *
+ * @param enabled {@code true} indicates user mobile data is enabled.
+ * @param callingPackage The package that changed the data enabled state.
+ */
+ public void onUserDataEnabledChanged(boolean enabled, @NonNull String callingPackage) {}
+
+ /**
* Called when overall data enabled state changed.
*
* @param enabled {@code true} indicates mobile data is enabled.
@@ -289,6 +297,23 @@ public class DataSettingsManager extends Handler {
}
}
}, this::post);
+ // some overall mobile data override policy depend on whether DDS is user data enabled.
+ for (Phone phone : PhoneFactory.getPhones()) {
+ if (phone.getPhoneId() != mPhone.getPhoneId()) {
+ phone.getDataSettingsManager().registerCallback(new DataSettingsManagerCallback(
+ this::post) {
+ @Override
+ public void onUserDataEnabledChanged(boolean enabled,
+ @NonNull String callingPackage) {
+ log("phone" + phone.getPhoneId() + " onUserDataEnabledChanged "
+ + enabled + " by " + callingPackage
+ + ", reevaluating mobile data policies");
+ DataSettingsManager.this.updateDataEnabledAndNotify(
+ TelephonyManager.DATA_ENABLED_REASON_OVERRIDE);
+ }
+ });
+ }
+ }
updateDataEnabledAndNotify(TelephonyManager.DATA_ENABLED_REASON_UNKNOWN);
}
@@ -416,6 +441,8 @@ public class DataSettingsManager extends Handler {
if (changed) {
logl("UserDataEnabled changed to " + enabled);
mPhone.notifyUserMobileDataStateChanged(enabled);
+ mDataSettingsManagerCallbacks.forEach(callback -> callback.invokeFromExecutor(
+ () -> callback.onUserDataEnabledChanged(enabled, callingPackage)));
updateDataEnabledAndNotify(TelephonyManager.DATA_ENABLED_REASON_USER, callingPackage);
}
}