Loading src/java/com/android/internal/telephony/data/DataEvaluation.java +2 −0 Original line number Diff line number Diff line Loading @@ -195,6 +195,8 @@ public class DataEvaluation { DATA_SERVICE_STATE_CHANGED, /** When data is enabled or disabled (by user, carrier, thermal, etc...) */ DATA_ENABLED_CHANGED, /** When data enabled overrides are changed (MMS always allowed, data on non-DDS sub). */ DATA_ENABLED_OVERRIDE_CHANGED, /** When data roaming is enabled or disabled. */ ROAMING_ENABLED_CHANGED, /** When voice call ended (for concurrent voice/data not supported RAT). */ Loading src/java/com/android/internal/telephony/data/DataNetworkController.java +14 −0 Original line number Diff line number Diff line Loading @@ -787,6 +787,20 @@ public class DataNetworkController extends Handler { DataEvaluationReason.DATA_ENABLED_CHANGED)); } @Override public void onDataEnabledOverrideChanged(boolean enabled, @TelephonyManager.MobileDataPolicy int policy) { // If data enabled override is enabled by the user, evaluate the // unsatisfied network requests and then attempt to setup data // networks to satisfy them. If data enabled override is disabled, // evaluate the existing data networks and see if they need to be // torn down. logl("onDataEnabledOverrideChanged: enabled=" + enabled); sendMessage(obtainMessage(enabled ? EVENT_REEVALUATE_UNSATISFIED_NETWORK_REQUESTS : EVENT_REEVALUATE_EXISTING_DATA_NETWORKS, DataEvaluationReason.DATA_ENABLED_OVERRIDE_CHANGED)); } @Override public void onDataRoamingEnabledChanged(boolean enabled) { // If data roaming is enabled by the user, evaluate the unsatisfied // network requests and then attempt to setup data networks to Loading src/java/com/android/internal/telephony/data/DataSettingsManager.java +22 −4 Original line number Diff line number Diff line Loading @@ -131,6 +131,16 @@ public class DataSettingsManager extends Handler { public void onDataEnabledChanged(boolean enabled, @TelephonyManager.DataEnabledChangedReason int reason) {} /** * Called when data enabled override changed. * * @param enabled {@code true} indicates data enabled override is enabled. * @param policy {@link TelephonyManager.MobileDataPolicy} indicating the policy that was * enabled or disabled. */ public void onDataEnabledOverrideChanged(boolean enabled, @TelephonyManager.MobileDataPolicy int policy) {} /** * Called when data roaming enabled state changed. * Loading Loading @@ -235,6 +245,8 @@ public class DataSettingsManager extends Handler { if (SubscriptionController.getInstance() .setDataEnabledOverrideRules(mSubId, mDataEnabledOverride.getRules())) { updateDataEnabledAndNotify(TelephonyManager.DATA_ENABLED_REASON_OVERRIDE); notifyDataEnabledOverrideChanged(alwaysAllow, TelephonyManager.MOBILE_DATA_POLICY_MMS_ALWAYS_ALLOWED); } break; } Loading @@ -248,13 +260,12 @@ public class DataSettingsManager extends Handler { if (SubscriptionController.getInstance() .setDataEnabledOverrideRules(mSubId, mDataEnabledOverride.getRules())) { updateDataEnabledAndNotify(TelephonyManager.DATA_ENABLED_REASON_OVERRIDE); notifyDataEnabledOverrideChanged(allow, TelephonyManager .MOBILE_DATA_POLICY_DATA_ON_NON_DEFAULT_DURING_VOICE_CALL); } break; } case EVENT_PROVISIONED_CHANGED: { updateDataEnabledAndNotify(TelephonyManager.DATA_ENABLED_REASON_UNKNOWN); break; } case EVENT_PROVISIONED_CHANGED: case EVENT_PROVISIONING_DATA_ENABLED_CHANGED: { updateDataEnabledAndNotify(TelephonyManager.DATA_ENABLED_REASON_UNKNOWN); break; Loading Loading @@ -562,6 +573,13 @@ public class DataSettingsManager extends Handler { mPhone.notifyDataEnabled(enabled, reason); } private void notifyDataEnabledOverrideChanged(boolean enabled, @TelephonyManager.MobileDataPolicy int policy) { logl("notifyDataEnabledOverrideChanged: enabled=" + enabled); mDataSettingsManagerCallbacks.forEach(callback -> callback.invokeFromExecutor( () -> callback.onDataEnabledOverrideChanged(enabled, policy))); } /** * Register the callback for receiving information from {@link DataSettingsManager}. * Loading tests/telephonytests/src/com/android/internal/telephony/data/DataNetworkControllerTest.java +9 −0 Original line number Diff line number Diff line Loading @@ -524,6 +524,8 @@ public class DataNetworkControllerTest extends TelephonyTest { doReturn(true).when(mSST).isConcurrentVoiceAndDataAllowed(); doReturn(PhoneConstants.State.IDLE).when(mCT).getState(); doReturn("").when(mSubscriptionController).getDataEnabledOverrideRules(anyInt()); doReturn(true).when(mSubscriptionController).setDataEnabledOverrideRules( anyInt(), anyString()); for (int transport : new int[]{AccessNetworkConstants.TRANSPORT_TYPE_WWAN, AccessNetworkConstants.TRANSPORT_TYPE_WLAN}) { Loading Loading @@ -1101,6 +1103,13 @@ public class DataNetworkControllerTest extends TelephonyTest { verifyConnectedNetworkHasDataProfile(mGeneralPurposeDataProfile); verifyNoConnectedNetworkHasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET); verifyNoConnectedNetworkHasCapability(NetworkCapabilities.NET_CAPABILITY_SUPL); // Remove MMS data enabled override mDataNetworkControllerUT.getDataSettingsManager().setAlwaysAllowMmsData(false); processAllMessages(); // Make sure MMS is torn down when the override is disabled. verifyNoConnectedNetworkHasCapability(NetworkCapabilities.NET_CAPABILITY_MMS); } @Test Loading Loading
src/java/com/android/internal/telephony/data/DataEvaluation.java +2 −0 Original line number Diff line number Diff line Loading @@ -195,6 +195,8 @@ public class DataEvaluation { DATA_SERVICE_STATE_CHANGED, /** When data is enabled or disabled (by user, carrier, thermal, etc...) */ DATA_ENABLED_CHANGED, /** When data enabled overrides are changed (MMS always allowed, data on non-DDS sub). */ DATA_ENABLED_OVERRIDE_CHANGED, /** When data roaming is enabled or disabled. */ ROAMING_ENABLED_CHANGED, /** When voice call ended (for concurrent voice/data not supported RAT). */ Loading
src/java/com/android/internal/telephony/data/DataNetworkController.java +14 −0 Original line number Diff line number Diff line Loading @@ -787,6 +787,20 @@ public class DataNetworkController extends Handler { DataEvaluationReason.DATA_ENABLED_CHANGED)); } @Override public void onDataEnabledOverrideChanged(boolean enabled, @TelephonyManager.MobileDataPolicy int policy) { // If data enabled override is enabled by the user, evaluate the // unsatisfied network requests and then attempt to setup data // networks to satisfy them. If data enabled override is disabled, // evaluate the existing data networks and see if they need to be // torn down. logl("onDataEnabledOverrideChanged: enabled=" + enabled); sendMessage(obtainMessage(enabled ? EVENT_REEVALUATE_UNSATISFIED_NETWORK_REQUESTS : EVENT_REEVALUATE_EXISTING_DATA_NETWORKS, DataEvaluationReason.DATA_ENABLED_OVERRIDE_CHANGED)); } @Override public void onDataRoamingEnabledChanged(boolean enabled) { // If data roaming is enabled by the user, evaluate the unsatisfied // network requests and then attempt to setup data networks to Loading
src/java/com/android/internal/telephony/data/DataSettingsManager.java +22 −4 Original line number Diff line number Diff line Loading @@ -131,6 +131,16 @@ public class DataSettingsManager extends Handler { public void onDataEnabledChanged(boolean enabled, @TelephonyManager.DataEnabledChangedReason int reason) {} /** * Called when data enabled override changed. * * @param enabled {@code true} indicates data enabled override is enabled. * @param policy {@link TelephonyManager.MobileDataPolicy} indicating the policy that was * enabled or disabled. */ public void onDataEnabledOverrideChanged(boolean enabled, @TelephonyManager.MobileDataPolicy int policy) {} /** * Called when data roaming enabled state changed. * Loading Loading @@ -235,6 +245,8 @@ public class DataSettingsManager extends Handler { if (SubscriptionController.getInstance() .setDataEnabledOverrideRules(mSubId, mDataEnabledOverride.getRules())) { updateDataEnabledAndNotify(TelephonyManager.DATA_ENABLED_REASON_OVERRIDE); notifyDataEnabledOverrideChanged(alwaysAllow, TelephonyManager.MOBILE_DATA_POLICY_MMS_ALWAYS_ALLOWED); } break; } Loading @@ -248,13 +260,12 @@ public class DataSettingsManager extends Handler { if (SubscriptionController.getInstance() .setDataEnabledOverrideRules(mSubId, mDataEnabledOverride.getRules())) { updateDataEnabledAndNotify(TelephonyManager.DATA_ENABLED_REASON_OVERRIDE); notifyDataEnabledOverrideChanged(allow, TelephonyManager .MOBILE_DATA_POLICY_DATA_ON_NON_DEFAULT_DURING_VOICE_CALL); } break; } case EVENT_PROVISIONED_CHANGED: { updateDataEnabledAndNotify(TelephonyManager.DATA_ENABLED_REASON_UNKNOWN); break; } case EVENT_PROVISIONED_CHANGED: case EVENT_PROVISIONING_DATA_ENABLED_CHANGED: { updateDataEnabledAndNotify(TelephonyManager.DATA_ENABLED_REASON_UNKNOWN); break; Loading Loading @@ -562,6 +573,13 @@ public class DataSettingsManager extends Handler { mPhone.notifyDataEnabled(enabled, reason); } private void notifyDataEnabledOverrideChanged(boolean enabled, @TelephonyManager.MobileDataPolicy int policy) { logl("notifyDataEnabledOverrideChanged: enabled=" + enabled); mDataSettingsManagerCallbacks.forEach(callback -> callback.invokeFromExecutor( () -> callback.onDataEnabledOverrideChanged(enabled, policy))); } /** * Register the callback for receiving information from {@link DataSettingsManager}. * Loading
tests/telephonytests/src/com/android/internal/telephony/data/DataNetworkControllerTest.java +9 −0 Original line number Diff line number Diff line Loading @@ -524,6 +524,8 @@ public class DataNetworkControllerTest extends TelephonyTest { doReturn(true).when(mSST).isConcurrentVoiceAndDataAllowed(); doReturn(PhoneConstants.State.IDLE).when(mCT).getState(); doReturn("").when(mSubscriptionController).getDataEnabledOverrideRules(anyInt()); doReturn(true).when(mSubscriptionController).setDataEnabledOverrideRules( anyInt(), anyString()); for (int transport : new int[]{AccessNetworkConstants.TRANSPORT_TYPE_WWAN, AccessNetworkConstants.TRANSPORT_TYPE_WLAN}) { Loading Loading @@ -1101,6 +1103,13 @@ public class DataNetworkControllerTest extends TelephonyTest { verifyConnectedNetworkHasDataProfile(mGeneralPurposeDataProfile); verifyNoConnectedNetworkHasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET); verifyNoConnectedNetworkHasCapability(NetworkCapabilities.NET_CAPABILITY_SUPL); // Remove MMS data enabled override mDataNetworkControllerUT.getDataSettingsManager().setAlwaysAllowMmsData(false); processAllMessages(); // Make sure MMS is torn down when the override is disabled. verifyNoConnectedNetworkHasCapability(NetworkCapabilities.NET_CAPABILITY_MMS); } @Test Loading