aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTreeHugger Robot <treehugger-gerrit@google.com>2019-06-24 22:34:53 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2019-06-24 22:34:53 +0000
commit087fa1974ced19ffcafc6a1e8f79312a908885af (patch)
treeeed462dce67a380b68b3be56092a5acb6659d420
parent18354af0c2973a0e1b58f99e1ec7c190afa9fd88 (diff)
parent389afecf5229edab07d1f041268ca29a2077cc5e (diff)
downloadandroid_frameworks_opt_telephony-087fa1974ced19ffcafc6a1e8f79312a908885af.tar.gz
android_frameworks_opt_telephony-087fa1974ced19ffcafc6a1e8f79312a908885af.tar.bz2
android_frameworks_opt_telephony-087fa1974ced19ffcafc6a1e8f79312a908885af.zip
Merge "Reverted to the old logic for APN selection" into qt-dev
-rw-r--r--src/java/com/android/internal/telephony/dataconnection/DcTracker.java16
-rw-r--r--tests/telephonytests/src/com/android/internal/telephony/dataconnection/ApnSettingTest.java72
2 files changed, 81 insertions, 7 deletions
diff --git a/src/java/com/android/internal/telephony/dataconnection/DcTracker.java b/src/java/com/android/internal/telephony/dataconnection/DcTracker.java
index 1e04223f6..7a4bfd8d3 100644
--- a/src/java/com/android/internal/telephony/dataconnection/DcTracker.java
+++ b/src/java/com/android/internal/telephony/dataconnection/DcTracker.java
@@ -73,6 +73,7 @@ import android.telephony.NetworkRegistrationInfo;
import android.telephony.PcoData;
import android.telephony.Rlog;
import android.telephony.ServiceState;
+import android.telephony.ServiceState.RilRadioTechnology;
import android.telephony.SubscriptionManager;
import android.telephony.SubscriptionManager.OnSubscriptionsChangedListener;
import android.telephony.TelephonyManager;
@@ -1757,8 +1758,8 @@ public class DcTracker extends Handler {
}
for (ApnSetting dunSetting : dunCandidates) {
- if (!ServiceState.networkBitmaskHasAccessNetworkType(dunSetting.getNetworkTypeBitmask(),
- ServiceState.rilRadioTechnologyToAccessNetworkType(bearer))) {
+ if (!dunSetting.canSupportNetworkType(
+ ServiceState.rilRadioTechnologyToNetworkType(bearer))) {
continue;
}
retDunSettings.add(dunSetting);
@@ -3270,9 +3271,8 @@ public class DcTracker extends Handler {
+ mPreferredApn.getOperatorNumeric() + ":" + mPreferredApn);
}
if (mPreferredApn.getOperatorNumeric().equals(operator)) {
- if (ServiceState.networkBitmaskHasAccessNetworkType(
- mPreferredApn.getNetworkTypeBitmask(),
- ServiceState.rilRadioTechnologyToAccessNetworkType(radioTech))) {
+ if (mPreferredApn.canSupportNetworkType(
+ ServiceState.rilRadioTechnologyToNetworkType(radioTech))) {
apnList.add(mPreferredApn);
apnList = sortApnListByPreferred(apnList);
if (DBG) log("buildWaitingApns: X added preferred apnList=" + apnList);
@@ -3292,8 +3292,8 @@ public class DcTracker extends Handler {
if (DBG) log("buildWaitingApns: mAllApnSettings=" + mAllApnSettings);
for (ApnSetting apn : mAllApnSettings) {
if (apn.canHandleType(requestedApnTypeBitmask)) {
- if (ServiceState.networkBitmaskHasAccessNetworkType(apn.getNetworkTypeBitmask(),
- ServiceState.rilRadioTechnologyToAccessNetworkType(radioTech))) {
+ if (apn.canSupportNetworkType(
+ ServiceState.rilRadioTechnologyToNetworkType(radioTech))) {
if (VDBG) log("buildWaitingApns: adding apn=" + apn);
apnList.add(apn);
} else {
@@ -4816,6 +4816,7 @@ public class DcTracker extends Handler {
return "UNKNOWN";
}
+ @RilRadioTechnology
private int getDataRat() {
ServiceState ss = mPhone.getServiceState();
NetworkRegistrationInfo nrs = ss.getNetworkRegistrationInfo(
@@ -4826,6 +4827,7 @@ public class DcTracker extends Handler {
return ServiceState.RIL_RADIO_TECHNOLOGY_UNKNOWN;
}
+ @RilRadioTechnology
private int getVoiceRat() {
ServiceState ss = mPhone.getServiceState();
NetworkRegistrationInfo nrs = ss.getNetworkRegistrationInfo(
diff --git a/tests/telephonytests/src/com/android/internal/telephony/dataconnection/ApnSettingTest.java b/tests/telephonytests/src/com/android/internal/telephony/dataconnection/ApnSettingTest.java
index 7e271427e..977b45ab2 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/dataconnection/ApnSettingTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/dataconnection/ApnSettingTest.java
@@ -27,6 +27,7 @@ import android.net.Uri;
import android.os.PersistableBundle;
import android.telephony.CarrierConfigManager;
import android.telephony.ServiceState;
+import android.telephony.TelephonyManager;
import android.telephony.data.ApnSetting;
import android.test.suitebuilder.annotation.SmallTest;
@@ -684,4 +685,75 @@ public class ApnSettingTest extends TelephonyTest {
assertTrue(apn1.equals(apn2, false));
assertFalse(apn1.equals(apn2, true));
}
+
+ @Test
+ @SmallTest
+ public void testCanHandleNetwork() throws Exception {
+ ApnSetting apn1 = ApnSetting.makeApnSetting(
+ 1234,
+ "310260",
+ "",
+ "ims",
+ null,
+ -1,
+ null,
+ null,
+ -1,
+ "",
+ "",
+ -1,
+ ApnSetting.TYPE_IMS,
+ ApnSetting.PROTOCOL_IPV6,
+ -1,
+ true,
+ (int) (TelephonyManager.NETWORK_TYPE_BITMASK_LTE
+ | TelephonyManager.NETWORK_TYPE_BITMASK_UMTS),
+ 0,
+ false,
+ 0,
+ 0,
+ 0,
+ 1440,
+ -1,
+ "");
+
+ ApnSetting apn2 = ApnSetting.makeApnSetting(
+ 1235,
+ "310260",
+ "",
+ "ims",
+ null,
+ -1,
+ null,
+ null,
+ -1,
+ "",
+ "",
+ -1,
+ ApnSetting.TYPE_IMS,
+ ApnSetting.PROTOCOL_IPV6,
+ ApnSetting.PROTOCOL_IPV6,
+ true,
+ (int) (TelephonyManager.NETWORK_TYPE_BITMASK_EDGE
+ | TelephonyManager.NETWORK_TYPE_BITMASK_GPRS),
+ 0,
+ false,
+ 0,
+ 0,
+ 0,
+ 1440,
+ -1,
+ "");
+
+ assertFalse(apn1.canSupportNetworkType(TelephonyManager.NETWORK_TYPE_1xRTT));
+ assertTrue(apn1.canSupportNetworkType(TelephonyManager.NETWORK_TYPE_LTE));
+ assertTrue(apn1.canSupportNetworkType(TelephonyManager.NETWORK_TYPE_UMTS));
+
+ assertFalse(apn2.canSupportNetworkType(TelephonyManager.NETWORK_TYPE_1xRTT));
+ assertFalse(apn2.canSupportNetworkType(TelephonyManager.NETWORK_TYPE_LTE));
+ assertTrue(apn2.canSupportNetworkType(TelephonyManager.NETWORK_TYPE_GPRS));
+ assertTrue(apn2.canSupportNetworkType(TelephonyManager.NETWORK_TYPE_EDGE));
+
+ assertTrue(apn2.canSupportNetworkType(TelephonyManager.NETWORK_TYPE_GSM));
+ }
}