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

Commit eaa767c1 authored by Jack Yu's avatar Jack Yu
Browse files

Fixed two IMS data profiles sent to modem

During boot up, telephony sent all available data profiles to
the modem. A regression introduced ag/18230190 caused data
profile managers created default IMS profile even when there is
already one from the database.

Fix: 233927770
Test: Able to reproduce the bug in unit test DataProfileManagerTest.
Verified the fix is working.

Merged-In: I1858ad1c7a89cc8504f8cd7f7962528d6e103992
Change-Id: Iba99d60647ec9d4c1b7f5c8ad5b3785afde63ef2
parent 229cbaf2
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -273,7 +273,7 @@ public class DataProfileManager extends Handler {
        }

        // Check if any of the profile already supports IMS, if not, add the default one.
        DataProfile dataProfile = profiles.stream()
        dataProfile = profiles.stream()
                .filter(dp -> dp.canSatisfy(NetworkCapabilities.NET_CAPABILITY_IMS))
                .findFirst()
                .orElse(null);
+19 −0
Original line number Diff line number Diff line
@@ -59,11 +59,13 @@ import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
import org.mockito.Mockito;

import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;

@RunWith(AndroidTestingRunner.class)
@TestableLooper.RunWithLooper
@@ -400,6 +402,12 @@ public class DataProfileManagerTest extends TelephonyTest {
        method.invoke(mDataProfileManagerUT, dataProfiles);
    }

    private @NonNull List<DataProfile> getAllDataProfiles() throws Exception {
        Field field = DataProfileManager.class.getDeclaredField("mAllDataProfiles");
        field.setAccessible(true);
        return (List<DataProfile>) field.get(mDataProfileManagerUT);
    }

    @Before
    public void setUp() throws Exception {
        logd("DataProfileManagerTest +Setup!");
@@ -886,4 +894,15 @@ public class DataProfileManagerTest extends TelephonyTest {
        assertThat(mDataProfileManagerUT.isTetheringDataProfileExisting(
                TelephonyManager.NETWORK_TYPE_NR)).isFalse();
    }

    @Test
    public void testNoDefaultIms() throws Exception {
        List<DataProfile> dataProfiles = getAllDataProfiles();

        // Since the database already had IMS, there should not be default IMS created in the
        // database.
        assertThat(dataProfiles.stream()
                .filter(dp -> dp.canSatisfy(NetworkCapabilities.NET_CAPABILITY_IMS))
                .collect(Collectors.toList())).hasSize(1);
    }
}