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

Commit b7618187 authored by Jack Yu's avatar Jack Yu Committed by Gerrit Code Review
Browse files

Merge "Optimized release network requests"

parents 5ad1c1ca 715eaea8
Loading
Loading
Loading
Loading
+9 −10
Original line number Original line Diff line number Diff line
@@ -32,6 +32,7 @@ import com.android.internal.telephony.Phone;
import com.android.internal.telephony.PhoneSwitcher;
import com.android.internal.telephony.PhoneSwitcher;
import com.android.internal.telephony.SubscriptionController;
import com.android.internal.telephony.SubscriptionController;
import com.android.internal.telephony.SubscriptionMonitor;
import com.android.internal.telephony.SubscriptionMonitor;
import com.android.internal.telephony.dataconnection.DcTracker.ReleaseNetworkType;
import com.android.internal.util.IndentingPrintWriter;
import com.android.internal.util.IndentingPrintWriter;


import java.io.FileDescriptor;
import java.io.FileDescriptor;
@@ -165,18 +166,17 @@ public class TelephonyNetworkFactory extends NetworkFactory {
        }
        }
    }
    }


    private void releaseNetworkInternal(NetworkRequest networkRequest, boolean cleanUpOnRelease) {
    private void releaseNetworkInternal(NetworkRequest networkRequest,
                                        @ReleaseNetworkType int releaseType) {
        int transportType = getTransportTypeFromNetworkRequest(networkRequest);
        int transportType = getTransportTypeFromNetworkRequest(networkRequest);
        if (mPhone.getDcTracker(transportType) != null) {
        if (mPhone.getDcTracker(transportType) != null) {
            // TODO: Handover logic will be added later. For now always normal or detach request.
            // TODO: Handover logic will be added later. For now always normal or detach request.
            mPhone.getDcTracker(transportType).releaseNetwork(networkRequest,
            mPhone.getDcTracker(transportType).releaseNetwork(networkRequest, releaseType,
                    cleanUpOnRelease ? DcTracker.RELEASE_TYPE_DETACH
                    mLocalLog);
                            : DcTracker.RELEASE_TYPE_NORMAL, mLocalLog);
        }
        }
    }
    }


    private void applyRequestsOnActivePhoneSwitch(NetworkRequest networkRequest,
    private void applyRequestsOnActivePhoneSwitch(NetworkRequest networkRequest, int action) {
            boolean cleanUpOnRelease, int action) {
        if (action == ACTION_NO_OP) return;
        if (action == ACTION_NO_OP) return;


        String logStr = "onActivePhoneSwitch: " + ((action == ACTION_REQUEST)
        String logStr = "onActivePhoneSwitch: " + ((action == ACTION_REQUEST)
@@ -185,7 +185,7 @@ public class TelephonyNetworkFactory extends NetworkFactory {
        if (action == ACTION_REQUEST) {
        if (action == ACTION_REQUEST) {
            requestNetworkInternal(networkRequest);
            requestNetworkInternal(networkRequest);
        } else if (action == ACTION_RELEASE) {
        } else if (action == ACTION_RELEASE) {
            releaseNetworkInternal(networkRequest, cleanUpOnRelease);
            releaseNetworkInternal(networkRequest, DcTracker.RELEASE_TYPE_DETACH);
        }
        }
    }
    }


@@ -208,8 +208,7 @@ public class TelephonyNetworkFactory extends NetworkFactory {
            boolean shouldApply = mPhoneSwitcher.shouldApplyNetworkRequest(
            boolean shouldApply = mPhoneSwitcher.shouldApplyNetworkRequest(
                    networkRequest, mPhone.getPhoneId());
                    networkRequest, mPhone.getPhoneId());


            applyRequestsOnActivePhoneSwitch(networkRequest, true,
            applyRequestsOnActivePhoneSwitch(networkRequest, getAction(applied, shouldApply));
                    getAction(applied, shouldApply));
            mNetworkRequests.put(networkRequest, shouldApply);
            mNetworkRequests.put(networkRequest, shouldApply);
        }
        }
    }
    }
@@ -267,7 +266,7 @@ public class TelephonyNetworkFactory extends NetworkFactory {
        mLocalLog.log(s);
        mLocalLog.log(s);


        if (applied) {
        if (applied) {
            releaseNetworkInternal(networkRequest, false);
            releaseNetworkInternal(networkRequest, DcTracker.RELEASE_TYPE_NORMAL);
        }
        }
    }
    }