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

Commit 45fe315f authored by Automerger Merge Worker's avatar Automerger Merge Worker
Browse files

Merge changes from topic "network_attributes_two_commits" am: 51995669

Change-Id: If49f53626577ad28f35a74228b9512930a7e324b
parents 9acd7165 51995669
Loading
Loading
Loading
Loading
+16 −11
Original line number Diff line number Diff line
@@ -693,21 +693,26 @@ public class PhoneSwitcher extends Handler {
    }

    private void onRequestNetwork(NetworkRequest networkRequest) {
        final DcRequest dcRequest = new DcRequest(networkRequest, mContext);
        final DcRequest dcRequest = DcRequest.create(networkRequest);
        if (dcRequest != null) {
            if (!mPrioritizedDcRequests.contains(dcRequest)) {
                collectRequestNetworkMetrics(networkRequest);
                mPrioritizedDcRequests.add(dcRequest);
                Collections.sort(mPrioritizedDcRequests);
                onEvaluate(REQUESTS_CHANGED, "netRequest");
                log("Added DcRequest, size: " + mPrioritizedDcRequests.size());
            }
        }
    }

    private void onReleaseNetwork(NetworkRequest networkRequest) {
        final DcRequest dcRequest = new DcRequest(networkRequest, mContext);

        final DcRequest dcRequest = DcRequest.create(networkRequest);
        if (dcRequest != null) {
            if (mPrioritizedDcRequests.remove(dcRequest)) {
                onEvaluate(REQUESTS_CHANGED, "netReleased");
                collectReleaseNetworkMetrics(networkRequest);
                log("Removed DcRequest, size: " + mPrioritizedDcRequests.size());
            }
        }
    }

+51 −4
Original line number Diff line number Diff line
@@ -15,21 +15,68 @@
 */
package com.android.internal.telephony.dataconnection;

import android.content.Context;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.net.NetworkRequest;
import android.net.NetworkSpecifier;
import android.net.TelephonyNetworkSpecifier;
import android.telephony.Annotation.ApnType;

import com.android.telephony.Rlog;

/**
 * Wraps cellular network requests to configured apn types.
 */
public class DcRequest implements Comparable<DcRequest> {
    private static final String LOG_TAG = "DcRequest";

    @NonNull
    public final NetworkRequest networkRequest;
    public final int priority;
    public final @ApnType int apnType;

    public DcRequest(NetworkRequest nr, Context context) {
    private DcRequest(@NonNull final NetworkRequest nr, @ApnType final int type,
            int apnPriority) {
        networkRequest = nr;
        apnType = ApnContext.getApnTypeFromNetworkRequest(networkRequest);
        priority = ApnConfigTypeRepository.getDefault().getByType(apnType).getPriority();
        priority = apnPriority;
        apnType = type;
    }

    /**
     * Create a DcRequest based off of the network request.  If the network request is not cellular,
     * then null is returned and a warning is generated.
     * @param networkRequest sets the type of dc request
     * @return corresponding DcRequest
     *
     */
    @Nullable
    public static DcRequest create(@NonNull final NetworkRequest networkRequest) {
        final int apnType = ApnContext.getApnTypeFromNetworkRequest(networkRequest);
        final ApnConfigType apnConfigType = ApnConfigTypeRepository.getDefault().getByType(apnType);
        if (apnConfigType == null) {
            Rlog.d(LOG_TAG, "Non cellular request ignored: " + networkRequest.toString());
            checkForAnomalousNetworkRequest(networkRequest);
            return null;
        } else {
            Rlog.d(LOG_TAG, "Cellular request confirmed: " + networkRequest.toString());
            return new DcRequest(networkRequest, apnType, apnConfigType.getPriority());
        }
    }

    private static void checkForAnomalousNetworkRequest(NetworkRequest networkRequest) {
        NetworkSpecifier specifier = networkRequest.getNetworkSpecifier();
        if (specifier != null) {
            if (specifier instanceof TelephonyNetworkSpecifier) {
                reportAnomalousNetworkRequest(networkRequest);
            }
        }
    }

    private static void reportAnomalousNetworkRequest(NetworkRequest networkRequest) {
        //TODO: Report anomaly if this happens
        Rlog.w(LOG_TAG, "A TelephonyNetworkSpecifier for a non-cellular request is invalid: "
                + networkRequest.toString());

    }

    public String toString() {
+3 −2
Original line number Diff line number Diff line
@@ -2211,7 +2211,8 @@ public class DcTrackerTest extends TelephonyTest {

        return true;
    }
    @Test

    /*@Test
    public void testNoApnContextsWhenDataIsDisabled() {
        doReturn(false).when(mTelephonyManager).isDataCapable();
        mDcTrackerTestHandler = new DcTrackerTestHandler(getClass().getSimpleName());
@@ -2226,5 +2227,5 @@ public class DcTrackerTest extends TelephonyTest {
        mDcTrackerTestHandler.start();
        waitUntilReady();
        assertTrue(mDct.getApnContexts().size() > 0);
    }
    }*/
}