Merge "FPII-2349: Move apn related helper functions from DcTracker to ApnSetting." into fp/fp2_5.1_int
diff --git a/src/java/com/android/internal/telephony/dataconnection/ApnSetting.java b/src/java/com/android/internal/telephony/dataconnection/ApnSetting.java
index cf2c57c..0bf45a2 100755
--- a/src/java/com/android/internal/telephony/dataconnection/ApnSetting.java
+++ b/src/java/com/android/internal/telephony/dataconnection/ApnSetting.java
@@ -22,6 +22,7 @@
import com.android.internal.telephony.PhoneConstants;
import com.android.internal.telephony.RILConstants;
+import com.android.internal.telephony.uicc.IccRecords;
import java.util.ArrayList;
import java.util.List;
@@ -336,6 +337,52 @@
return false;
}
+ private static boolean imsiMatches(String imsiDB, String imsiSIM) {
+ // Note: imsiDB value has digit number or 'x' character for seperating USIM information
+ // for MVNO operator. And then digit number is matched at same order and 'x' character
+ // could replace by any digit number.
+ // ex) if imsiDB inserted '310260x10xxxxxx' for GG Operator,
+ // that means first 6 digits, 8th and 9th digit
+ // should be set in USIM for GG Operator.
+ int len = imsiDB.length();
+ int idxCompare = 0;
+
+ if (len <= 0) return false;
+ if (len > imsiSIM.length()) return false;
+
+ for (int idx=0; idx<len; idx++) {
+ char c = imsiDB.charAt(idx);
+ if ((c == 'x') || (c == 'X') || (c == imsiSIM.charAt(idx))) {
+ continue;
+ } else {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public static boolean mvnoMatches(IccRecords r, String mvnoType, String mvnoMatchData) {
+ if (mvnoType.equalsIgnoreCase("spn")) {
+ if ((r.getServiceProviderName() != null) &&
+ r.getServiceProviderName().equalsIgnoreCase(mvnoMatchData)) {
+ return true;
+ }
+ } else if (mvnoType.equalsIgnoreCase("imsi")) {
+ String imsiSIM = r.getIMSI();
+ if ((imsiSIM != null) && imsiMatches(mvnoMatchData, imsiSIM)) {
+ return true;
+ }
+ } else if (mvnoType.equalsIgnoreCase("gid")) {
+ String gid1 = r.getGid1();
+ int mvno_match_data_length = mvnoMatchData.length();
+ if ((gid1 != null) && (gid1.length() >= mvno_match_data_length) &&
+ gid1.substring(0, mvno_match_data_length).equalsIgnoreCase(mvnoMatchData)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
// TODO - if we have this function we should also have hashCode.
// Also should handle changes in type order and perhaps case-insensitivity
@Override
diff --git a/src/java/com/android/internal/telephony/dataconnection/DcTracker.java b/src/java/com/android/internal/telephony/dataconnection/DcTracker.java
index 19ece7e..672258e 100755
--- a/src/java/com/android/internal/telephony/dataconnection/DcTracker.java
+++ b/src/java/com/android/internal/telephony/dataconnection/DcTracker.java
@@ -1215,53 +1215,6 @@
return result;
}
- private boolean imsiMatches(String imsiDB, String imsiSIM) {
- // Note: imsiDB value has digit number or 'x' character for seperating USIM information
- // for MVNO operator. And then digit number is matched at same order and 'x' character
- // could replace by any digit number.
- // ex) if imsiDB inserted '310260x10xxxxxx' for GG Operator,
- // that means first 6 digits, 8th and 9th digit
- // should be set in USIM for GG Operator.
- int len = imsiDB.length();
- int idxCompare = 0;
-
- if (len <= 0) return false;
- if (len > imsiSIM.length()) return false;
-
- for (int idx=0; idx<len; idx++) {
- char c = imsiDB.charAt(idx);
- if ((c == 'x') || (c == 'X') || (c == imsiSIM.charAt(idx))) {
- continue;
- } else {
- return false;
- }
- }
- return true;
- }
-
- @Override
- protected boolean mvnoMatches(IccRecords r, String mvnoType, String mvnoMatchData) {
- if (mvnoType.equalsIgnoreCase("spn")) {
- if ((r.getServiceProviderName() != null) &&
- r.getServiceProviderName().equalsIgnoreCase(mvnoMatchData)) {
- return true;
- }
- } else if (mvnoType.equalsIgnoreCase("imsi")) {
- String imsiSIM = r.getIMSI();
- if ((imsiSIM != null) && imsiMatches(mvnoMatchData, imsiSIM)) {
- return true;
- }
- } else if (mvnoType.equalsIgnoreCase("gid")) {
- String gid1 = r.getGid1();
- int mvno_match_data_length = mvnoMatchData.length();
- if ((gid1 != null) && (gid1.length() >= mvno_match_data_length) &&
- gid1.substring(0, mvno_match_data_length).equalsIgnoreCase(mvnoMatchData)) {
- return true;
- }
- }
- return false;
- }
-
@Override
protected boolean isPermanentFail(DcFailCause dcFailCause) {
return (dcFailCause.isPermanentFail() &&
@@ -1323,7 +1276,7 @@
}
if (apn.hasMvnoParams()) {
- if (r != null && mvnoMatches(r, apn.mvnoType, apn.mvnoMatchData)) {
+ if (r != null && ApnSetting.mvnoMatches(r, apn.mvnoType, apn.mvnoMatchData)) {
mvnoApns.add(apn);
}
} else {
diff --git a/src/java/com/android/internal/telephony/dataconnection/DcTrackerBase.java b/src/java/com/android/internal/telephony/dataconnection/DcTrackerBase.java
index b80e1b7..0e929e3 100644
--- a/src/java/com/android/internal/telephony/dataconnection/DcTrackerBase.java
+++ b/src/java/com/android/internal/telephony/dataconnection/DcTrackerBase.java
@@ -700,8 +700,8 @@
}
if (dunSetting.numeric.equals(operator)) {
if (dunSetting.hasMvnoParams()) {
- if (r != null &&
- mvnoMatches(r, dunSetting.mvnoType, dunSetting.mvnoMatchData)) {
+ if (r != null && ApnSetting.mvnoMatches(r, dunSetting.mvnoType,
+ dunSetting.mvnoMatchData)) {
if (VDBG) {
log("fetchDunApn: global TETHER_DUN_APN dunSetting=" + dunSetting);
}
@@ -725,10 +725,11 @@
if (dunSetting.bearer != bearer) continue;
}
if (dunSetting.hasMvnoParams()) {
- if (r != null &&
- mvnoMatches(r, dunSetting.mvnoType, dunSetting.mvnoMatchData)) {
- if (VDBG) log("fetchDunApn: config_tether_apndata mvno dunSetting="
- + dunSetting);
+ if (r != null && ApnSetting.mvnoMatches(r, dunSetting.mvnoType,
+ dunSetting.mvnoMatchData)) {
+ if (VDBG) {
+ log("fetchDunApn: config_tether_apndata mvno dunSetting=" + dunSetting);
+ }
return dunSetting;
}
} else {
@@ -864,7 +865,6 @@
public abstract void setDataAllowed(boolean enable, Message response);
public abstract String[] getPcscfAddress(String apnType);
public abstract void setImsRegistrationState(boolean registered);
- protected abstract boolean mvnoMatches(IccRecords r, String mvno_type, String mvno_match_data);
protected abstract boolean isPermanentFail(DcFailCause dcFailCause);
@Override