Loading src/java/com/android/internal/telephony/data/DataNetworkController.java +6 −0 Original line number Diff line number Diff line Loading @@ -2604,6 +2604,12 @@ public class DataNetworkController extends Handler { + "(0x" + Integer.toHexString(cause) + "), retryDelayMillis=" + retryDelayMillis + "ms, handoverFailureMode=" + DataCallResponse.failureModeToString(handoverFailureMode)); if (dataNetwork.getAttachedNetworkRequestList().isEmpty()) { log("onDataNetworkHandoverFailed: No network requests attached to " + dataNetwork + ". No need to retry since the network will be torn down soon."); return; } if (handoverFailureMode == DataCallResponse.HANDOVER_FAILURE_MODE_DO_FALLBACK || (handoverFailureMode == DataCallResponse.HANDOVER_FAILURE_MODE_LEGACY && cause == DataFailCause.HANDOFF_PREFERENCE_CHANGED)) { Loading src/java/com/android/internal/telephony/data/DataRetryManager.java +3 −2 Original line number Diff line number Diff line Loading @@ -1042,7 +1042,7 @@ public class DataRetryManager extends Handler { private void onEvaluateDataSetupRetry(@NonNull DataProfile dataProfile, @TransportType int transport, @NonNull NetworkRequestList requestList, @DataFailureCause int cause, long retryDelayMillis) { logl("onEvaluateDataRetry: " + dataProfile + ", transport=" logl("onEvaluateDataSetupRetry: " + dataProfile + ", transport=" + AccessNetworkConstants.transportTypeToString(transport) + ", cause=" + DataFailCause.toString(cause) + ", retryDelayMillis=" + retryDelayMillis + "ms" + ", " + requestList); Loading Loading @@ -1128,7 +1128,8 @@ public class DataRetryManager extends Handler { } if (!retryScheduled) { log("onEvaluateDataRetry: Did not match any retry rule. Stop timer-based retry."); log("onEvaluateDataSetupRetry: Did not match any retry rule. Stop timer-based " + "retry."); } } } Loading tests/telephonytests/src/com/android/internal/telephony/data/DataNetworkControllerTest.java +36 −4 Original line number Diff line number Diff line Loading @@ -1606,9 +1606,8 @@ public class DataNetworkControllerTest extends TelephonyTest { AccessNetworkConstants.TRANSPORT_TYPE_WWAN); verify(mMockedWwanDataServiceManager, times(1)).setupDataCall( anyInt(), any(), anyBoolean(), anyBoolean(), eq(DataService.REQUEST_REASON_HANDOVER), any(), anyInt(), any(), any(), eq(true), any()); eq(DataService.REQUEST_REASON_HANDOVER), any(), anyInt(), any(), any(), eq(true), any()); } @Test Loading Loading @@ -1661,7 +1660,40 @@ public class DataNetworkControllerTest extends TelephonyTest { assertThat(dataNetwork.getTransport()).isEqualTo( AccessNetworkConstants.TRANSPORT_TYPE_WLAN); verify(mMockedWlanDataServiceManager).setupDataCall(anyInt(), verify(mMockedWlanDataServiceManager).setupDataCall(anyInt(), any(DataProfile.class), anyBoolean(), anyBoolean(), eq(DataService.REQUEST_REASON_NORMAL), any(), anyInt(), any(), any(), anyBoolean(), any(Message.class)); } @Test public void testHandoverDataNetworkRetryReachedMaximumNetworkRequestRemoved() throws Exception { TelephonyNetworkRequest networkRequest = createNetworkRequest( NetworkCapabilities.NET_CAPABILITY_IMS); mDataNetworkControllerUT.addNetworkRequest(networkRequest); processAllMessages(); setFailedSetupDataResponse(mMockedWlanDataServiceManager, DataFailCause.HANDOVER_FAILED, -1, true); doReturn(AccessNetworkConstants.TRANSPORT_TYPE_WLAN).when(mAccessNetworksManager) .getPreferredTransportByNetworkCapability(NetworkCapabilities.NET_CAPABILITY_IMS); mDataNetworkControllerUT.removeNetworkRequest(networkRequest); mAccessNetworksManagerCallback.onPreferredTransportChanged( NetworkCapabilities.NET_CAPABILITY_IMS); processAllMessages(); DataNetwork dataNetwork = getDataNetworks().get(0); // Verify that data network should remain on cellular. assertThat(dataNetwork.getTransport()).isEqualTo( AccessNetworkConstants.TRANSPORT_TYPE_WWAN); // There shouldn't be any attempt to retry handover on IWLAN. verify(mMockedWlanDataServiceManager, times(1)).setupDataCall(anyInt(), any(DataProfile.class), anyBoolean(), anyBoolean(), eq(DataService.REQUEST_REASON_HANDOVER), any(), anyInt(), any(), any(), anyBoolean(), any(Message.class)); // There shouldn't be any attempt to bring up a new one on IWLAN as well. verify(mMockedWlanDataServiceManager, never()).setupDataCall(anyInt(), any(DataProfile.class), anyBoolean(), anyBoolean(), eq(DataService.REQUEST_REASON_NORMAL), any(), anyInt(), any(), any(), anyBoolean(), any(Message.class)); Loading Loading
src/java/com/android/internal/telephony/data/DataNetworkController.java +6 −0 Original line number Diff line number Diff line Loading @@ -2604,6 +2604,12 @@ public class DataNetworkController extends Handler { + "(0x" + Integer.toHexString(cause) + "), retryDelayMillis=" + retryDelayMillis + "ms, handoverFailureMode=" + DataCallResponse.failureModeToString(handoverFailureMode)); if (dataNetwork.getAttachedNetworkRequestList().isEmpty()) { log("onDataNetworkHandoverFailed: No network requests attached to " + dataNetwork + ". No need to retry since the network will be torn down soon."); return; } if (handoverFailureMode == DataCallResponse.HANDOVER_FAILURE_MODE_DO_FALLBACK || (handoverFailureMode == DataCallResponse.HANDOVER_FAILURE_MODE_LEGACY && cause == DataFailCause.HANDOFF_PREFERENCE_CHANGED)) { Loading
src/java/com/android/internal/telephony/data/DataRetryManager.java +3 −2 Original line number Diff line number Diff line Loading @@ -1042,7 +1042,7 @@ public class DataRetryManager extends Handler { private void onEvaluateDataSetupRetry(@NonNull DataProfile dataProfile, @TransportType int transport, @NonNull NetworkRequestList requestList, @DataFailureCause int cause, long retryDelayMillis) { logl("onEvaluateDataRetry: " + dataProfile + ", transport=" logl("onEvaluateDataSetupRetry: " + dataProfile + ", transport=" + AccessNetworkConstants.transportTypeToString(transport) + ", cause=" + DataFailCause.toString(cause) + ", retryDelayMillis=" + retryDelayMillis + "ms" + ", " + requestList); Loading Loading @@ -1128,7 +1128,8 @@ public class DataRetryManager extends Handler { } if (!retryScheduled) { log("onEvaluateDataRetry: Did not match any retry rule. Stop timer-based retry."); log("onEvaluateDataSetupRetry: Did not match any retry rule. Stop timer-based " + "retry."); } } } Loading
tests/telephonytests/src/com/android/internal/telephony/data/DataNetworkControllerTest.java +36 −4 Original line number Diff line number Diff line Loading @@ -1606,9 +1606,8 @@ public class DataNetworkControllerTest extends TelephonyTest { AccessNetworkConstants.TRANSPORT_TYPE_WWAN); verify(mMockedWwanDataServiceManager, times(1)).setupDataCall( anyInt(), any(), anyBoolean(), anyBoolean(), eq(DataService.REQUEST_REASON_HANDOVER), any(), anyInt(), any(), any(), eq(true), any()); eq(DataService.REQUEST_REASON_HANDOVER), any(), anyInt(), any(), any(), eq(true), any()); } @Test Loading Loading @@ -1661,7 +1660,40 @@ public class DataNetworkControllerTest extends TelephonyTest { assertThat(dataNetwork.getTransport()).isEqualTo( AccessNetworkConstants.TRANSPORT_TYPE_WLAN); verify(mMockedWlanDataServiceManager).setupDataCall(anyInt(), verify(mMockedWlanDataServiceManager).setupDataCall(anyInt(), any(DataProfile.class), anyBoolean(), anyBoolean(), eq(DataService.REQUEST_REASON_NORMAL), any(), anyInt(), any(), any(), anyBoolean(), any(Message.class)); } @Test public void testHandoverDataNetworkRetryReachedMaximumNetworkRequestRemoved() throws Exception { TelephonyNetworkRequest networkRequest = createNetworkRequest( NetworkCapabilities.NET_CAPABILITY_IMS); mDataNetworkControllerUT.addNetworkRequest(networkRequest); processAllMessages(); setFailedSetupDataResponse(mMockedWlanDataServiceManager, DataFailCause.HANDOVER_FAILED, -1, true); doReturn(AccessNetworkConstants.TRANSPORT_TYPE_WLAN).when(mAccessNetworksManager) .getPreferredTransportByNetworkCapability(NetworkCapabilities.NET_CAPABILITY_IMS); mDataNetworkControllerUT.removeNetworkRequest(networkRequest); mAccessNetworksManagerCallback.onPreferredTransportChanged( NetworkCapabilities.NET_CAPABILITY_IMS); processAllMessages(); DataNetwork dataNetwork = getDataNetworks().get(0); // Verify that data network should remain on cellular. assertThat(dataNetwork.getTransport()).isEqualTo( AccessNetworkConstants.TRANSPORT_TYPE_WWAN); // There shouldn't be any attempt to retry handover on IWLAN. verify(mMockedWlanDataServiceManager, times(1)).setupDataCall(anyInt(), any(DataProfile.class), anyBoolean(), anyBoolean(), eq(DataService.REQUEST_REASON_HANDOVER), any(), anyInt(), any(), any(), anyBoolean(), any(Message.class)); // There shouldn't be any attempt to bring up a new one on IWLAN as well. verify(mMockedWlanDataServiceManager, never()).setupDataCall(anyInt(), any(DataProfile.class), anyBoolean(), anyBoolean(), eq(DataService.REQUEST_REASON_NORMAL), any(), anyInt(), any(), any(), anyBoolean(), any(Message.class)); Loading