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

Commit 72e7a6be authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Adopt the last data profile that works for internet as preferred"

parents f4d76e75 7210d91c
Loading
Loading
Loading
Loading
+19 −3
Original line number Diff line number Diff line
@@ -106,6 +106,9 @@ public class DataProfileManager extends Handler {
    /** The preferred data profile used for internet. */
    private @Nullable DataProfile mPreferredDataProfile = null;

    /** The last data profile that's successful for internet connection. */
    private @Nullable DataProfile mLastInternetDataProfile = null;

    /** Preferred data profile set id. */
    private int mPreferredDataProfileSetId = Telephony.Carriers.NO_APN_SET_ID;

@@ -166,7 +169,12 @@ public class DataProfileManager extends Handler {
                    public void onInternetDataNetworkConnected(
                            @NonNull List<DataProfile> dataProfiles) {
                        DataProfileManager.this.onInternetDataNetworkConnected(dataProfiles);
                    }});
                    }
                    @Override
                    public void onInternetDataNetworkDisconnected() {
                        DataProfileManager.this.onInternetDataNetworkDisconnected();
                    }
                });
        mDataConfigManager.registerCallback(new DataConfigManagerCallback(this::post) {
            @Override
            public void onCarrierConfigChanged() {
@@ -410,11 +418,19 @@ public class DataProfileManager extends Handler {
        DataProfile dataProfile = dataProfiles.stream()
                .max(Comparator.comparingLong(DataProfile::getLastSetupTimestamp).reversed())
                .orElse(null);
        mLastInternetDataProfile = dataProfile;
        // Save the preferred data profile into database.
        setPreferredDataProfile(dataProfile);
        updateDataProfiles(ONLY_UPDATE_IA_IF_CHANGED);
    }

    /**
     * Called when internet data is disconnected.
     */
    private void onInternetDataNetworkDisconnected() {
        mLastInternetDataProfile = null;
    }

    /**
     * Get the preferred data profile for internet data.
     *
@@ -498,12 +514,12 @@ public class DataProfileManager extends Handler {
                    setPreferredDataProfile(preferredDataProfile);
                } else {
                    preferredDataProfile = mAllDataProfiles.stream()
                            .filter(dp -> areDataProfileSharingApn(dp, mPreferredDataProfile))
                            .filter(dp -> areDataProfileSharingApn(dp, mLastInternetDataProfile))
                            .findFirst()
                            .orElse(null);
                    if (preferredDataProfile != null) {
                        log("updatePreferredDataProfile: preferredDB is empty and no carrier "
                                + "default configured, setting preferred to be prev preferred DP.");
                                + "default configured, setting preferred to be prev internet DP.");
                        setPreferredDataProfile(preferredDataProfile);
                    }
                }
+13 −1
Original line number Diff line number Diff line
@@ -938,10 +938,22 @@ public class DataProfileManagerTest extends TelephonyTest {
        mDataProfileManagerUT.obtainMessage(2 /*EVENT_APN_DATABASE_CHANGED*/).sendToTarget();
        processAllMessages();

        // preferred APN should set to be the prev preferred
        // preferred APN should set to be the last data profile that succeeded for internet setup
        assertThat(mDataProfileManagerUT.isAnyPreferredDataProfileExisting()).isTrue();
        assertThat(mDataProfileManagerUT.isDataProfilePreferred(dataProfile)).isTrue();

        // no active internet, expect no preferred APN after reset
        mDataNetworkControllerCallback.onInternetDataNetworkDisconnected();
        mPreferredApnId = -1;
        mDataProfileManagerUT.obtainMessage(2 /*EVENT_APN_DATABASE_CHANGED*/).sendToTarget();
        processAllMessages();

        assertThat(mDataProfileManagerUT.isAnyPreferredDataProfileExisting()).isFalse();
        assertThat(mDataProfileManagerUT.isDataProfilePreferred(dataProfile)).isFalse();

        // setup internet again
        mDataNetworkControllerCallback.onInternetDataNetworkConnected(List.of(dataProfile));
        processAllMessages();
        //APN reset and removed GENERAL_PURPOSE_APN(as if user created) from APN DB
        mPreferredApnId = -1;
        mApnSettingContentProvider.removeApnByApnId(1);