Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9a7f3aaf authored by SongFerng Wang's avatar SongFerng Wang Committed by Automerger Merge Worker
Browse files

Merge "Lost the registered cellinfo item after the aggregation" into sc-v2-dev am: f0a3348c

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/16262279

Change-Id: I38ea72134e9f0bf453d6125763e4d6af6f323487
parents a77928c6 f0a3348c
Loading
Loading
Loading
Loading
+10 −2
Original line number Diff line number Diff line
@@ -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;

@@ -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);
+13 −0
Original line number Diff line number Diff line
@@ -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(