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

Commit 8459a982 authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "Fix Sync preferred apn and preferred apn set id"

parents e4ab1a35 f07a0740
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -312,14 +312,15 @@ public class DataProfileManager extends Handler {
            profilesChanged = true;
        }

        // Reload the latest preferred data profile from either database or config.
        profilesChanged |= updatePreferredDataProfile();

        int setId = getPreferredDataProfileSetId();
        if (setId != mPreferredDataProfileSetId) {
            logl("Changed preferred data profile set id to " + setId);
            mPreferredDataProfileSetId = setId;
            profilesChanged = true;
        }
        // Reload the latest preferred data profile from either database or config.
        profilesChanged |= updatePreferredDataProfile();

        updateDataProfilesAtModem();
        updateInitialAttachDataProfileAtModem();
@@ -461,6 +462,10 @@ public class DataProfileManager extends Handler {
            preferredDataProfile = getPreferredDataProfileFromDb();
            if (preferredDataProfile == null) {
                preferredDataProfile = getPreferredDataProfileFromConfig();
                if (preferredDataProfile != null) {
                    // Save the carrier specified preferred data profile into database
                    setPreferredDataProfile(preferredDataProfile);
                }
            }
        } else {
            preferredDataProfile = null;
+42 −0
Original line number Diff line number Diff line
@@ -364,6 +364,16 @@ public class DataProfileManagerTest extends TelephonyTest {
            logd("ApnSettingContentProvider: uri=" + uri + ", values=" + values);
            if (uri.isPathPrefixMatch(Telephony.Carriers.PREFERRED_APN_URI)) {
                mPreferredApnId = values.getAsInteger(Telephony.Carriers.APN_ID);
                if (mPreferredApnId != -1) {
                    for (Object apnSetting : mAllApnSettings) {
                        int id = (int) ((Object[]) apnSetting)[0];
                        if (id == mPreferredApnId) {
                            mPreferredApnSet = (int) ((Object[]) apnSetting)[28]; //update setId too
                        }
                    }
                } else {
                    mPreferredApnSet = 0; // db is emptied
                }
                logd("mPreferredApnId=" + mPreferredApnId);
            }
            return null;
@@ -863,6 +873,38 @@ public class DataProfileManagerTest extends TelephonyTest {
        assertThat(mDataProfileManagerUT.isDataProfilePreferred(dataProfile)).isFalse();
    }

    @Test
    public void testResetApnWithPreferredConfig() {
        // carrier configured preferred data profile should be picked
        doReturn(GENERAL_PURPOSE_APN1).when(mDataConfigManager).getDefaultPreferredApn();
        TelephonyNetworkRequest tnr = new TelephonyNetworkRequest(
                new NetworkRequest.Builder()
                        .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
                        .build(), mPhone);
        mSimInserted = true;
        mDataProfileManagerUT.obtainMessage(2 /*EVENT_APN_DATABASE_CHANGED*/).sendToTarget();
        processAllMessages();

        // The carrier configured data profile should be the preferred APN after APN reset
        DataProfile dataProfile = mDataProfileManagerUT.getDataProfileForNetworkRequest(
                tnr, TelephonyManager.NETWORK_TYPE_LTE);

        assertThat(dataProfile.getApnSetting().getApnName()).isEqualTo(GENERAL_PURPOSE_APN1);
        assertThat(mDataProfileManagerUT.isDataProfilePreferred(dataProfile)).isTrue();

        // APN reset
        mPreferredApnId = -1;
        mDataProfileManagerUT.obtainMessage(2 /*EVENT_APN_DATABASE_CHANGED*/).sendToTarget();
        Mockito.clearInvocations(mDataConfigManager);
        processAllMessages();

        // The carrier configured data profile should be the preferred APN after APN reset
        dataProfile = mDataProfileManagerUT.getDataProfileForNetworkRequest(
                tnr, TelephonyManager.NETWORK_TYPE_LTE);
        assertThat(dataProfile.getApnSetting().getApnName()).isEqualTo(GENERAL_PURPOSE_APN1);
        assertThat(mDataProfileManagerUT.isDataProfilePreferred(dataProfile)).isTrue();
    }

    @Test
    public void testTetheringApnExisting() {
        assertThat(mDataProfileManagerUT.isTetheringDataProfileExisting(