Clean cherry-pick 'Aggregate network operators by PLMNs instead of Operator names.'

Bug: 111044709
Test: Manual test
Change-Id: I433f3d1d74feef5188bf4ad26e4027df77639ea5
Merged-In: I433f3d1d74feef5188bf4ad26e4027df77639ea5
diff --git a/src/com/android/phone/NetworkSelectListPreference.java b/src/com/android/phone/NetworkSelectListPreference.java
index 5b31b68..3cb4155 100644
--- a/src/com/android/phone/NetworkSelectListPreference.java
+++ b/src/com/android/phone/NetworkSelectListPreference.java
@@ -335,14 +335,12 @@
             for (CellInfo cellInfo: mCellInfoList) {
                 // Display each operator name only once.
                 String networkTitle = getNetworkTitle(cellInfo);
-                if (!networkEntriesList.contains(networkTitle)) {
-                    if (CellInfoUtil.isForbidden(cellInfo, mForbiddenPlmns)) {
-                        networkTitle += " "
-                                + getContext().getResources().getString(R.string.forbidden_network);
-                    }
-                    networkEntriesList.add(networkTitle);
-                    networkEntryValuesList.add(getOperatorNumeric(cellInfo));
+                if (CellInfoUtil.isForbidden(cellInfo, mForbiddenPlmns)) {
+                    networkTitle += " "
+                            + getContext().getResources().getString(R.string.forbidden_network);
                 }
+                networkEntriesList.add(networkTitle);
+                networkEntryValuesList.add(getOperatorNumeric(cellInfo));
             }
             setEntries(networkEntriesList.toArray(new CharSequence[networkEntriesList.size()]));
             setEntryValues(networkEntryValuesList.toArray(
diff --git a/src/com/android/phone/NetworkSelectSetting.java b/src/com/android/phone/NetworkSelectSetting.java
index 71162bb..96e4a26 100644
--- a/src/com/android/phone/NetworkSelectSetting.java
+++ b/src/com/android/phone/NetworkSelectSetting.java
@@ -555,18 +555,18 @@
         if (DBG) logd("before aggregate: " + cellInfoList.toString());
         Map<String, CellInfo> map = new HashMap<>();
         for (CellInfo cellInfo: cellInfoList) {
-            String networkTitle = CellInfoUtil.getNetworkTitle(cellInfo);
-            if (cellInfo.isRegistered() || !map.containsKey(networkTitle)) {
-                map.put(networkTitle, cellInfo);
+            String plmn = CellInfoUtil.getOperatorInfoFromCellInfo(cellInfo).getOperatorNumeric();
+            if (cellInfo.isRegistered() || !map.containsKey(plmn)) {
+                map.put(plmn, cellInfo);
             } else {
-                if (map.get(networkTitle).isRegistered()
-                        || CellInfoUtil.getLevel(map.get(networkTitle))
+                if (map.get(plmn).isRegistered()
+                        || CellInfoUtil.getLevel(map.get(plmn))
                         > CellInfoUtil.getLevel(cellInfo)) {
                     // Skip if the stored cellInfo is registered or has higher signal strength level
                     continue;
                 }
                 // Otherwise replace it with the new CellInfo
-                map.put(networkTitle, cellInfo);
+                map.put(plmn, cellInfo);
             }
         }
         return new ArrayList<>(map.values());