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

Commit 4d00bce2 authored by SongFerngWang's avatar SongFerngWang
Browse files

Lost the registered cellinfo item after the aggregation

Bug: 204384218
Test: atest NetworkSelectSettingsTest
Change-Id: I8a1af6eadd5852788a5455dd637e1c63316bb802
Merged-In: I163ab8e966de57ddff7939a46fc47b05bea029e3
parent 6e12a31e
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(