diff options
author | android-build-team Robot <android-build-team-robot@google.com> | 2019-08-28 20:55:45 +0000 |
---|---|---|
committer | android-build-team Robot <android-build-team-robot@google.com> | 2019-08-28 20:55:45 +0000 |
commit | 77ec95679aeccff6f65c0a1ef573e4c62d596533 (patch) | |
tree | 814a629bbc08cb95e522885376e810fb2384d796 | |
parent | daf737b7ae184a36e459e251601f69967010e93c (diff) | |
parent | fc9c102231a607da9d542b6b4c532c45fb276a1c (diff) | |
download | telephony-android10-c2f2-s2-release.tar.gz |
Merge cherrypicks of [9293684, 9293745, 9293876, 9293759, 9293760, 9293761] into qt-c2f2-releaseandroid-10.0.0_r9android-10.0.0_r8android-10.0.0_r14android-10.0.0_r13android10-c2f2-s2-releaseandroid10-c2f2-release
Change-Id: If8430794e4bd9e54613da9c4f158311b94b7d7bf
3 files changed, 54 insertions, 1 deletions
diff --git a/src/java/com/android/internal/telephony/dataconnection/TelephonyNetworkFactory.java b/src/java/com/android/internal/telephony/dataconnection/TelephonyNetworkFactory.java index d60efafc83..382c1d61b6 100644 --- a/src/java/com/android/internal/telephony/dataconnection/TelephonyNetworkFactory.java +++ b/src/java/com/android/internal/telephony/dataconnection/TelephonyNetworkFactory.java @@ -357,6 +357,7 @@ public class TelephonyNetworkFactory extends NetworkFactory { + "connection. Just move the request to transport " + AccessNetworkConstants.transportTypeToString(targetTransport) + ", dc=" + dc); + entry.setValue(targetTransport); releaseNetworkInternal(networkRequest, DcTracker.RELEASE_TYPE_NORMAL, currentTransport); requestNetworkInternal(networkRequest, DcTracker.REQUEST_TYPE_NORMAL, diff --git a/src/java/com/android/internal/telephony/dataconnection/TransportManager.java b/src/java/com/android/internal/telephony/dataconnection/TransportManager.java index ea11223997..5fb14af82b 100644 --- a/src/java/com/android/internal/telephony/dataconnection/TransportManager.java +++ b/src/java/com/android/internal/telephony/dataconnection/TransportManager.java @@ -208,7 +208,9 @@ public class TransportManager extends Handler { public final @ApnType int apnType; public final int targetTransport; public final HandoverCallback callback; - HandoverParams(int apnType, int targetTransport, HandoverCallback callback) { + + @VisibleForTesting + public HandoverParams(int apnType, int targetTransport, HandoverCallback callback) { this.apnType = apnType; this.targetTransport = targetTransport; this.callback = callback; diff --git a/tests/telephonytests/src/com/android/internal/telephony/dataconnection/TelephonyNetworkFactoryTest.java b/tests/telephonytests/src/com/android/internal/telephony/dataconnection/TelephonyNetworkFactoryTest.java index b624679a7f..1b67149326 100644 --- a/tests/telephonytests/src/com/android/internal/telephony/dataconnection/TelephonyNetworkFactoryTest.java +++ b/tests/telephonytests/src/com/android/internal/telephony/dataconnection/TelephonyNetworkFactoryTest.java @@ -23,6 +23,8 @@ import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.doAnswer; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.mock; import android.content.Context; import android.net.ConnectivityManager; @@ -30,11 +32,15 @@ import android.net.IConnectivityManager; import android.net.NetworkCapabilities; import android.net.NetworkRequest; import android.net.StringNetworkSpecifier; +import android.os.AsyncResult; import android.os.Binder; +import android.os.Handler; import android.os.HandlerThread; import android.os.Looper; import android.os.Messenger; +import android.telephony.AccessNetworkConstants; import android.telephony.Rlog; +import android.telephony.data.ApnSetting; import android.test.suitebuilder.annotation.SmallTest; import androidx.test.filters.FlakyTest; @@ -43,6 +49,8 @@ import com.android.internal.telephony.PhoneSwitcher; import com.android.internal.telephony.RadioConfig; import com.android.internal.telephony.SubscriptionController; import com.android.internal.telephony.TelephonyTest; +import com.android.internal.telephony.dataconnection.TransportManager.HandoverParams; +import com.android.internal.telephony.dataconnection.TransportManager.HandoverParams.HandoverCallback; import com.android.internal.telephony.mocks.ConnectivityServiceMock; import com.android.internal.telephony.mocks.PhoneSwitcherMock; import com.android.internal.telephony.mocks.SubscriptionControllerMock; @@ -54,6 +62,7 @@ import org.junit.Before; import org.junit.Test; import org.mockito.Mock; +import java.lang.reflect.Field; import java.util.ArrayList; public class TelephonyNetworkFactoryTest extends TelephonyTest { @@ -303,4 +312,45 @@ public class TelephonyNetworkFactoryTest extends TelephonyTest { waitForMs(250); assertEquals(3, mNetworkRequestList.size()); } + + /** + * Test handover when there is no live data connection + */ + @Test + @SmallTest + public void testHandoverNoLiveData() throws Exception { + createMockedTelephonyComponents(1); + mPhoneSwitcherMock.setPreferredDataPhoneId(0); + mSubscriptionControllerMock.setDefaultDataSubId(0); + mSubscriptionControllerMock.setSlotSubId(0, 0); + mSubscriptionMonitorMock.notifySubscriptionChanged(0); + + mPhoneSwitcherMock.setPhoneActive(0, true); + mConnectivityServiceMock.addDefaultRequest(); + + makeSubSpecificMmsRequest(0); + + waitForMs(100); + + Field f = TelephonyNetworkFactory.class.getDeclaredField("mInternalHandler"); + f.setAccessible(true); + Handler h = (Handler) f.get(mTelephonyNetworkFactoryUT); + + HandoverCallback handoverCallback = mock(HandoverCallback.class); + + HandoverParams hp = new HandoverParams(ApnSetting.TYPE_MMS, + AccessNetworkConstants.TRANSPORT_TYPE_WLAN, handoverCallback); + AsyncResult ar = new AsyncResult(null, hp, null); + h.sendMessage(h.obtainMessage(5, ar)); + waitForMs(100); + + doReturn(AccessNetworkConstants.TRANSPORT_TYPE_WLAN).when(mTransportManager) + .getCurrentTransport(anyInt()); + + hp = new HandoverParams(ApnSetting.TYPE_MMS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN, + handoverCallback); + ar = new AsyncResult(null, hp, null); + h.sendMessage(h.obtainMessage(5, ar)); + waitForMs(100); + } } |