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

Commit 7a615392 authored by Jack Yu's avatar Jack Yu
Browse files

Replaced DcRequest with TelephonyNetworkRequest

DcRequest should be replaced by TelephonyNetworkRequest,
which also supports priority. This is the preliminary
step before removing com.android.internal.telephony.dataconnection.

Bug: 196597630
Test: atest FrameworksTelephonyTests
Change-Id: Id94556178ce18d003e312b9e16e1cbaee83f7d97
parent e64909ce
Loading
Loading
Loading
Loading
+58 −12
Original line number Diff line number Diff line
@@ -82,6 +82,7 @@ import com.android.internal.telephony.RadioConfig;
import com.android.internal.telephony.SubscriptionController;
import com.android.internal.telephony.SubscriptionController.WatchedInt;
import com.android.internal.telephony.TelephonyIntents;
import com.android.internal.telephony.data.DataNetworkController.NetworkRequestList;
import com.android.internal.telephony.data.DataSettingsManager.DataSettingsManagerCallback;
import com.android.internal.telephony.dataconnection.ApnConfigTypeRepository;
import com.android.internal.telephony.dataconnection.DcRequest;
@@ -183,6 +184,7 @@ public class PhoneSwitcher extends Handler {
    }

    protected final List<DcRequest> mPrioritizedDcRequests = new ArrayList<>();
    private final @NonNull NetworkRequestList mNetworkRequestList = new NetworkRequestList();
    protected final RegistrantList mActivePhoneRegistrants;
    protected final SubscriptionController mSubscriptionController;
    protected final Context mContext;
@@ -930,6 +932,15 @@ public class PhoneSwitcher extends Handler {
    }

    private void onRequestNetwork(NetworkRequest networkRequest) {
        if (PhoneFactory.getDefaultPhone().isUsingNewDataStack()) {
            TelephonyNetworkRequest telephonyNetworkRequest = new TelephonyNetworkRequest(
                    networkRequest, PhoneFactory.getDefaultPhone());
            if (!mNetworkRequestList.contains(telephonyNetworkRequest)) {
                mNetworkRequestList.add(telephonyNetworkRequest);
                onEvaluate(REQUESTS_CHANGED, "netRequest");
            }
            return;
        }
        final DcRequest dcRequest =
                DcRequest.create(networkRequest, createApnRepository(networkRequest));
        if (dcRequest != null) {
@@ -944,6 +955,15 @@ public class PhoneSwitcher extends Handler {
    }

    private void onReleaseNetwork(NetworkRequest networkRequest) {
        if (PhoneFactory.getDefaultPhone().isUsingNewDataStack()) {
            TelephonyNetworkRequest telephonyNetworkRequest = new TelephonyNetworkRequest(
                    networkRequest, PhoneFactory.getDefaultPhone());
            if (mNetworkRequestList.remove(telephonyNetworkRequest)) {
                onEvaluate(REQUESTS_CHANGED, "netReleased");
                collectReleaseNetworkMetrics(networkRequest);
            }
            return;
        }
        final DcRequest dcRequest =
                DcRequest.create(networkRequest, createApnRepository(networkRequest));
        if (dcRequest != null) {
@@ -1118,6 +1138,15 @@ public class PhoneSwitcher extends Handler {
                    }

                    if (newActivePhones.size() < mMaxDataAttachModemCount) {
                        if (PhoneFactory.getDefaultPhone().isUsingNewDataStack()) {
                            for (TelephonyNetworkRequest networkRequest : mNetworkRequestList) {
                                int phoneIdForRequest = phoneIdForRequest(networkRequest);
                                if (phoneIdForRequest == INVALID_PHONE_INDEX) continue;
                                if (newActivePhones.contains(phoneIdForRequest)) continue;
                                newActivePhones.add(phoneIdForRequest);
                                if (newActivePhones.size() >= mMaxDataAttachModemCount) break;
                            }
                        } else {
                            for (DcRequest dcRequest : mPrioritizedDcRequests) {
                                int phoneIdForRequest = phoneIdForRequest(dcRequest.networkRequest);
                                if (phoneIdForRequest == INVALID_PHONE_INDEX) continue;
@@ -1126,6 +1155,7 @@ public class PhoneSwitcher extends Handler {
                                if (newActivePhones.size() >= mMaxDataAttachModemCount) break;
                            }
                        }
                    }

                    if (newActivePhones.size() < mMaxDataAttachModemCount
                            && newActivePhones.contains(mPreferredDataPhoneId)
@@ -1252,6 +1282,12 @@ public class PhoneSwitcher extends Handler {
        }
    }

    // Merge phoneIdForRequest(NetworkRequest netRequest) after Phone.isUsingNewDataStack() is
    // cleaned up.
    private int phoneIdForRequest(TelephonyNetworkRequest networkRequest) {
        return phoneIdForRequest(networkRequest.getNativeNetworkRequest());
    }

    private int phoneIdForRequest(NetworkRequest netRequest) {
        int subId = getSubIdFromNetworkSpecifier(netRequest.getNetworkSpecifier());

@@ -1721,6 +1757,15 @@ public class PhoneSwitcher extends Handler {
                mSubscriptionController.getDefaultDataSubId());
        if (ddsPhoneId != INVALID_PHONE_INDEX && ddsPhoneId == phoneId) {
            return true;
        } else {
            if (PhoneFactory.getDefaultPhone().isUsingNewDataStack()) {
                if (mNetworkRequestList.isEmpty()) return false;
                for (TelephonyNetworkRequest networkRequest : mNetworkRequestList) {
                    phoneIdForRequest = phoneIdForRequest(networkRequest);
                    if (phoneIdForRequest == phoneId) {
                        return true;
                    }
                }
            } else {
                if (mPrioritizedDcRequests.size() == 0) {
                    return false;
@@ -1734,6 +1779,7 @@ public class PhoneSwitcher extends Handler {
                    }
                }
            }
        }
        return false;
    }
}