aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorandroid-build-team Robot <android-build-team-robot@google.com>2019-08-28 20:55:45 +0000
committerandroid-build-team Robot <android-build-team-robot@google.com>2019-08-28 20:55:45 +0000
commit77ec95679aeccff6f65c0a1ef573e4c62d596533 (patch)
tree814a629bbc08cb95e522885376e810fb2384d796
parentdaf737b7ae184a36e459e251601f69967010e93c (diff)
parentfc9c102231a607da9d542b6b4c532c45fb276a1c (diff)
downloadtelephony-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
-rw-r--r--src/java/com/android/internal/telephony/dataconnection/TelephonyNetworkFactory.java1
-rw-r--r--src/java/com/android/internal/telephony/dataconnection/TransportManager.java4
-rw-r--r--tests/telephonytests/src/com/android/internal/telephony/dataconnection/TelephonyNetworkFactoryTest.java50
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);
+ }
}