Loading flags/data.aconfig +7 −0 Original line number Diff line number Diff line Loading @@ -90,3 +90,10 @@ flag { description: "Collect vonr status in voice call metric" bug:"288449751" } flag { name: "ignore_existing_networks_for_internet_allowed_checking" namespace: "telephony" description: "Ignore existing networks when checking if internet is allowed" bug: "284420611" } src/java/com/android/internal/telephony/Phone.java +1 −1 Original line number Diff line number Diff line Loading @@ -3749,7 +3749,7 @@ public abstract class Phone extends Handler implements PhoneInternalInterface { * @return {@code true} if internet data is allowed to be established. */ public boolean isDataAllowed() { return getDataNetworkController().isInternetDataAllowed(); return getDataNetworkController().isInternetDataAllowed(false/* ignoreExistingNetworks */); } /** Loading src/java/com/android/internal/telephony/data/DataNetworkController.java +9 −5 Original line number Diff line number Diff line Loading @@ -1408,21 +1408,25 @@ public class DataNetworkController extends Handler { /** * Evaluate if telephony frameworks would allow data setup for internet in current environment. * * @param ignoreExistingNetworks {@code true} to skip the existing network check. * @return {@code true} if the environment is allowed for internet data. {@code false} if not * allowed. For example, if SIM is absent, or airplane mode is on, then data is NOT allowed. * This API does not reflect the currently internet data network status. It's possible there is * no internet data due to weak cellular signal or network side issue, but internet data is * still allowed in this case. */ public boolean isInternetDataAllowed() { public boolean isInternetDataAllowed(boolean ignoreExistingNetworks) { TelephonyNetworkRequest internetRequest = new TelephonyNetworkRequest( new NetworkRequest.Builder() .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) .addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR) .build(), mPhone); // If one of the existing networks can satisfy the internet request, then internet is // allowed. if (mDataNetworkList.stream().anyMatch(dataNetwork -> internetRequest.canBeSatisfiedBy( // If we don't skip checking existing network, then we should check If one of the // existing networks can satisfy the internet request, then internet is allowed. if ((!mFeatureFlags.ignoreExistingNetworksForInternetAllowedChecking() || !ignoreExistingNetworks) && mDataNetworkList.stream().anyMatch( dataNetwork -> internetRequest.canBeSatisfiedBy( dataNetwork.getNetworkCapabilities()))) { return true; } Loading src/java/com/android/internal/telephony/data/DataStallRecoveryManager.java +1 −1 Original line number Diff line number Diff line Loading @@ -781,7 +781,7 @@ public class DataStallRecoveryManager extends Handler { return false; } if (!mDataNetworkController.isInternetDataAllowed()) { if (!mDataNetworkController.isInternetDataAllowed(true/* ignoreExistingNetworks */)) { logl("skip data stall recovery as data not allowed."); return false; } Loading tests/telephonytests/src/com/android/internal/telephony/data/DataStallRecoveryManagerTest.java +2 −2 Original line number Diff line number Diff line Loading @@ -107,7 +107,7 @@ public class DataStallRecoveryManagerTest extends TelephonyTest { doReturn(dataStallRecoveryStepsArray) .when(mDataConfigManager) .getDataStallRecoveryShouldSkipArray(); doReturn(true).when(mDataNetworkController).isInternetDataAllowed(); doReturn(true).when(mDataNetworkController).isInternetDataAllowed(true); doAnswer(invocation -> { ((Runnable) invocation.getArguments()[0]).run(); Loading Loading @@ -347,7 +347,7 @@ public class DataStallRecoveryManagerTest extends TelephonyTest { mDataStallRecoveryManager.setRecoveryAction(1); doReturn(mSignalStrength).when(mPhone).getSignalStrength(); doReturn(PhoneConstants.State.IDLE).when(mPhone).getState(); doReturn(false).when(mDataNetworkController).isInternetDataAllowed(); doReturn(false).when(mDataNetworkController).isInternetDataAllowed(true); logd("Sending validation failed callback"); sendValidationStatusCallback(NetworkAgent.VALIDATION_STATUS_NOT_VALID); Loading Loading
flags/data.aconfig +7 −0 Original line number Diff line number Diff line Loading @@ -90,3 +90,10 @@ flag { description: "Collect vonr status in voice call metric" bug:"288449751" } flag { name: "ignore_existing_networks_for_internet_allowed_checking" namespace: "telephony" description: "Ignore existing networks when checking if internet is allowed" bug: "284420611" }
src/java/com/android/internal/telephony/Phone.java +1 −1 Original line number Diff line number Diff line Loading @@ -3749,7 +3749,7 @@ public abstract class Phone extends Handler implements PhoneInternalInterface { * @return {@code true} if internet data is allowed to be established. */ public boolean isDataAllowed() { return getDataNetworkController().isInternetDataAllowed(); return getDataNetworkController().isInternetDataAllowed(false/* ignoreExistingNetworks */); } /** Loading
src/java/com/android/internal/telephony/data/DataNetworkController.java +9 −5 Original line number Diff line number Diff line Loading @@ -1408,21 +1408,25 @@ public class DataNetworkController extends Handler { /** * Evaluate if telephony frameworks would allow data setup for internet in current environment. * * @param ignoreExistingNetworks {@code true} to skip the existing network check. * @return {@code true} if the environment is allowed for internet data. {@code false} if not * allowed. For example, if SIM is absent, or airplane mode is on, then data is NOT allowed. * This API does not reflect the currently internet data network status. It's possible there is * no internet data due to weak cellular signal or network side issue, but internet data is * still allowed in this case. */ public boolean isInternetDataAllowed() { public boolean isInternetDataAllowed(boolean ignoreExistingNetworks) { TelephonyNetworkRequest internetRequest = new TelephonyNetworkRequest( new NetworkRequest.Builder() .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) .addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR) .build(), mPhone); // If one of the existing networks can satisfy the internet request, then internet is // allowed. if (mDataNetworkList.stream().anyMatch(dataNetwork -> internetRequest.canBeSatisfiedBy( // If we don't skip checking existing network, then we should check If one of the // existing networks can satisfy the internet request, then internet is allowed. if ((!mFeatureFlags.ignoreExistingNetworksForInternetAllowedChecking() || !ignoreExistingNetworks) && mDataNetworkList.stream().anyMatch( dataNetwork -> internetRequest.canBeSatisfiedBy( dataNetwork.getNetworkCapabilities()))) { return true; } Loading
src/java/com/android/internal/telephony/data/DataStallRecoveryManager.java +1 −1 Original line number Diff line number Diff line Loading @@ -781,7 +781,7 @@ public class DataStallRecoveryManager extends Handler { return false; } if (!mDataNetworkController.isInternetDataAllowed()) { if (!mDataNetworkController.isInternetDataAllowed(true/* ignoreExistingNetworks */)) { logl("skip data stall recovery as data not allowed."); return false; } Loading
tests/telephonytests/src/com/android/internal/telephony/data/DataStallRecoveryManagerTest.java +2 −2 Original line number Diff line number Diff line Loading @@ -107,7 +107,7 @@ public class DataStallRecoveryManagerTest extends TelephonyTest { doReturn(dataStallRecoveryStepsArray) .when(mDataConfigManager) .getDataStallRecoveryShouldSkipArray(); doReturn(true).when(mDataNetworkController).isInternetDataAllowed(); doReturn(true).when(mDataNetworkController).isInternetDataAllowed(true); doAnswer(invocation -> { ((Runnable) invocation.getArguments()[0]).run(); Loading Loading @@ -347,7 +347,7 @@ public class DataStallRecoveryManagerTest extends TelephonyTest { mDataStallRecoveryManager.setRecoveryAction(1); doReturn(mSignalStrength).when(mPhone).getSignalStrength(); doReturn(PhoneConstants.State.IDLE).when(mPhone).getState(); doReturn(false).when(mDataNetworkController).isInternetDataAllowed(); doReturn(false).when(mDataNetworkController).isInternetDataAllowed(true); logd("Sending validation failed callback"); sendValidationStatusCallback(NetworkAgent.VALIDATION_STATUS_NOT_VALID); Loading