Loading src/java/com/android/internal/telephony/data/DataNetwork.java +8 −0 Original line number Diff line number Diff line Loading @@ -2979,6 +2979,14 @@ public class DataNetwork extends StateMachine { NetworkCapabilities.NET_CAPABILITY_NOT_VPN); } /** * @return {@code true} if this network was setup for SUPL during emergency call. {@code false} * otherwise. */ public boolean isEmergencySupl() { return mDataAllowedReason == DataAllowedReason.EMERGENCY_SUPL; } /** * Get precise data connection state * Loading src/java/com/android/internal/telephony/data/DataNetworkController.java +1 −3 Original line number Diff line number Diff line Loading @@ -1721,9 +1721,7 @@ 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.getNetworkCapabilities().hasCapability( NetworkCapabilities.NET_CAPABILITY_SUPL)) { if ((mPhone.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/data/DataNetworkControllerTest.java +19 −0 Original line number Diff line number Diff line Loading @@ -2705,6 +2705,25 @@ public class DataNetworkControllerTest extends TelephonyTest { verifyNoConnectedNetworkHasCapability(NetworkCapabilities.NET_CAPABILITY_MMS); } @Test public void testEmergencyCallDataDisabled() throws Exception { doReturn(true).when(mPhone).isInEmergencyCall(); mDataNetworkControllerUT.addNetworkRequest( createNetworkRequest(NetworkCapabilities.NET_CAPABILITY_INTERNET)); processAllMessages(); verifyInternetConnected(); // Data disabled mDataNetworkControllerUT.getDataSettingsManager().setDataEnabled( TelephonyManager.DATA_ENABLED_REASON_USER, false, mContext.getOpPackageName()); processAllMessages(); // Make sure internet is not connected. (Previously it has a bug due to incorrect logic // to determine it's for emergency SUPL). verifyAllDataDisconnected(); } @Test public void testDataActivity() { doReturn(TelephonyManager.DATA_ACTIVITY_IN).when(mLinkBandwidthEstimator).getDataActivity(); Loading Loading
src/java/com/android/internal/telephony/data/DataNetwork.java +8 −0 Original line number Diff line number Diff line Loading @@ -2979,6 +2979,14 @@ public class DataNetwork extends StateMachine { NetworkCapabilities.NET_CAPABILITY_NOT_VPN); } /** * @return {@code true} if this network was setup for SUPL during emergency call. {@code false} * otherwise. */ public boolean isEmergencySupl() { return mDataAllowedReason == DataAllowedReason.EMERGENCY_SUPL; } /** * Get precise data connection state * Loading
src/java/com/android/internal/telephony/data/DataNetworkController.java +1 −3 Original line number Diff line number Diff line Loading @@ -1721,9 +1721,7 @@ 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.getNetworkCapabilities().hasCapability( NetworkCapabilities.NET_CAPABILITY_SUPL)) { if ((mPhone.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/data/DataNetworkControllerTest.java +19 −0 Original line number Diff line number Diff line Loading @@ -2705,6 +2705,25 @@ public class DataNetworkControllerTest extends TelephonyTest { verifyNoConnectedNetworkHasCapability(NetworkCapabilities.NET_CAPABILITY_MMS); } @Test public void testEmergencyCallDataDisabled() throws Exception { doReturn(true).when(mPhone).isInEmergencyCall(); mDataNetworkControllerUT.addNetworkRequest( createNetworkRequest(NetworkCapabilities.NET_CAPABILITY_INTERNET)); processAllMessages(); verifyInternetConnected(); // Data disabled mDataNetworkControllerUT.getDataSettingsManager().setDataEnabled( TelephonyManager.DATA_ENABLED_REASON_USER, false, mContext.getOpPackageName()); processAllMessages(); // Make sure internet is not connected. (Previously it has a bug due to incorrect logic // to determine it's for emergency SUPL). verifyAllDataDisconnected(); } @Test public void testDataActivity() { doReturn(TelephonyManager.DATA_ACTIVITY_IN).when(mLinkBandwidthEstimator).getDataActivity(); Loading