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

Commit eb8db06e authored by Treehugger Robot's avatar Treehugger Robot Committed by Automerger Merge Worker
Browse files

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

Merge "Adopt the last data profile that works for internet as preferred" am: d1b3d3c6 am: 70882b06 am: 7be454dd

Original change: https://android-review.googlesource.com/c/platform/frameworks/opt/telephony/+/2210097



Change-Id: Ib10cd6ae25eff9702c17d86e8b622e60865db5a5
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 2e4b1e47 7be454dd
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);