Merge remote-tracking branch 'origin/sm7225_r_fp4' into fp4-r-rebase

Change-Id: Ia63b7584e6a1311e48c8544158f2674313a26fe7
diff --git a/src/com/android/providers/telephony/TelephonyProvider.java b/src/com/android/providers/telephony/TelephonyProvider.java
index aca1edb..fe648cb 100644
--- a/src/com/android/providers/telephony/TelephonyProvider.java
+++ b/src/com/android/providers/telephony/TelephonyProvider.java
@@ -140,6 +140,12 @@
 import java.util.zip.CheckedInputStream;
 import java.util.zip.CRC32;
 
+//Add Begin by cheng-he for FP4-915 on 2021/06/18
+import com.android.internal.telephony.dataconnection.ApnSettingUtils;
+import com.android.internal.telephony.uicc.IccRecords;
+import com.android.internal.telephony.uicc.UiccController;
+//Add End by cheng-he for FP4-915 on 2021/06/18
+
 public class TelephonyProvider extends ContentProvider
 {
     private static final String DATABASE_NAME = "telephony.db";
@@ -3186,8 +3192,14 @@
         // For query db one time, append all conditions in one selection and separate results after
         // the query is completed. IMSI has special match rule, so just query the MCC / MNC and
         // filter the MVNO by ourselves
-        qb.appendWhereStandalone(NUMERIC + " = '" + mccmnc + "' OR " +
-                CARRIER_ID + " = '" + carrierId + "'");
+        //Modified Begin by cheng-he for FP4-915 on 2021/07/01
+        if (carrierId != TelephonyManager.UNKNOWN_CARRIER_ID) {
+            qb.appendWhereStandalone(NUMERIC + " = '" + mccmnc + "' OR " + CARRIER_ID + " = '" + carrierId + "'");
+        }
+        else {
+            qb.appendWhereStandalone(NUMERIC + " = '" + mccmnc + "'");
+        }
+        //Modified End by cheng-he for FP4-915 on 2021/07/01
 
         ret = qb.query(db, null, selection, selectionArgs, null, null, sort);
         if (ret == null) {
@@ -3197,6 +3209,15 @@
 
         if (DBG) log("match current APN size:  " + ret.getCount());
 
+        //Add Begin by cheng-he for FP4-915 on 2021/06/18
+        IccRecords iccRecords = UiccController.getInstance().getIccRecords(
+                SubscriptionManager.getPhoneId(subId), UiccController.APP_FAM_3GPP);
+        if (iccRecords == null) {
+            loge("iccRecords is null");
+            return null;
+        }
+        //Add End by cheng-he for FP4-915 on 2021/06/18
+
         String[] columnNames = projectionIn != null ? projectionIn : ret.getColumnNames();
         MatrixCursor currentCursor = new MatrixCursor(columnNames);
         MatrixCursor parentCursor = new MatrixCursor(columnNames);
@@ -3214,10 +3235,15 @@
                 data.add(ret.getString(ret.getColumnIndex(column)));
             }
 
-            boolean isMVNOAPN = !TextUtils.isEmpty(ret.getString(numericIndex))
+            //Modified Begin by cheng-he for FP4-915 on 2021/06/18
+            /*boolean isMVNOAPN = !TextUtils.isEmpty(ret.getString(numericIndex))
                     && tm.matchesCurrentSimOperator(ret.getString(numericIndex),
                             getMvnoTypeIntFromString(ret.getString(mvnoIndex)),
-                            ret.getString(mvnoDataIndex));
+                            ret.getString(mvnoDataIndex));*/
+            boolean isMVNOAPN = !TextUtils.isEmpty(ret.getString(numericIndex))
+                    && ApnSettingUtils.mvnoMatches(iccRecords,
+                            ret.getString(mvnoIndex), ret.getString(mvnoDataIndex), subId);
+            //Modified End by cheng-he for FP4-915 on 2021/06/18
             boolean isMNOAPN = !TextUtils.isEmpty(ret.getString(numericIndex))
                     && ret.getString(numericIndex).equals(mccmnc)
                     && TextUtils.isEmpty(ret.getString(mvnoIndex));
@@ -4087,6 +4113,10 @@
                         + " AND " + IS_NOT_OWNED_BY_DPC;
             }
         }
+
+        // add by T2M.dengxiangyu for FP4-1630 2021-07-09, apn of MVNO maybe more than 1
+        where = NUMERIC + "='" + simOperator + "'"
+                + " AND " + IS_NOT_OWNED_BY_DPC;
         return where;
     }