Loading src/com/android/settings/network/telephony/NetworkSelectSettings.java +10 −2 Original line number Diff line number Diff line Loading @@ -50,6 +50,7 @@ import com.android.settingslib.utils.ThreadUtils; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Optional; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; Loading Loading @@ -326,12 +327,19 @@ public class NetworkSelectSettings extends DashboardFragment { CellInfoUtil.getCellIdentityMccMnc(cellInfo.getCellIdentity())); Class className = cellInfo.getClass(); if (aggregatedList.stream().anyMatch( Optional<CellInfo> itemInTheList = aggregatedList.stream().filter( item -> { String itemPlmn = CellInfoUtil.getNetworkTitle(item.getCellIdentity(), CellInfoUtil.getCellIdentityMccMnc(item.getCellIdentity())); return itemPlmn.equals(plmn) && item.getClass().equals(className); })) { }) .findFirst(); if (itemInTheList.isPresent()) { if (cellInfo.isRegistered() && !itemInTheList.get().isRegistered()) { // Adding the registered cellinfo item into list. If there are two registered // cellinfo items, then select first one from source list. aggregatedList.set(aggregatedList.indexOf(itemInTheList.get()), cellInfo); } continue; } aggregatedList.add(cellInfo); Loading tests/unit/src/com/android/settings/network/telephony/NetworkSelectSettingsTest.java +13 −0 Original line number Diff line number Diff line Loading @@ -166,6 +166,19 @@ public class NetworkSelectSettingsTest { assertThat(mNetworkSelectSettings.doAggregation(testList)).isEqualTo(expected); } @Test public void doAggregation_hasDuplicateItemsDiffMccMncCase3_removeSamePlmnRatItem() { List<CellInfo> testList = Arrays.asList( createLteCellInfo(false, 123, "123", "232", "CarrierA"), createLteCellInfo(false, 124, "123", "233", "CarrierA"), createLteCellInfo(true, 125, "123", "234", "CarrierA"), createGsmCellInfo(false, 126, "456", "232", "CarrierA")); List<CellInfo> expected = Arrays.asList( createLteCellInfo(true, 125, "123", "234", "CarrierA"), createGsmCellInfo(false, 126, "456", "232", "CarrierA")); assertThat(mNetworkSelectSettings.doAggregation(testList)).isEqualTo(expected); } private CellInfoLte createLteCellInfo(boolean registered, int cellId, String mcc, String mnc, String plmnName) { CellIdentityLte cil = new CellIdentityLte( Loading Loading
src/com/android/settings/network/telephony/NetworkSelectSettings.java +10 −2 Original line number Diff line number Diff line Loading @@ -50,6 +50,7 @@ import com.android.settingslib.utils.ThreadUtils; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Optional; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; Loading Loading @@ -326,12 +327,19 @@ public class NetworkSelectSettings extends DashboardFragment { CellInfoUtil.getCellIdentityMccMnc(cellInfo.getCellIdentity())); Class className = cellInfo.getClass(); if (aggregatedList.stream().anyMatch( Optional<CellInfo> itemInTheList = aggregatedList.stream().filter( item -> { String itemPlmn = CellInfoUtil.getNetworkTitle(item.getCellIdentity(), CellInfoUtil.getCellIdentityMccMnc(item.getCellIdentity())); return itemPlmn.equals(plmn) && item.getClass().equals(className); })) { }) .findFirst(); if (itemInTheList.isPresent()) { if (cellInfo.isRegistered() && !itemInTheList.get().isRegistered()) { // Adding the registered cellinfo item into list. If there are two registered // cellinfo items, then select first one from source list. aggregatedList.set(aggregatedList.indexOf(itemInTheList.get()), cellInfo); } continue; } aggregatedList.add(cellInfo); Loading
tests/unit/src/com/android/settings/network/telephony/NetworkSelectSettingsTest.java +13 −0 Original line number Diff line number Diff line Loading @@ -166,6 +166,19 @@ public class NetworkSelectSettingsTest { assertThat(mNetworkSelectSettings.doAggregation(testList)).isEqualTo(expected); } @Test public void doAggregation_hasDuplicateItemsDiffMccMncCase3_removeSamePlmnRatItem() { List<CellInfo> testList = Arrays.asList( createLteCellInfo(false, 123, "123", "232", "CarrierA"), createLteCellInfo(false, 124, "123", "233", "CarrierA"), createLteCellInfo(true, 125, "123", "234", "CarrierA"), createGsmCellInfo(false, 126, "456", "232", "CarrierA")); List<CellInfo> expected = Arrays.asList( createLteCellInfo(true, 125, "123", "234", "CarrierA"), createGsmCellInfo(false, 126, "456", "232", "CarrierA")); assertThat(mNetworkSelectSettings.doAggregation(testList)).isEqualTo(expected); } private CellInfoLte createLteCellInfo(boolean registered, int cellId, String mcc, String mnc, String plmnName) { CellIdentityLte cil = new CellIdentityLte( Loading