Loading src/java/com/android/internal/telephony/data/DataNetworkController.java +6 −2 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ import android.os.AsyncResult; import android.os.Handler; import android.os.Looper; import android.os.Message; import android.telecom.TelecomManager; import android.telephony.AccessNetworkConstants; import android.telephony.AccessNetworkConstants.AccessNetworkType; import android.telephony.AccessNetworkConstants.RadioAccessNetworkType; Loading Loading @@ -230,6 +231,7 @@ public class DataNetworkController extends Handler { private final @NonNull AccessNetworksManager mAccessNetworksManager; private final @NonNull DataRetryManager mDataRetryManager; private final @NonNull ImsManager mImsManager; private final @NonNull TelecomManager mTelecomManager; private final @NonNull NetworkPolicyManager mNetworkPolicyManager; private final @NonNull SparseArray<DataServiceManager> mDataServiceManagers = new SparseArray<>(); Loading Loading @@ -910,6 +912,7 @@ public class DataNetworkController extends Handler { }); mImsManager = mPhone.getContext().getSystemService(ImsManager.class); mNetworkPolicyManager = mPhone.getContext().getSystemService(NetworkPolicyManager.class); mTelecomManager = mPhone.getContext().getSystemService(TelecomManager.class); // Use the raw one from ServiceStateTracker instead of the combined one from // mPhone.getServiceState(). Loading Loading @@ -1569,7 +1572,7 @@ public class DataNetworkController extends Handler { evaluation.addDataAllowedReason(DataAllowedReason.MMS_REQUEST); } } else if (!evaluation.containsHardDisallowedReasons()) { if ((mPhone.isInEmergencyCall() || mPhone.isInEcm()) if ((mTelecomManager.isInEmergencyCall() || mPhone.isInEcm()) && networkRequest.hasCapability(NetworkCapabilities.NET_CAPABILITY_SUPL)) { // Check if it's SUPL during emergency call. evaluation.addDataAllowedReason(DataAllowedReason.EMERGENCY_SUPL); Loading Loading @@ -1827,7 +1830,8 @@ public class DataNetworkController extends Handler { // If there are reasons we should tear down the network, check if those are hard reasons // or soft reasons. In some scenarios, we can make exceptions if they are soft // disallowed reasons. if ((mPhone.isInEmergencyCall() || mPhone.isInEcm()) && dataNetwork.isEmergencySupl()) { if ((mTelecomManager.isInEmergencyCall() || mPhone.isInEcm()) && dataNetwork.isEmergencySupl()) { // Check if it's SUPL during emergency call. evaluation.addDataAllowedReason(DataAllowedReason.EMERGENCY_SUPL); } else if (!dataNetwork.getNetworkCapabilities().hasCapability( Loading tests/telephonytests/src/com/android/internal/telephony/TelephonyTest.java +3 −0 Original line number Diff line number Diff line Loading @@ -69,6 +69,7 @@ import android.provider.BlockedNumberContract; import android.provider.DeviceConfig; import android.provider.Settings; import android.provider.Telephony; import android.telecom.TelecomManager; import android.telephony.AccessNetworkConstants; import android.telephony.CarrierConfigManager; import android.telephony.CellIdentity; Loading Loading @@ -266,6 +267,7 @@ public abstract class TelephonyTest { protected ActivityManager mActivityManager; protected ImsCallProfile mImsCallProfile; protected TelephonyManager mTelephonyManager; protected TelecomManager mTelecomManager; protected TelephonyRegistryManager mTelephonyRegistryManager; protected SubscriptionManager mSubscriptionManager; protected EuiccManager mEuiccManager; Loading Loading @@ -523,6 +525,7 @@ public abstract class TelephonyTest { doReturn(mUiccProfile).when(mUiccPort).getUiccProfile(); mTelephonyManager = (TelephonyManager) mContext.getSystemService(Context.TELEPHONY_SERVICE); mTelecomManager = mContext.getSystemService(TelecomManager.class); mActivityManager = (ActivityManager) mContext.getSystemService(Context.ACTIVITY_SERVICE); mTelephonyRegistryManager = (TelephonyRegistryManager) mContext.getSystemService( Context.TELEPHONY_REGISTRY_SERVICE); Loading tests/telephonytests/src/com/android/internal/telephony/data/DataNetworkControllerTest.java +2 −2 Original line number Diff line number Diff line Loading @@ -3356,7 +3356,7 @@ public class DataNetworkControllerTest extends TelephonyTest { mDataNetworkControllerUT.getDataSettingsManager().setDataEnabled( TelephonyManager.DATA_ENABLED_REASON_USER, false, mContext.getOpPackageName()); processAllMessages(); doReturn(true).when(mPhone).isInEmergencyCall(); doReturn(true).when(mTelecomManager).isInEmergencyCall(); mDataNetworkControllerUT.addNetworkRequest( createNetworkRequest(NetworkCapabilities.NET_CAPABILITY_SUPL)); processAllMessages(); Loading @@ -3370,7 +3370,7 @@ public class DataNetworkControllerTest extends TelephonyTest { @Test public void testEmergencyCallDataDisabled() throws Exception { doReturn(true).when(mPhone).isInEmergencyCall(); doReturn(true).when(mTelecomManager).isInEmergencyCall(); mDataNetworkControllerUT.addNetworkRequest( createNetworkRequest(NetworkCapabilities.NET_CAPABILITY_INTERNET)); processAllMessages(); Loading Loading
src/java/com/android/internal/telephony/data/DataNetworkController.java +6 −2 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ import android.os.AsyncResult; import android.os.Handler; import android.os.Looper; import android.os.Message; import android.telecom.TelecomManager; import android.telephony.AccessNetworkConstants; import android.telephony.AccessNetworkConstants.AccessNetworkType; import android.telephony.AccessNetworkConstants.RadioAccessNetworkType; Loading Loading @@ -230,6 +231,7 @@ public class DataNetworkController extends Handler { private final @NonNull AccessNetworksManager mAccessNetworksManager; private final @NonNull DataRetryManager mDataRetryManager; private final @NonNull ImsManager mImsManager; private final @NonNull TelecomManager mTelecomManager; private final @NonNull NetworkPolicyManager mNetworkPolicyManager; private final @NonNull SparseArray<DataServiceManager> mDataServiceManagers = new SparseArray<>(); Loading Loading @@ -910,6 +912,7 @@ public class DataNetworkController extends Handler { }); mImsManager = mPhone.getContext().getSystemService(ImsManager.class); mNetworkPolicyManager = mPhone.getContext().getSystemService(NetworkPolicyManager.class); mTelecomManager = mPhone.getContext().getSystemService(TelecomManager.class); // Use the raw one from ServiceStateTracker instead of the combined one from // mPhone.getServiceState(). Loading Loading @@ -1569,7 +1572,7 @@ public class DataNetworkController extends Handler { evaluation.addDataAllowedReason(DataAllowedReason.MMS_REQUEST); } } else if (!evaluation.containsHardDisallowedReasons()) { if ((mPhone.isInEmergencyCall() || mPhone.isInEcm()) if ((mTelecomManager.isInEmergencyCall() || mPhone.isInEcm()) && networkRequest.hasCapability(NetworkCapabilities.NET_CAPABILITY_SUPL)) { // Check if it's SUPL during emergency call. evaluation.addDataAllowedReason(DataAllowedReason.EMERGENCY_SUPL); Loading Loading @@ -1827,7 +1830,8 @@ public class DataNetworkController extends Handler { // If there are reasons we should tear down the network, check if those are hard reasons // or soft reasons. In some scenarios, we can make exceptions if they are soft // disallowed reasons. if ((mPhone.isInEmergencyCall() || mPhone.isInEcm()) && dataNetwork.isEmergencySupl()) { if ((mTelecomManager.isInEmergencyCall() || mPhone.isInEcm()) && dataNetwork.isEmergencySupl()) { // Check if it's SUPL during emergency call. evaluation.addDataAllowedReason(DataAllowedReason.EMERGENCY_SUPL); } else if (!dataNetwork.getNetworkCapabilities().hasCapability( Loading
tests/telephonytests/src/com/android/internal/telephony/TelephonyTest.java +3 −0 Original line number Diff line number Diff line Loading @@ -69,6 +69,7 @@ import android.provider.BlockedNumberContract; import android.provider.DeviceConfig; import android.provider.Settings; import android.provider.Telephony; import android.telecom.TelecomManager; import android.telephony.AccessNetworkConstants; import android.telephony.CarrierConfigManager; import android.telephony.CellIdentity; Loading Loading @@ -266,6 +267,7 @@ public abstract class TelephonyTest { protected ActivityManager mActivityManager; protected ImsCallProfile mImsCallProfile; protected TelephonyManager mTelephonyManager; protected TelecomManager mTelecomManager; protected TelephonyRegistryManager mTelephonyRegistryManager; protected SubscriptionManager mSubscriptionManager; protected EuiccManager mEuiccManager; Loading Loading @@ -523,6 +525,7 @@ public abstract class TelephonyTest { doReturn(mUiccProfile).when(mUiccPort).getUiccProfile(); mTelephonyManager = (TelephonyManager) mContext.getSystemService(Context.TELEPHONY_SERVICE); mTelecomManager = mContext.getSystemService(TelecomManager.class); mActivityManager = (ActivityManager) mContext.getSystemService(Context.ACTIVITY_SERVICE); mTelephonyRegistryManager = (TelephonyRegistryManager) mContext.getSystemService( Context.TELEPHONY_REGISTRY_SERVICE); Loading
tests/telephonytests/src/com/android/internal/telephony/data/DataNetworkControllerTest.java +2 −2 Original line number Diff line number Diff line Loading @@ -3356,7 +3356,7 @@ public class DataNetworkControllerTest extends TelephonyTest { mDataNetworkControllerUT.getDataSettingsManager().setDataEnabled( TelephonyManager.DATA_ENABLED_REASON_USER, false, mContext.getOpPackageName()); processAllMessages(); doReturn(true).when(mPhone).isInEmergencyCall(); doReturn(true).when(mTelecomManager).isInEmergencyCall(); mDataNetworkControllerUT.addNetworkRequest( createNetworkRequest(NetworkCapabilities.NET_CAPABILITY_SUPL)); processAllMessages(); Loading @@ -3370,7 +3370,7 @@ public class DataNetworkControllerTest extends TelephonyTest { @Test public void testEmergencyCallDataDisabled() throws Exception { doReturn(true).when(mPhone).isInEmergencyCall(); doReturn(true).when(mTelecomManager).isInEmergencyCall(); mDataNetworkControllerUT.addNetworkRequest( createNetworkRequest(NetworkCapabilities.NET_CAPABILITY_INTERNET)); processAllMessages(); Loading